рдЦреИрд░ рдХрдВрдХрдбрд╝ рдЗрдВрддрдЬрд╛рд░

рдЫрд╡рд┐
рдореБрдЭреЗ рдПрдХ рдФрд░ рд╕реНрдорд╛рд░реНрдЯ рдШрдбрд╝реА рдорд┐рд▓реАред рдХрдВрдХрдбрд╝ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмрд┐рдирд╛ рдЧреИрдЬреЗрдЯ рдХреЗ рд╕рд╛рдереА рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЛ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдореЗрд░реЗ рд╣рд╛рде рдЕрднреА рднреА Google рдФрд░ рд╕реЛрдиреА рд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рдШрдбрд╝реА рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдПрдХ рджрд╛рдиреЗ рдФрд░ рдЙрджрд╛рд╕реА рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реЛрдиреА рд╕реНрдорд╛рд░реНрдЯрд╡реЙрдЪ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдЕрджреНрднреБрдд рдерд╛ред

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╢рд╛рдо рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмрд╛рдПрдВ рд╣рд╛рде рдкрд░ рдХрдВрдХрдбрд╝ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВред рдорд╛рдЙрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рджрд╛рд╣рд┐рдирд╛ рд╣рд╛рде рд╣реИред рдШрдбрд╝реА рдХрд╖реНрдЯрдкреНрд░рдж рдирд╣реАрдВ рдереАред рдореИрдВ рдирд╛рд░рд╛рдЬ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдбрд╝реА рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рджрд░рд╡рд╛рдЬреЗ рдХреЗ рдкреАрдЫреЗ рдПрдХ рдЦрдЬрд╛рдирд╛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдореВрд░реНрдЦреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдПрд╕рдбреАрдХреЗред рдпрд╣реА рд╣реИ, рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВред рдкреБрд░рд╛рдиреЗ рдЬрдорд╛рдиреЗ рдХреА рд╕реА рднрд╛рд╖рд╛ рдФрд░ рдмреНрд▓реИрдХ рдПрдВрдб рд╡реНрд╣рд╛рдЗрдЯ рд╕реНрдХреНрд░реАрди - рдХреНрдпрд╛ рдпрд╣ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рд╣реИ? рдХреЛрдИ рдШреГрдгрд┐рдд REST, рдкреИрдЯрд░реНрди, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдпрд╛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВред 30 рд╕рд╛рд▓ рд╕реЗ рдХрдо рдЙрдореНрд░ рдХреЗ, рдореИрдВрдиреЗ рддреАрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдП рдФрд░ рдЕрджрд░рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдкреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдореАрдХреНрд╖рд╛ рд▓рд┐рдЦреАред

рдмрдЯрди рдХреЗ рдиреАрдЪреЗ 7 рдЪрд┐рддреНрд░, рдХреЛрдб рдХреЗ 7 рдЯреБрдХрдбрд╝реЗ, 7 рд▓рд┐рдВрдХ рдФрд░ 7 рдЦрд░рд╛рдм рдпреБрдХреНрддрд┐рдпрд╛рдВ рд╣реИрдВред


1. рдШрдбрд╝реА рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ


IPhone рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдШрдбрд╝реА рдХреЛ рд╕рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдРрдкрд╕реНрдЯреЛрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреЗрдмрд▓ рдРрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЫрд╡рд┐
рдЖрд╡реЗрджрди рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдЦрд╛рдореА рд╣реИ - рдЖрдИрдкреИрдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореБрдлреНрдд рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИред рдиреБрдХрд╕рд╛рди $ 3 рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдШрдбрд╝реА рдХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдирд╡реАрдирддрдо рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдШрдбрд╝реА рдкрд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред

2. рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?


рдХрдВрдХрдбрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднреВрддрдкреВрд░реНрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдорд╛рд╣реМрд▓ рд╣реИред рдСрдирд▓рд╛рдЗрди рд╡рд┐рдХрд╛рд╕ рдПрдХ рдЪрдорддреНрдХрд╛рд░ рд╣реИред рдЖрдкрдХреЛ рдЖрдИрдЯреА рд╡рд┐рднрд╛рдЧ рд╕реЗ рдЯрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди , рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдХреЙрд▓ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЫрд╡рд┐

рдмрд╕ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВ, рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╡рд╣ рд╕рдм рд╣реИ! рдЖрдк рдХрдВрдХрдбрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВред рддреАрди рджрд╛рдИрдВ рдУрд░ рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рдмрд╛рдИрдВ рдУрд░ рдмрд┐рдЯрдореИрдк , рдкрд╛рда, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА рднрд╛рд╖рд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 3.0 рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕рдореЗрдВ рдХрдВрдкрди рдФрд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред рдХреЛрдИ рдЖрд╡рд╛рдЬ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЪреБрдкреНрдкреА рдкрд╕рдВрдж рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рд╡рд┐рдХрд▓реНрдк рдЫреЛрдЯрд╛ рд╣реИред
рдХрдВрдХрдбрд╝ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШрдбрд╝рд┐рдпрд╛рдБ (рд╡реЙрдЪрдлреЗрд╕) рдФрд░ рдПрдкреНрд▓реАрдХреЗрд╢рди (рд╡рд╛рдЯреНрд╕рдПрдк) рдореИрдВрдиреЗ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред
рдШрдбрд╝реА рдХреЗ рд▓рд┐рдП рджреЛ рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг (рд╕рд╛рде рд╣реА рдПрд╕рдбреАрдХреЗ рд╕рдВрд╕реНрдХрд░рдг) рд╣реИрдВред 1. x рдФрд░ 2. xред рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЪреБрдирд╛ - рдирдП рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬрд╝ 2.0 рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ 1.x рдХреЗ рддрд╣рдд рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╢рд╛рдВрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╛рдЗрд▓ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓реЗрдВ - рдкрд╛рда рдХреЛрдб C, * .c рдФрд░ * .hред рд╕рдВрд╕рд╛рдзрди - рдкреАрдПрдирдЬреА рдмрд┐рдЯрдореИрдк рдЪрд┐рддреНрд░ рдФрд░ рдлреЛрдВрдЯред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдХрдВрдХрдбрд╝ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдкрдХреЛ рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдХрдВрдХрдбрд╝ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ - рдЖрдк рдЗрд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж рд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓рдЧрднрдЧ 50 рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ рд╡реЗ рдЕрджреНрднреБрдд рд╣реИрдВред

3. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдШрдбрд╝реА рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рдШрдбрд╝реА рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП, рдЖрдИрдлреЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдШрдбрд╝реА рдореЗрдВ рддреАрди рдХреНрд▓рд┐рдХ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рд╕рдлрд╛рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЗ iPhone / iPad рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг cloudpebble.net рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред

рдЫрд╡рд┐


рдХрдВрдХрдбрд╝ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп PBW рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕реНрдЯреЛрд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

4. рдЦреЗрд▓ рдХрд╛ рд╡рд┐рдХрд╛рд╕


рдХрдВрдХрдбрд╝ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШрдбрд╝рд┐рдпрд╛рдБ (рд╡реЙрдЪрдлреЗрд╕) рдФрд░ рдПрдкреНрд▓реАрдХреЗрд╢рди (рд╡рд╛рдЯреНрд╕рдПрдк)ред
рдЧреЗрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рд╕реНрдХреНрд░реАрди рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдмрдЯрди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗред рдШрдбрд╝реА рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рддреАрди рдмрдЯрди рдФрд░ рдмрд╛рдИрдВ рдУрд░ 1 рдмрдЯрди рд╣реЛрддрд╛ рд╣реИред
рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ 168 рдЕрдВрдХреЛрдВ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ 144 рд╣реИ, рд▓реЗрдХрд┐рди рдКрдкрд░реА рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рд╣рдЯрд╛рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ 16 рдЕрдВрдХреЛрдВ рдХреА рдЬрдЧрд╣ рд╕реЗ 144 рдЪреЛрд░реА рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдХрдИ рдЧреЗрдо рдмрдирд╛рдПред рдЯреЗрдЯреНрд░рд┐рд╕ рддреАрди рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред рдореИрдВрдиреЗ рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди 90 рдбрд┐рдЧреНрд░реА рдХрд░ рджрд┐рдпрд╛, рдЕрдиреНрдпрдерд╛ рдЦреЗрд▓ рдкреАрдбрд╝рд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЯреЗрдЯреНрд░рд┐рд╕ рдФрд░ рдЕрд░реНрдХрд╛рдиреЙрдЗрдб рдкрдХрдбрд╝ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВред рдРрд╕реА рд╕реНрдХреНрд░реАрди рдкрд░, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЦреИрд░, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ред рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдмрд╛рдд рд╣реИред

