рд╣рд░ рд╕рд╛рд▓ рд╡реЗрд▓реЗрдВрдЯрд╛рдЗрди рдбреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╕рдорд░реНрдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдФрд░ рдХреБрдЫ рдореВрд▓ рдФрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдиреЗ рдХрд╛ рднреА рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдЙрдирдХреЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рд╣реЛрдВрдЧреЗ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рдореИрдВрдиреЗ рдкрд╛рда, рдзреНрд╡рдирд┐рдпрд╛рдБ, рдХрдг рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝реЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХрд╛рдлреА рдореВрд▓ рдерд╛! рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде libgdx рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ ред
ред
рдЕрдВрддрд░реНрд╡рд╕реНрддреБ
рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
- IntelliJ IDEA - рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдбреАрдИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк Android Studio , Eclipse рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- libgdx - рдЧреЗрдо рдФрд░ рдЕрдиреНрдп рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдкреАрд╕реА, рдореИрдХ, рд▓рд┐рдирдХреНрд╕, рдПрдВрдбреНрд░реЙрдЗрдб) рдЬрд╛рд╡рд╛-рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрд╛рдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ 2.0 рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХреА рдЧрдИ рд╣реИред рдХреБрдЫ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ JNI (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Box2d) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред
- box2d-editor - рднреМрддрд┐рдХ рдЗрдВрдЬрди
box2d
рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рднреМрддрд┐рдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрд╛рджрдХ, рдЬреЛ рдХрд┐ libgdx
рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╣реГрджрдп рдХреА рдЫрд╡рд┐ рдХреЗ рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред - рд╣рд╛рдпрд░реЛ рдмрд┐рдЯрдореИрдк рдлрд╝реЙрдиреНрдЯ рдЬрдирд░реЗрдЯрд░ - рд╡реЗрдХреНрдЯрд░ рдлрд╝реЙрдиреНрдЯ рдХреЛ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо (рдХреНрдпреЛрдВрдХрд┐
libgdx
рдХреЗрд╡рд▓ рд░реЗрдЦрд╛рдкреБрдВрдЬ рдлрд╝реЙрдиреНрдЯ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ)ред - рдХрдг рд╕рдВрдкрд╛рджрдХ - рдХрдг рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрд╛рджрдХ, рдЬрд┐рд╕реЗ
libgdx
рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реГрджрдп рдХреЗ рд╡рд┐рдирд╛рд╢ рдХреЗ рджреМрд░рд╛рди "рд╡рд┐рд╕реНрдлреЛрдЯ" рдкреНрд░рднрд╛рд╡ рдХреЗ рдХрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред - рдкреЗрдВрдЯ.рдиреЗрдЯ - рдПрдХ рдЫрд╡рд┐ рд╕рдВрдкрд╛рджрдХ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реГрджрдп рдХреА рдЫрд╡рд┐ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрди рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реИред рдореИрдВрдиреЗ libgdx
рдХреЛ рдЪреБрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрдиреБрднрд╡ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, libgdx
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдПрдХ рдзреАрдореА рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ рдФрд░ рдореВрд▓ рдЬрд╛рд╡рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред Android рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВред
рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ libgdx рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред gdx-setup.jar
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рдЧреНрд░реЗрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдЬреЛ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, Desktop
, Android
, Ios
, Html
рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рджреЛ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрдИрдУрдПрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЖрдк рдЙрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рднреА рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдмреЙрдХреНрд╕ 2 рдбреА рднреМрддрд┐рдХреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдм рд╡рд┐рдХреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ: рдПрдХ libgdx рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ ред
рдкреАрдврд╝реА рдХреЗ рдмрд╛рдж, рддреАрди рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:
- рдХреЛрд░
- рдбреЗрд╕реНрдХрдЯреЙрдк
- рдПрдВрдбреНрд░реЙрдпрдб
рдкрд┐рдЫрд▓реЗ рджреЛ рдореЗрдВ, DesktopLauncher
рдФрд░ AndroidLauncher
рдХреНрд░рдорд╢рдГ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:
public class DesktopLauncher { public static void main (String[] arg) { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.width = 800; config.height = 480; new LwjglApplication(new ValentinesDayHeartsApp(), config); } }
public class AndroidLauncher extends AndroidApplication { @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); initialize(new ValentinesDayHeartsApp(), config); } }
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреЛ рдЪреБрдиреЗ рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдн рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ AndroidManifest.xml
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реНрд▓реАрдк рдореЛрдб (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реАрд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЛ рдХрдВрдкрди рдФрд░ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рднреА рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рджреБрдирд┐рдпрд╛ рдЙрд▓реНрдЯрд╛ рди рд╣реЛ:
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/>
рдФрд░
android:screenOrientation="landscape"
рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб core
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ValentinesDayHeartsApp
рдирд╛рдордХ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдиреЗ ApplicationListener
рдЗрдВрдЯрд░рдлреЗрд╕ (рдЖрд░рдВрднрд┐рдХ рдШрдЯрдирд╛рдУрдВ, рдкреНрд░рддрд┐рдкрд╛рджрди, InputProcessor
рдФрд░ рдЕрдиреНрдп рд░рд╛рдЬреНрдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП) рдФрд░ InputProcessor
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред
рдпрд╣ рд╕рдм, рдХрдВрдХрд╛рд▓ рддреИрдпрд╛рд░ рд╣реИ! рдЕрдм рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреАрд╕реА рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдЪрд▓реЗрдЧрд╛ред
рд╕рд╛рдорд╛рдиреНрдп
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ: ValentinesDayHeatsApp
рдХреНрд▓рд╛рд╕ рдореЗрдВ, create
, render
, touchDown
, touchDown
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред create
рд╡рд┐рдзрд┐ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдмрдирд╛рд╡рдЯ, рдлрд╝реЙрдиреНрдЯ, рдХрдг, рдзреНрд╡рдирд┐рдпреЛрдВ) рдХреЛ рдЖрд░рдВрдн рдХрд░рддреА рд╣реИ рдФрд░ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИред render
рд╡рд┐рдзрд┐ рдореЗрдВ, рджреБрдирд┐рдпрд╛ рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рд╣реЛрддрд╛ рд╣реИ:
@Override public void render() { updatePhysics(); updateBackground(); updateSprites(); updateParticles(); refresh(); renderBackground(); renderHearts(); renderFonts(); renderParticles(); }
dispose
рд╡рд┐рдзрд┐ рдореЗрдВ, рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рдВ, рд╣рд╛рдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣, рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди (Box2d рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп) рдЕрднреА рднреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред touchDown
рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рд╕реНрдкрд░реНрд╢ рдпрд╛ рдПрдХ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдХреЛрдИ рд╕реНрдкрд░реНрд╢ рдмрд┐рдВрджреБ рджрд┐рд▓ рдХреЗ рд╕рд╛рде рдШреВрдорддрд╛ рд╣реИ, рддреЛ рд╣реГрджрдп рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕реНрдкрд░реНрд╢ рдмрд┐рдВрджреБ рдореЗрдВ рдПрдХ рдирдпрд╛ рджрд┐рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Heart
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:
Body
- рдПрдХ рд╢рд╛рд░реАрд░рд┐рдХ рдореЙрдбрд▓редSprite
- рдПрдХ рдЪрд┐рддреНрд░рдордп рдореЙрдбрд▓ (рд╕реНрдкреНрд░рд╛рдЗрдЯ)редString
- рджрд┐рд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдПрдХ рдкрд╛рдаредFont
- a fontредParticleEffect
- рджрд┐рд▓ рдХреЛ рдирд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп рдмрдирд╛рдП рдЧрдП рдХрдгредBreakSound
- рджрд┐рд▓ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдПрдХ рдзреНрд╡рдирд┐ред
рдЕрдЧрд▓рд╛, рдореИрдВ рдЖрд╡реЗрджрди рдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рдмрдирд╛рд╡рдЯ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рджрд┐рд▓ рдХреЛ рдЦреЛрдЬрдиреЗ рдпрд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛: рдПрдХ рдЪрдордХ рдФрд░ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ред libgdx
рдореЗрдВ рдмрдирд╛рд╡рдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Texture
рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдПрдХ рд╣реА рдмрдирд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд Sprite
рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реЗ render
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗред рд╕реНрдкреНрд░рд╛рдЗрдЯ рдФрд░ рдХреЛрдг рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╣реГрджрдп рдХреЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рд╣реИрдВред рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдореЗрдВ рджрд┐рд▓реЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдПрдЪрдПрд╕рдПрд▓ рдкреИрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рд╣реНрдпреВ, рд╕рдВрддреГрдкреНрддрд┐ рдФрд░ рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЖрд░рдЬреАрдмреА рдЬреИрд╕реЗ рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдирд╣реАрдВред RGB -> HSL рдФрд░ HSL -> RGB рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рд╕реВрддреНрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдкрд░ .NET рдореЗрдВ рд░рдВрдЧреЛрдВ рдХреЗ рд╣реЗрд░рдлреЗрд░ рд▓реЗрдЦ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рднреА рд░реВрдкрд╛рдВрддрд░рдг prepareHeartsTextures
, prepareHslData
рдФрд░ prepareHslData
рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╣реИрдВред рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
Pixmap pixmap = new Pixmap(fileHandle); float[][][] result = new float[pixmap.getWidth()][pixmap.getHeight()][4]; for (int i = 0; i < pixmap.getWidth(); i++) for (int j = 0; j < pixmap.getHeight(); j++) { int color = pixmap.getPixel(i, j); float r = (float)((color >> 24) & 0xFF) / 255.0f; float g = (float)((color >> 16) & 0xFF) / 255.0f; float b = (float)((color >> 8) & 0xFF) / 255.0f; float a = (float)(color & 0xFF) / 255.0f; result[i][j] = ColorUtils.RgbToHsl(r, g, b, a); } return result;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рд╡рд┐рднрд┐рдиреНрди рд╢реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдмрдирд╛рд╡рдЯ рдХреА рдкреАрдврд╝реА рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рджреЗрд░реА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдлрд╝реЙрдиреНрдЯреНрд╕
рдЪреВрдБрдХрд┐ libgdx
рдХреЗрд╡рд▓ raster рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ Hiero Bitmap Font Generator (version 5) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ PNG рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреА рдЫрд╡рд┐рдпрд╛рдБ рдФрд░ FNT рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪрд┐рддреНрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ:

рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ libgdx рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
font = new BitmapFont( Gdx.files.internal("data/Jura-Medium.fnt"), Gdx.files.internal("data/Jura-Medium.png"), false); font.setColor(Color.WHITE);
рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ:
font.draw(spriteBatch, heart.String, screenPosition.x, screenPosition.y);
рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝реЙрдиреНрдЯ рдХреЛ рдПрдХ рдХреЛрдг рдкрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░реЗрдд рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ SpriteBatch
рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ SpriteBatch
, рдФрд░ рдлрд┐рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд╝реЙрдиреНрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
Matrix4 projection = spriteBatch.getProjectionMatrix(); projection.setToOrtho2D(0, 0, WorldWidth, WorldHeight); projection.translate(tmpVector1.x, tmpVector1.y, 0); projection.rotate(0, 0, 1, body.getAngle() / (float)Math.PI * 180); projection.translate(-tmpVector1.x, -tmpVector1.y, 0); Vector2 stringSize = heart.getStringSize(); tmpVector1.add(heart.Size.x / PhysWorldWidth * WorldWidth * CenterDisplacement.x - stringSize.x * 0.5f, heart.Size.y / PhysWorldHeight * WorldHeight * CenterDisplacement.y + stringSize.y); spriteBatch.begin(); BitmapFont.BitmapFontData fontData = font.getData(); fontData.setScale(heart.Size.x * FontSizeHeartSizeCoef.x, heart.Size.y * FontSizeHeartSizeCoef.y); font.draw(spriteBatch, heart.String, tmpVector1.x, tmpVector1.y); fontData.setScale(1, 1); spriteBatch.end();
рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рди
рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ, рдмреЙрдХреНрд╕ 2 рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрдкрдиреЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рджрд┐рд▓ рдХреА рдЫрд╡рд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ box2d-editor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
ред
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджрд┐рд▓ рдХрд╛ рдПрдХ рдмрд╣реБрднреБрдЬ рдмрдирд╛рдпрд╛, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрддрд▓ рдмрд╣реБрднреБрдЬ рдореЗрдВ рдЯреВрдЯ рдЧрдпрд╛ рдерд╛ред рднреМрддрд┐рдХ рдореЙрдбрд▓ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрди рдмрд╣реБрднреБрдЬреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( addHeart
рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ)ред libgdx рдХреЗрд╡рд▓ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, BodyEditorLoader.java рд╡рд░реНрдЧ рдкрд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдХреЛ JSON (рдпрд╛рдиреА рдкрд╛рдареАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рд╕реЗ рднреА рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╢рд░реАрд░ рдХреЗ рдШрдирддреНрд╡, рдШрд░реНрд╖рдг рдФрд░ рд▓реЛрдЪ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ:
FixtureDef fdef = new FixtureDef(); fdef.density = 0.75f; fdef.friction = 1.0f; fdef.restitution = 0.4f; bodyLoader.attachFixture(body, "Heart", fdef, newWidth); body.resetMassData();
рдЕрдм рд╣рдорд╛рд░реЗ рджрд┐рд▓реЛрдВ рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдЦреЛрд▓ рд╣реИ!
рджрд┐рд▓реЛрдВ рдХреЛ рд╕реНрдХреНрд░реАрди рд╕реЗ рди рдЙрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЫреЛрдЯреА рд╕реА рджреБрдирд┐рдпрд╛ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдЪрд╛рд░ рд╕реНрдерд┐рд░ рдЖрдпрддреЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░, рдбрд┐рд╡рд╛рдЗрд╕ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рд╕реЗрдЯ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:
if (Gdx.app.getType() == ApplicationType.Android) { gravity.x = -Gdx.input.getPitch() / 90.0f; gravity.y = Gdx.input.getRoll() / 90.0f; gravity.mul(gravityCoef); world.setGravity(gravity); }
рдХрдг рдкреНрд░рдгрд╛рд▓реА
libgdx
, рдХрдг рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ: рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдмрдирд╛рд╡рдЯреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдлреИрд▓рдиреЗ рдХрд╛ рд░реВрдк, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдФрд░ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ред рдореИрдВрдиреЗ рджрд┐рд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдХрдг рдмрдирд╛рдП, рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЯреИрдк рдХрд░рдиреЗ рдФрд░ рдПрдХ рдмрдбрд╝реЗ рднреМрддрд┐рдХ рджрд┐рд▓ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЖрд╡реЗрджрди рдореЗрдВ, рдХрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:
рдкреНрд░рд╛рд░рдВрдн
ParticleEffect effect = new ParticleEffect(); effect.load(Gdx.files.internal("data/destroy.p"), Gdx.files.internal("data"));
рдЬреАрд╡рди рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ start
рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдХрдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
effect.setPosition(.., ..); effect.start();
рдзреНрд╡рдирд┐
рдзреНрд╡рдирд┐ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рднрд░реА рд╣реБрдИ рд╣реИрдВ:
sound = Gdx.audio.newSound(Gdx.files.internal("path/to/file"));
рдФрд░ рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рдЦреЗрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ:
sound.play(1);
рдХреНрдпрд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╣рд╛рдБ рднреА рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреЗрд╡рд▓ рдУрдЬреАрдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдФрд░ 96 kbit / s рдмрд┐рдЯрд░реЗрдЯ рдореЗрдВ рд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рддрдХрдиреАрдХреЗрдВ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА libgdx
ред рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗрд▓реЗрдВрдЯрд╛рдЗрди рдбреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░рд┐рдп рдХреЛ рдЖрд╡реЗрджрди рднреЗрдЬреЗрдВ :)
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рджрд┐рд▓реЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрд╛рда рдХреЛ data/words.txt
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд┐рдирд╛ рд░реАрдХреИрдкрд┐рд▓реЗрд╢рди рдХреЗ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп