20 рдорд┐рдирдЯ рдореЗрдВ HTML5 рдЧреЗрдо рд▓рд┐рдЦрдирд╛, рдпрд╛ рдлреЗрдЬрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдЪрдп

рдпрд╣ рд▓реЗрдЦ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢, рдЯреНрд░реЗрдВрдбреА рдФрд░ рдпреБрд╡рд╛ HTML5 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ рдЬреЛ рдирдП рдлреЗрдЬрд░ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреЛрдВрдЧ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рдкрд░рд┐рдЪрдп


Phaser PIXI.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк HTML5 рдЧреЗрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рд╣реИред рдпрд╣ рдХреИрдирд╡рд╕ рдФрд░ рд╡реЗрдмрдЬреАрдПрд▓, рдПрдирд┐рдореЗрдЯреЗрдб рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕, рдХрдг, рдСрдбрд┐рдпреЛ, рд╡рд┐рднрд┐рдиреНрди рдЗрдирдкреБрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рднреМрддрд┐рдХреА рдореЗрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕реНрд░реЛрдд рджреЗрдЦрдиреЗ рдФрд░ рдореБрдлреНрдд рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рд░рд┐рдЪрд░реНрдб рдбреЗрд╡реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдлреНрд▓рд┐рдХреНрд╕рд▓ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЙрдирдХреА рд╕рдХреНрд░рд┐рдп рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рд┐рдЪрд░реНрдб рдпрд╣ рдирд╣реАрдВ рдЫрд┐рдкрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдлреНрд▓рд┐рдХреНрд╕рд▓ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛, рдЗрд╕рд▓рд┐рдП рдлреЗрдЬрд░ рдХреА рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЕрдиреБрднрд╡реА рдлреНрд▓реИрд╢рд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреАред рдирдП рдЗрдВрдЬрди рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рд╡рд░реНрд╖ 13 рд╕рд┐рддрдВрдмрд░ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм рди рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреА рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдмрдХ рдирд╣реАрдВ рд╣реИрдВред рдореЗрд░реА рд╡рд┐рдирдореНрд░ рд░рд╛рдп рдореЗрдВ, рдЬрд┐рд╕реЗ рд╕рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрднреАред

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


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

рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ GitHub рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: https://github.com/photonstorm/phaser ред рдлрд┐рд▓рд╣рд╛рд▓ (13 рдЕрдХреНрдЯреВрдмрд░ 2013) рдореИрдВ рджреЗрд╡ рд╢рд╛рдЦрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореБрдЦреНрдп рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЬреЛ рд▓реЛрдЧ GitHub рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рд▓рд┐рдВрдХ рдЙрдкрд▓рдмреНрдз рд╣реИ: https://github.com/photonstorm/phaser/archive/dev.zip ред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЫреЛрдЯреЗ рд╣реИрд▓реЛ рдлреЗрдЬрд░ рдирдореВрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЗрд▓реЛрдлреИрд╕рд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ рдФрд░ рдбреЙрдХреНрд╕ / рд╣реИрд▓реЛ рдлрд╛рд▓реНрд╕ рдлреЛрд▓реНрдбрд░ рд╕реЗ рддреАрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ:

рдЫрд╡рд┐


рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдХреЙрдкреА рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде URL рдЦреЛрд▓реЗрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, http: // localhost: 8888 / hellophaser )ред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкреНрдпрд╛рд░рд╛ рдШреВрд░реНрдгрди рд▓реЛрдЧреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬреИрд╕реЗ рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ:

рдЫрд╡рд┐


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


рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рддреИрдпрд╛рд░ рдХрд░рдирд╛

рдЕрдм рдЖрдк рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдЧреЗрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЗрдЬрд░-рдкреЛрдВрдЧ рдлреЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ рдФрд░ рдмрд┐рд▓реНрдб рдлреЛрд▓реНрдбрд░ рд╕реЗ рдлреЗрдЬрд░.рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╕реЛрд░реНрд╕ рд╕реЛрд░реНрд╕ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рднреА рдмрдирд╛рдПрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЧреЗрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ index.html рдлрд╝рд╛рдЗрд▓ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдЧреЗрдо рдпрд╣рд╛рдВ рд╣реЛрдЧрд╛)ред

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

рдирддреАрдЬрддрди, рдлреЗрдЬрд░-рдкреЛрдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:

рдЫрд╡рд┐


рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рддреАрди рдЪрд┐рддреНрд░ рд╣реЛрдВрдЧреЗ:

рдЫрд╡рд┐


рдЦреЗрд▓ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдмрдирд╛рдирд╛, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛

рдЕрдВрдд рдореЗрдВ, рд╕рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред Index.html рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:

<script src="phaser.js"></script> <script type="text/javascript"> var game = new Phaser.Game(480, 640, Phaser.AUTO, '', { preload: preload, create: create, update: update }); function preload() { game.load.image('bet', 'assets/bet.png'); game.load.image('ball', 'assets/ball.png'); game.load.image('background', 'assets/starfield.jpg'); } function create() { game.add.tileSprite(0, 0, 480, 640, 'background'); } function update () { } </script> 


рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирдП рдЧреЗрдо рдХрд╛ рдкрддрд╛ рдЦреЛрд▓реЗрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ http: // localhost: 8888 / phaser-pong / ) рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдХреА рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рдЪрд┐рддреНрд░рд┐рдд рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВрдЧреЗ

рдЫрд╡рд┐

рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рддрдм рд╣рдо рдЕрдкрдиреЗ Game рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 480 рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ 640 рдкрд┐рдХреНрд╕рд▓ рдХреА рдКрдБрдЪрд╛рдИред Phaser.AUTO рдЕрд░реНрде рд╣реИ рдХрд┐ рд░реЗрдВрдбрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХреИрдирд╡рд╛рд╕ рдпрд╛ WebGL рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреМрдерд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдбреЛрдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдкрд╛рдВрдЪрд╡рд╛рдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЦреЗрд▓ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред preload() рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, create() - рдЧреЗрдо рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рдФрд░ update() - рдХрдорд╛рдВрдбреНрд╕ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, update() рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 60 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдореБрдЦреНрдп рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рд╣реЛрдЧрд╛ред

create() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдЧреЗрдо рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкрд╣рд▓реЗ рдЪрд╛рд░ tileSprite рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдХреЛ рднрд░рддрд╛ рд╣реИред

рдЦреЗрд▓ рдХреА рд╡рд╕реНрддреБ

рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ - рд╣рдо рдЕрдкрдиреЗ рдЦреЗрд▓ рдХреЛ рддрд░реНрдХ рд╕реЗ рднрд░ рджреЗрдВрдЧреЗред game рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ preload() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ, preload() рдЦрд┐рд▓рд╛рдбрд╝реА рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд░реИрдХреЗрдЯ, рдПрдХ рдЧреЗрдВрдж рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреА рдЧрддрд┐ рдХрд╛ рднреА рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ:

  var playerBet; var computerBet; var ball; var computerBetSpeed = 190; var ballSpeed = 300; 


рд░реИрдХреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо createBet(x, y) рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 function createBet(x, y) { var bet = game.add.sprite(x, y, 'bet'); bet.anchor.setTo(0.5, 0.5); bet.body.collideWorldBounds = true; bet.body.bounce.setTo(1, 1); bet.body.immovable = true; return bet; } 


рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЧреЗрдо рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред anchor рдХреНрд╖реЗрддреНрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЗрд╕реЗ рд░реИрдХреЗрдЯ рдЫрд╡рд┐ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред body рдореЗрдВ рднреМрддрд┐рдХреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рд░реИрдХреЗрдЯ рдХреА рдЧрддрд┐ рдХреЛ рдЦреЗрд▓ рдХреА рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, "рдЙрдЫрд╛рд▓" рдХреА рддрд╛рдХрдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ, рддреЛ рд░реИрдХреЗрдЯ рдкрдХреНрд╖ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред

рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджреЛ рдХреЙрд▓ рдЬреЛрдбрд╝реЗрдВ () ред рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЗрдореЗрдЬ рдХреЗ рдмрд╛рдж рд░реИрдХреЗрдЯ рдХреЛ рдЧреЗрдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рджреЗрдЦреЗрдВрдЧреЗ:

  playerBet = createBet(game.world.centerX, 600); computerBet = createBet(game.world.centerX, 20); 


рдЗрд╕реА рддрд░рд╣, createBet() рдлрд╝рдВрдХреНрд╢рди рдХреЛ create() рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рдХрд░ рдПрдХ рдЧреЗрдВрдж create()

  ball = game.add.sprite(game.world.centerX, game.world.centerY, 'ball'); ball.anchor.setTo(0.5, 0.5); ball.body.collideWorldBounds = true; ball.body.bounce.setTo(1, 1); 


рдирддреАрдЬрддрди, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдореЗрдВ рджреЛ рд░реИрдХреЗрдЯ рдФрд░ рдПрдХ рдЧреЗрдВрдж рджрд┐рдЦрд╛рдИ рджреА, рдЬрдмрдХрд┐ рдЕрднреА рднреА рд╕реНрдерд┐рд░ рд╣реИ:

рдЫрд╡рд┐

рддрд░реНрдХ

рдЪрд┐рддреНрд░ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред
рдЧреЗрдВрдж рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:

  var ballReleased = false; function releaseBall() { if (!ballReleased) { ball.body.velocity.x = ballSpeed; ball.body.velocity.y = -ballSpeed; ballReleased = true; } } 


рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдВрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рдЪрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗрдЧ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдкрд░ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣реИрдВрдЧ рдЗрди рд▓рд╛рдЗрди () рдмрдирд╛рдХрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

  game.input.onDown.add(releaseBall, this); 


рдЕрдм рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдЧреЗрдВрдж рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдЦреЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдЙрдЫрд╛рд▓ рджреЗрддреА рд╣реИред update() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЖрдВрджреЛрд▓рди рдФрд░ рд░реИрдХреЗрдЯ рдЬреЛрдбрд╝реЗрдВ:

 function update () { //   playerBet.x = game.input.x; var playerBetHalfWidth = playerBet.width / 2; if (playerBet.x < playerBetHalfWidth) { playerBet.x = playerBetHalfWidth; } else if (playerBet.x > game.width - playerBetHalfWidth) { playerBet.x = game.width - playerBetHalfWidth; } //    if(computerBet.x - ball.x < -15) { computerBet.body.velocity.x = computerBetSpeed; } else if(computerBet.x - ball.x > 15) { computerBet.body.velocity.x = -computerBetSpeed; } else { computerBet.body.velocity.x = 0; } } 


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

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

  //       game.physics.collide(ball, playerBet, ballHitsBet, null, this); game.physics.collide(ball, computerBet, ballHitsBet, null, this); 


collide рд╡рд┐рдзрд┐ рджреЛ рд╡рд╕реНрддреБрдУрдВ (рдкрд╣рд▓реЗ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ) рдХреА рдЯрдХреНрдХрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓рд┐рдВрдЧ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдкрд░ рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рддреА рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

  function ballHitsBet (_ball, _bet) { var diff = 0; if (_ball.x < _bet.x) { //       diff = _bet.x - _ball.x; _ball.body.velocity.x = (-10 * diff); } else if (_ball.x > _bet.x) { //       diff = _ball.x -_bet.x; _ball.body.velocity.x = (10 * diff); } else { //     ,       _ball.body.velocity.x = 2 + Math.random() * 8; } } 


рдПрдХ рдЯрдХреНрдХрд░ рдореЗрдВ, рдЧреЗрдВрдж рдореВрд╡рдореЗрдВрдЯ рдХреЗ рдХрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЗрд╕рдХреЗ рдореВрд╡рдореЗрдВрдЯ рдХреА рджрд┐рд╢рд╛ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреВрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЗрд╕реЗ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЧреЗрдВрдж рдХреЛ рдореИрджрд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдЕрдкрдиреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦреЗрдВред

  function checkGoal() { if (ball.y < 15) { setBall(); } else if (ball.y > 625) { setBall(); } } function setBall() { if (ballReleased) { ball.x = game.world.centerX; ball.y = game.world.centerY; ball.body.velocity.x = 0; ball.body.velocity.y = 0; ballReleased = false; } } 


checkGoal() рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ update() рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЙрдкреА update() :

  //,    -  checkGoal(); 


рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдХреЗ рд╢рд╛рдирджрд╛рд░ рдФрд░ рдЖрдзреБрдирд┐рдХ рдЧреЗрдордкреНрд▓реЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ, рдЬреАрд╡рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


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

рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмреНрд░реЗрдХрдЖрдЙрдЯ . php рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝реЗрдЬрд╝рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдиреНрдп рдЧреЗрдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬреЛ рд▓реЛрдЧ рдирдП рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦреЗрдВред

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
1. рдлреЗрдЬрд░ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХрд╛ рдкрд░рд┐рдЪрдп
2. рдЗрдВрдЬрди рдлреЛрд░рдо
3. рд░рд┐рдЪрд░реНрдб рдбреЗрд╡реА рджреНрд╡рд╛рд░рд╛ рдЯреНрд╡рд┐рдЯрд░

рдЕрдкрдбреЗрдЯ: рдПрдХ рджреЛрд╕реНрдд рдХреА рд╕рд▓рд╛рд╣ рдкрд░ hell0w0rd рдиреЗ github рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдФрд░ рдПрдХ рдкреЗрдЬ рдмрдирд╛рдпрд╛ рддрд╛рдХрд┐ рдЖрдк рдЧреЗрдо рдХреЛ рдЖрдЬрд╝рдорд╛ рд╕рдХреЗрдВ:
https://github.com/nononononono/phaser-pong
http://nononononono.imtqy.com/phaser-pong/

10/20/2013 рд╕реЗ рдЕрдкрдбреЗрдЯ: fessnecro рдиреЗ рд░реИрдХреЗрдЯ рдФрд░ рдирдП рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреЗрдВрдж рдХреА рдЯрдХреНрдХрд░ рдореЗрдВ рдХрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╣ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реИред рдпреЗ рдмрджрд▓рд╛рд╡ рдореБрдЦреНрдп рдмреНрд░рд╛рдВрдб рдореЗрдВ рд╣реИрдВред рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг gh- рдкреГрд╖реНрдареЛрдВ рдХреА рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реИред

рдФрд░, рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб index.html рд╣реИ:
 <script src="phaser.js"></script> <script type="text/javascript"> var game = new Phaser.Game(480, 640, Phaser.AUTO, '', { preload: preload, create: create, update: update }); var playerBet; var computerBet; var ball; var computerBetSpeed = 190; var ballSpeed = 300; var ballReleased = false; function preload() { game.load.image('bet', 'assets/bet.png'); game.load.image('ball', 'assets/ball.png'); game.load.image('background', 'assets/starfield.jpg'); } function create() { game.add.tileSprite(0, 0, 480, 640, 'background'); playerBet = createBet(game.world.centerX, 600); computerBet = createBet(game.world.centerX, 20); ball = game.add.sprite(game.world.centerX, game.world.centerY, 'ball'); ball.anchor.setTo(0.5, 0.5); ball.body.collideWorldBounds = true; ball.body.bounce.setTo(1, 1); game.input.onDown.add(releaseBall, this); } function createBet(x, y) { var bet = game.add.sprite(x, y, 'bet'); bet.anchor.setTo(0.5, 0.5); bet.body.collideWorldBounds = true; bet.body.bounce.setTo(1, 1); bet.body.immovable = true; return bet; } function update () { //   playerBet.x = game.input.x; var playerBetHalfWidth = playerBet.width / 2; if (playerBet.x < playerBetHalfWidth) { playerBet.x = playerBetHalfWidth; } else if (playerBet.x > game.width - playerBetHalfWidth) { playerBet.x = game.width - playerBetHalfWidth; } //    if(computerBet.x - ball.x < -15) { computerBet.body.velocity.x = computerBetSpeed; } else if(computerBet.x - ball.x > 15) { computerBet.body.velocity.x = -computerBetSpeed; } else { computerBet.body.velocity.x = 0; } //       game.physics.collide(ball, playerBet, ballHitsBet, null, this); game.physics.collide(ball, computerBet, ballHitsBet, null, this); //,    -  checkGoal(); } function ballHitsBet (_ball, _bet) { var diff = 0; if (_ball.x < _bet.x) { //       diff = _bet.x - _ball.x; _ball.body.velocity.x = (-10 * diff); } else if (_ball.x > _bet.x) { //       diff = _ball.x -_bet.x; _ball.body.velocity.x = (10 * diff); } else { //     ,       _ball.body.velocity.x = 2 + Math.random() * 8; } } function checkGoal() { if (ball.y < 15) { setBall(); } else if (ball.y > 625) { setBall(); } } function setBall() { if (ballReleased) { ball.x = game.world.centerX; ball.y = game.world.centerY; ball.body.velocity.x = 0; ball.body.velocity.y = 0; ballReleased = false; } } function releaseBall() { if (!ballReleased) { ball.body.velocity.x = ballSpeed; ball.body.velocity.y = -ballSpeed; ballReleased = true; } } </script> 

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


All Articles