5. рд╡рд┐рдХрд╛рд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рдЧреЗрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдмрд▓ рдХреЗ рддрд╣рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рд░ рдХреЛ рдЪрдмрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЦреИрд░, рд░реБрдХреЛ ред
рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдХреНрдпреЛрдВ? рдореИрдВрдиреЗ рдкреВрд░реЗ рдкрд╛рда рдХреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдЪреАрд░ рдбрд╛рд▓рд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдореЗрдВ рджреЛ рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЦрд░рд╛рдм рдХреЛрдб рдХреЛ рдорд╛рдл рдХрд░ рджреЗрдВред рдЧрддрд┐ рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдореБрдЭреЗ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рд╣рд╛рдБ рдпрд╣ main.c.

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╛рда
#include "pebble.h" static int egg_status[8]; static int egg_ticks[8]; static int egg_places[]= { 4, 0, 0, 0, 0, 2, 5, 0, 0, 0, 2, 4, 6, 0, 0, 1, 3, 4, 6, 0, 1, 2, 4, 5, 6, 0 }; static int level = 0; static int levelFlag = 0; static int egg_pos[]= { -2, 72, 0, 75, 4, 78, 9, 83, 14, 88, 20, 94, 0, 0, -2, 22, 0, 25, 4, 28, 9, 33, 14, 38, 21, 44, 0, 0, 137, 30, 134, 34, 130, 38, 127, 43, 121, 48, 114, 54, 0, 0, 137, 83, 134, 86, 131, 89, 127, 94, 121, 99, 114, 104, 0, 0 }; static int current_pos = 1; static int best = 25; static AppTimer *timer; static Window *window; static Layer *layer; // We will use a bitmap to composite with a large circle static GBitmap *image_1; static GBitmap *image_2; static GBitmap *image_3; static GBitmap *image_4; static GBitmap *image_5; static GBitmap *image_7; static GBitmap *image_8; static GBitmap *image_6; static GBitmap *image_0; static int ticks = 0; static int score = 0; static int failed = 0; static int egg_failed = 0; char *itoa(int num); static const VibePattern broken_egg_pattern = { .durations = (uint32_t []) {50, 50, 50}, .num_segments = 3 }; static const VibePattern game_over_pattern = { .durations = (uint32_t []) {300, 100, 300}, .num_segments = 3 }; static void timer_callback(void *context) { if (failed<3) { levelFlag = 0; egg_failed = 0; for (int i=0; i<8; i++) if (egg_status[i]>0) { egg_ticks[i]++; if (egg_ticks[i]==6) { int k = egg_status[i]; if (k==current_pos) { score++; } else { egg_failed = k; ++failed; int game_over = failed == 3; //TODO: endgame screen if (game_over) { vibes_enqueue_custom_pattern(game_over_pattern); } else { vibes_enqueue_custom_pattern(broken_egg_pattern); } } egg_ticks[i] = 0; egg_status[i] = 0; } } int lev = 1; if (score>10) lev = 2; if (score>10*3) lev = 3; if (score>10*10) lev = 4; if (lev!=level) { level = lev; levelFlag = 1; vibes_enqueue_custom_pattern(broken_egg_pattern); } for (int i =0; i<level; i++) { int k = egg_places[i+(level-1)*5]; int j = ticks%8; if (k==j) { egg_ticks[i] = 0; egg_status[i] = 1 + rand()%4; } } if (levelFlag) { ticks=0; for (int i =0; i<8; i++) { egg_status[i] = 0; egg_ticks[i] = 0; } } else { ticks++; } } layer_mark_dirty(layer); const uint32_t timeout_ms = 500; timer = app_timer_register(timeout_ms, timer_callback, NULL); } // This is a layer update callback where compositing will take place static void layer_update_callback(Layer *layer, GContext* ctx) { char title[20]; GRect bounds = layer_get_frame(layer); GRect destination = image_1->bounds; destination.origin.x = (bounds.size.w-destination.size.w)/2; destination.origin.y = 30; if (failed<3) { if (levelFlag) { snprintf(title, 20, "\nLevel \n%d", level); // Display the name of the current compositing operation graphics_context_set_text_color(ctx, GColorBlack); graphics_draw_text(ctx, title, fonts_get_system_font(FONT_KEY_GOTHIC_28_BOLD), bounds, GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, NULL); } else { snprintf(title, 20, "%d/%d", score, best); // Display the name of the current compositing operation graphics_context_set_text_color(ctx, GColorBlack); graphics_draw_text(ctx, title, fonts_get_system_font(FONT_KEY_GOTHIC_24_BOLD), bounds, GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, NULL); // strcpy(title, "Lev "); // strcat(title, itoa(level)); // Draw the large circle the image will composite with // graphics_context_set_fill_color(ctx, GColorBlack); // graphics_fill_circle(ctx, GPoint(bounds.size.w/2, bounds.size.h+110), 180); // Use the image size to help center the image // Center horizontally using the window frame size // Set the current compositing operation // This will only cause bitmaps to composite // Draw the bitmap; it will use current compositing operation set if (current_pos==1) graphics_draw_bitmap_in_rect(ctx, image_1, destination); if (current_pos==2) graphics_draw_bitmap_in_rect(ctx, image_2, destination); if (current_pos==3) graphics_draw_bitmap_in_rect(ctx, image_3, destination); if (current_pos==4) graphics_draw_bitmap_in_rect(ctx, image_4, destination); GRect ground = image_0->bounds; ground.origin.x = (bounds.size.w-ground.size.w)/2; ground.origin.y = 30; graphics_context_set_compositing_mode(ctx, GCompOpAnd); graphics_draw_bitmap_in_rect(ctx, image_0, ground); for (int i=0; i<8; i++) if (egg_status[i]>0) { int img= egg_ticks[i]%2; int k = (egg_ticks[i]+(egg_status[i]-1)*7) *2; int x = egg_pos[k]; int y = egg_pos[k+1]; GRect egg_destination = image_5->bounds; egg_destination.origin.x = x; egg_destination.origin.y = y; graphics_draw_bitmap_in_rect(ctx, (img) ? image_5 : image_7, egg_destination); } if (egg_failed) { GRect egg_destination = image_6->bounds; egg_destination.origin.x = egg_failed < 3 ? 10 : 101; egg_destination.origin.y = 130; graphics_draw_bitmap_in_rect(ctx, image_6, egg_destination); } } } else { if (score>best) best = score; snprintf(title, 20, "\nLast %d\nBest %d", score, best); // Display the name of the current compositing operation graphics_context_set_text_color(ctx, GColorBlack); graphics_draw_text(ctx, title, fonts_get_system_font(FONT_KEY_GOTHIC_28_BOLD), bounds, GTextOverflowModeTrailingEllipsis, GTextAlignmentCenter, NULL); GRect egg_destination = image_6->bounds; egg_destination.origin.y = 130; egg_destination.origin.x = 10; graphics_draw_bitmap_in_rect(ctx, image_6, egg_destination); egg_destination.origin.x = 56; graphics_draw_bitmap_in_rect(ctx, image_6, egg_destination); egg_destination.origin.x = 101; graphics_draw_bitmap_in_rect(ctx, image_6, egg_destination); } } static void select_click_handler(ClickRecognizerRef recognizer, void *context) { if (failed==3) { level = 0; score = 0; for (int i =0; i<8; i++) { egg_status[i] = 0; egg_ticks[i] = 0; } failed = 0; } layer_mark_dirty(layer); } static void up_click_handler(ClickRecognizerRef recognizer, void *context) { current_pos--; if (current_pos<1) current_pos = 4; layer_mark_dirty(layer); } static void down_click_handler(ClickRecognizerRef recognizer, void *context) { current_pos++; if (current_pos>4) current_pos = 1; layer_mark_dirty(layer); } static void config_provider(void *context) { window_single_click_subscribe(BUTTON_ID_UP, up_click_handler); window_single_click_subscribe(BUTTON_ID_DOWN, down_click_handler); window_single_click_subscribe(BUTTON_ID_SELECT, select_click_handler); } int main(void) { time_t t = 0; uint16_t t_ms = 0; time_ms(&t, &t_ms); srand(t * 1000 + t_ms); // Then use the respective resource loader to obtain the resource for use // In this case, we load the image image_1 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_WOLF_1); image_2 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_WOLF_2); image_3 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_WOLF_3); image_4 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_WOLF_4); image_5 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_EGG_1); image_6 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_EGG_0); image_7 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_EGG_2); image_8 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_EGG_3); image_0 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_GROUND); window = window_create(); window_stack_push(window, true /* Animated */); window_set_click_config_provider(window, config_provider); // Initialize the layer Layer *window_layer = window_get_root_layer(window); GRect bounds = layer_get_frame(window_layer); layer = layer_create(bounds); // Set up the update layer callback layer_set_update_proc(layer, layer_update_callback); // Add the layer to the window for display layer_add_child(window_layer, layer); const uint32_t timeout_ms = 500; timer = app_timer_register(timeout_ms, timer_callback, NULL); for (int i =0; i<8; i++) { egg_status[i] = 0; egg_ticks[i] = 0; } // Enter the main loop app_event_loop(); // Cleanup the image gbitmap_destroy(image_1); gbitmap_destroy(image_2); gbitmap_destroy(image_3); gbitmap_destroy(image_4); gbitmap_destroy(image_5); gbitmap_destroy(image_6); gbitmap_destroy(image_7); gbitmap_destroy(image_0); gbitmap_destroy(image_8); layer_destroy(layer); window_destroy(window); } 



рдореИрдВ рдереЛрдбрд╝рд╛ рдХрдореЗрдВрдЯ рдХрд░реВрдВрдЧрд╛ред
 #include "pebble.h" int main(void) { // Then use the respective resource loader to obtain the resource for use // In this case, we load the image image_1 = gbitmap_create_with_resource(RESOURCE_ID_IMAGE_WOLF_1); window = window_create(); window_stack_push(window, true /* Animated */); // Initialize the layer Layer *window_layer = window_get_root_layer(window); GRect bounds = layer_get_frame(window_layer); layer = layer_create(bounds); // Set up the update layer callback layer_set_update_proc(layer, layer_update_callback); // Add the layer to the window for display layer_add_child(window_layer, layer); // Enter the main loop app_event_loop(); // Cleanup the image gbitmap_destroy(image_1); layer_destroy(layer); window_destroy(window); } 

рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдмрд┐рдЯрдореИрдк рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рд╕реНрдкрд┐рди рдХрд░рддреЗ рд╣реИрдВ
 app_event_loop(); 

рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ 3.1 рдореЗрдВред
рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдХреЗ рдмрд╛рдж, рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЛ рдореБрдХреНрдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред
рд╡рд╣ рд╕рдм рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реИрдВрдб () рд╕рд╣рд┐рдд igrodelov рдХреЗ рд▓рд┐рдП рд╕рднреА рдорд╛рдирдХ рдХрд╛рд░реНрдп;

