рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рдЕрдЬрдЧрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЖрдЬ рд╣рдордиреЗ 2 рдбреА рдЧреЗрдо рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдЕрдкрдиреЗ
рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдЬреЛ рдХреБрдЫ рд╣реИ, рдЙрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
рдЕрдиреБрд╡рд╛рджрдореВрд▓ рд▓реЗрдЦ - opspot.com/article/18/4/easy-2d-game-creation-python-and-aradeade
рдкреЙрд▓ рд╡рд┐рдиреНрд╕реЗрдВрдЯ рдХреНрд░реЗрд╡рди рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЖрджрд░реНрд╢ рд╣реИ рдЬреЛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдкрд░ рдПрдХ рдЯрди рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп "рдмрд╕ рд▓реЗрдирд╛ рдФрд░ рдХрд░рдирд╛" рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЖрд░реНрдХреЗрдб 2 рдбреА рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрднрд╡реА рд╣рд╛рдереЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╣реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЧреЗрдо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдФрд░ рдЖрд░реНрдХреЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред
рдореИрдВрдиреЗ рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдпреЛрдВ
рдХреЛ PyGame рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрд░реНрдХреЗрдб рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдореИрдВ рд▓рдЧрднрдЧ 10 рд╡рд░реНрд╖реЛрдВ рд╕реЗ PyGames in-person рдХреЛ рд╕рд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдСрдирд▓рд╛рдЗрди рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
ProgramArcadeGames.com рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИред PyGames рдорд╣рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдмрдЧ
рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рдерд╛
рдЬреЛ рдХрднреА рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ ред
рдореИрдВ
рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдкрдврд╝рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдерд╛, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░
рдПрдХ рдкреВрд░рд╛ рдЦрдВрдб рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдХреНрдпреЛрдВ y- рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдШреБрдорд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред PyGames рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░
OpenGL рдЬреИрд╕реА рдЖрдзреБрдирд┐рдХ рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдкреБрд░рд╛рдиреЗ
SDL 1 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛ред рдореИрдВ рдПрдХ рдЙрдЬреНрдЬреНрд╡рд▓ рднрд╡рд┐рд╖реНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред
рдореЗрд░реЗ рд╕рдкрдиреЛрдВ рдореЗрдВ, рдПрдХ рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдерд╛ рдЬреЛ рдкрд╛рдпрдерди 3 рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдХреЛрд░реЗрдЯрд░ рдФрд░ рдЯрд╛рдЗрдк рд╣рд┐рдВрдЯрд┐рдВрдЧред рд╡рд╣ рдЖрд░реНрдХреЗрдб рд╣реЛ рдЧрдпрд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред

рд╕реНрдерд╛рдкрдирд╛
рдЖрд░реНрдХреЗрдб, рдХрдИ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреА рддрд░рд╣,
PyPi рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдкрд╛рдЗрдк (рдпрд╛
рдкрд┐рдкреЗрдирд╡ )
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░реНрдХреЗрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкрд╛рдпрдерди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
pip install arcade
рдФрд░ рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░:
pip3 install arcade
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрд░реНрдХреЗрдб рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди
рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВред
рд╕рд╛рдзрд╛рд░рдг рдбреНрд░рд╛рдЗрдВрдЧ
рдЖрдк рдЦрд┐рдбрд╝рдХреА рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреНрд░рд╛рдЗрдВрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рдПрдХ рд╕реНрдорд╛рдЗрд▓реА рдмрдирд╛рдПрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдореЗрдВ рд╣реИ:

рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрд░реНрдХреЗрдб рдбреНрд░рд╛рдЗрдВрдЧ
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдПрдХ рддреНрд╡рд░рд┐рдд рджреГрд╢реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реИ рдЬреЛ рдЕрднреА рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВред
import arcade
рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдмреЗрд╢рдХ, рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (x, y) рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
def draw_pine_tree(x, y): """ """
рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрдВрдЧ рджреЗрдЦреЗрдВред

рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзреБрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╣рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред
рдЖрд░реНрдХреЗрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред 10,000 рдЖрдпрддреЛрдВ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреНрд░рд╛рдЗрдВрдЧ рдореЗрдВ 0.8 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдПрдХ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд░рд╛рд╢рд┐ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ 0.001 рд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╕рдордп рд▓рдЧреЗрдЧрд╛ред
рдЦрд┐рдбрд╝рдХреА рд╡рд░реНрдЧ
рдмрдбрд╝реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдорддреМрд░ рдкрд░
рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдпрд╛
рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди, рдЕрджреНрдпрддрди рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рд╡рд┐рдВрдбреЛ-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИред
import arcade SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 class MyGame(arcade.Window): """ . """ def __init__(self, width, height): super().__init__(width, height) arcade.set_background_color(arcade.color.AMAZON) def setup(self):
рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХрдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
- on_draw: рд╕реНрдХреНрд░реАрди рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИред
- рдЕрджреНрдпрддрди: рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдпрд╣рд╛рдВ рд╣реИред рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 60 рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
- on_key_press: рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреА рдЧрддрд┐ред
- on_key_release: рдЬрдм рдПрдХ рдмрдЯрди рдЫреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рдкрд╛рддреНрд░ рдХреЛ рд░реЛрдХрдирд╛ред
- on_mouse_motion: рд╣рд░ рдмрд╛рд░ рдорд╛рдЙрд╕ рдЪрд▓рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- on_mouse_press: рдорд╛рдЙрд╕ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- set_viewport: рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдХреНрд░реЙрд▓рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рджреБрдирд┐рдпрд╛ рдПрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛрддреА рд╣реИред рдХреЙрд▓рд┐рдВрдЧ set_viewport рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рд╕реНрдкреНрд░рд╛рдЗрдЯ
рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдЖрд░реНрдХреЗрдб рдореЗрдВ 2D рдмрд┐рдЯрдореИрдк рдлреАрдЪрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛, рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЪреЗрддрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВред рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдЯрдХрд░рд╛рд╡ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдкреНрд░рд┐рдЯ рдирд┐рд░реНрдорд╛рдг
рдПрдХ рдЖрд░реНрдХрд╛рдЗрдЯ
рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреЗрд╡рд▓ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛, рдФрд░, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЫрд╡рд┐ рдХреЛ рдмрдбрд╝рд╛ рдпрд╛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд░ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
SPRITE_SCALING_COIN = 0.2 coin = arcade.Sprite("coin_01.png", SPRITE_SCALING_COIN)
рдпрд╣ рдХреЛрдб рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдкреНрд░реЗрдд рдмрдирд╛рддрд╛ рд╣реИред рддрд╕реНрд╡реАрд░ рдореВрд▓ рдХреЗ 20% рддрдХ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред
рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╕реВрдЪреА
рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдЕрдкрдиреЗ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рд╕реВрдЪреА рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдЧреНрд░реБрдк рдмреИрдЪ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП OpenGl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЧреЗрдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд┐рдХреНрдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рд╕рд┐рдХреНрдХреЗ рдХреЗ рд▓рд┐рдПред
def setup(self): """ . """
рд╣рдо рд╕рд┐рдХреНрдХреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
def on_draw(self): """ """ arcade.start_render() self.coin_list.draw() self.player_list.draw()
рдЯреНрд░реИрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЯрдХрд░рд╛рд╡
Check_for_collision_with_list рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╕реВрдЪреА рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╕рднреА рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдЯрддрд╛ рд╣реИред рдПрдХ рд╕рд░рд▓ рдлреЙрд░-рд╕рд╛рдЗрдХрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЦреЗрд▓ рдореЗрдВ рд╕рд┐рдХреНрдХреЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреЛрд░ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
def update(self, delta_time):
рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг
collect_coins.py рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЦреЗрд▓ рднреМрддрд┐рдХреА
рдХрдИ рдЦреЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд░реВрдк рдореЗрдВ рднреМрддрд┐рдХреА рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЙрдк-рдбрд╛рдЙрди рдЧреЗрдореНрд╕ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рджреАрд╡рд╛рд░реЛрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдорд░ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдФрд░ рдЧрддрд┐рдорд╛рди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдХреБрдЫ рдЦреЗрд▓ рджреНрд░рд╡реНрдпрдорд╛рди, рдШрд░реНрд╖рдг, рд╕реНрдкреНрд░рд┐рдВрдЧреНрд╕ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рднреМрддрд┐рдХ 2 рдбреА рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рдХрд╛ рдЦреЗрд▓

рдПрдХ рд╢реАрд░реНрд╖ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЧреЗрдо рдХреЗ рд▓рд┐рдП, рдЖрд░реНрдХреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рджреАрд╡рд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА (рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ wall_list рдХрд╣рддрд╛ рд╣реВрдВред рдлрд┐рд░ рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛрдб рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдЗрдВрдЬрди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list)
player_sprite рдХреЛ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ change_x рдФрд░ change_y рдХреЗ рд╕рд╛рде рдПрдХ рдЧрддрд┐ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред
MOVEMENT_SPEED = 5 def on_key_press(self, key, modifiers): """ """ if key == arcade.key.UP: self.player_sprite.change_y = MOVEMENT_SPEED elif key == arcade.key.DOWN: self.player_sprite.change_y = -MOVEMENT_SPEED elif key == arcade.key.LEFT: self.player_sprite.change_x = -MOVEMENT_SPEED elif key == arcade.key.RIGHT: self.player_sprite.change_x = MOVEMENT_SPEED def on_key_release(self, key, modifiers): """, """ if key == arcade.key.UP or key == arcade.key.DOWN: self.player_sprite.change_y = 0 elif key == arcade.key.LEFT or key == arcade.key.RIGHT: self.player_sprite.change_x = 0
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдХреЛрдб рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдЧрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ Phys_engine.update () рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧреА, рд▓реЗрдХрд┐рди рджреАрд╡рд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВред
def update(self, delta_time): """ """ self.physics_engine.update()
рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг
sprite_move_walls.py рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо

рд╕рд╛рдЗрдб рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЧреЗрдо рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХреЛ PhysicsEnginePlatformer рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдФрд░ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite, self.wall_list, gravity_constant=GRAVITY)
рдЙрди рдЯрд╛рдЗрд▓реЛрдВ рдФрд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрддрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рдЖрдк
рдЯрд╛рдЗрд▓реЗрдб рдЬреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг
sprite_tiled_map.py рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ
редрдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЬрд╛рдиреЗрдВ
рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕реАрдЦрдирд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЖрд░реНрдХреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ
рдирдореВрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЧреЗрдо рдмрдирд╛рддреЗ рд╕рдордп рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдЙрди рдЦреЗрд▓реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдСрдирд▓рд╛рдЗрди рдФрд░ рдСрдлрд▓рд╛рдЗрди рдЫрд╛рддреНрд░реЛрдВ рд╕реЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВред
рдЖрд░реНрдХреЗрдб рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде рдбреЗрдореЛ рдЪрд▓рд╛рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
python -m arcade.examples.sprite_moving_platforms
рдЕрдВрдд
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ
рдЦреБрд▓реЗ рджрд┐рди рдкрд░
рд╕реНрдЯрд╛рд╕ рдЬрд╛ рд╕рдХрддреЗ
рд╣реИрдВ ред