6. рдШрдбрд╝реА рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ



рд░реВрд╕реА рдлреЛрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдорд┐рдереЛрд▓ рдкреВрдЫрддрд╛ рд╣реИ?
рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдВрджрд╛ рд╣реИрдХ рд╣реИ ред рдореИрдВрдиреЗ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреАред

7. рдПрдкреНрд▓реАрдХреЗрд╢рди рд╕реНрдЯреЛрд░


рд╕рд╛рдЗрдЯ рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рдЖрд╡реЗрджрди рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред

рдЫрд╡рд┐

рдореИрдВрдиреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдПрдХ рдиреАрдВрд╡ рд░рдЦреА, рдЕрдЪрд╛рдирдХ рдпрд╣рд╛рдВ рдкрд░ рд╣реЗрдмреЗрд░рд╛ рдореЗрдВ рдЕрджреНрднреБрдд рдХрдВрдХрдбрд╝ рдХреЗ рдорд╛рд▓рд┐рдХ рд╣реИрдВред
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкреБрдирд╢реНрдЪред рдореЗрд░реЗ рджреЛрд╕реНрдд рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рд▓рдЧрднрдЧ 200 рдЕрдВрдбреЗ рджрд┐рдПред рдФрд░ рдЬреЛ рднреА 200 рдЕрдВрдбреЗ рдЙрдард╛рдПрдЧрд╛ рд╡реЛ рджреЗрдЦреЗрдЧрд╛ ...

Source: https://habr.com/ru/post/In202164/


All Articles