рд╡реЗрд▓реЗрдВрдЯрд╛рдЗрди рдбреЗ Libgdx рдРрдк

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


ред


рд╕рд╛рдордЧреНрд░реА



рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рдЙрдкрдХрд░рдг


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


  1. IntelliJ IDEA рдореЙрдбреНрдпреВрд▓рд░ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдлреНрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ , рдПрдХреНрд▓рд┐рдкреНрд╕ рд╣реИ ред
  2. libgdx рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдкреАрд╕реА, рдореИрдХ, рд▓рд┐рдирдХреНрд╕, рдПрдВрдбреНрд░реЙрдЗрдб) рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдЧреЗрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рди рдХрд┐ рдЕрдиреНрдп рдЧреНрд░рд╛рдлрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрд╛рдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ 2.0 рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред рдХреЛрдб рдХреЗ рдХреБрдЫ рдЦрдВрдб JNI (рдЬреИрд╕реЗ Box2d) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
  3. рдмреЙрдХреНрд╕ 2 рдбреА-рдПрдбрд┐рдЯрд░ - рдмреЙрдХреНрд╕ 2 рдбреА рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрд╛рджрдХ, рдЬреЛ рдХрд┐ libgdx рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реГрджрдп рдХреЗ рдкреИрдЯрд░реНрди рдФрд░ рдЗрд╕рдХреЗ рднреМрддрд┐рдХ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  4. рд╣рд╛рдпрд░реЛ рдмрд┐рдЯрдореИрдк рдлрд╝реЙрдиреНрдЯ рдЬрдирд░реЗрдЯрд░ - рд╡реЗрдХреНрдЯрд░ рдлреЛрдВрдЯ рдХреЛ рдмрд┐рдЯрдореИрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо (рдХреЗрд╡рд▓ рдмрд┐рдЯрдореИрдкреНрд╕ рд▓рд┐рдмрд╛рд╕рдХреНрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ)ред
  5. рдХрдг рд╕рдВрдкрд╛рджрдХ - libgdx рдХреЗ рд▓реЗрдЦрдХ рд╕реЗ рдХрдг рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрд╛рджрдХред рджрд┐рд▓ рдХреЗ рд╡рд┐рдирд╛рд╢ рдореЗрдВ рдПрдХ "рд╡рд┐рд╕реНрдлреЛрдЯ" рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдХрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  6. рдкреЗрдВрдЯ.рдиреЗрдЯ - рджрд┐рд▓ рдХреА рдЫрд╡рд┐ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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


рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдБ рдХрд┐ libgdx рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдХреИрд╕реЗ рдмрдирд╛рдПрдБред gdx-setup.jar рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЧреНрд░реИрдВрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд) рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд Desktop , Android , Ios , Html ред рд╕рдЪ рд╣реИ, рдЖрдЦрд┐рд░реА рджреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ 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" 

рдХреЛрд░ рд╕реНрдЯреЛрд░ рдЖрдо рдХреЛрдбред рдореБрдЦреНрдп рд╡рд░реНрдЧ ValentinesDayHeartsApp , рдЬреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рд░реЗрдВрдбрд░, InputProcessor рдФрд░ рдЕрдиреНрдп рд╕реНрдЯреЗрдЯреНрд╕ рдФрд░ рдПрдХ InputProcessor рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ApplicationListener рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпреВрдЬрд░ рдЗрдирдкреБрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред


рд╕рдм рдХреБрдЫ, рдлреНрд░реЗрдо рддреИрдпрд╛рд░ рд╣реИ! рдЕрдм рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреАрд╕реА рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред


рд╕рдВрдкреВрд░реНрдг


рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ: ValentinesDayHeatsApp рдХреНрд▓рд╛рд╕ рдореЗрдВ create , render , touchDown , touchDown рддрд░реАрдХреЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИрдВред create рд╡рд┐рдзрд┐ рдореЗрдВ, рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдмрдирд╛рд╡рдЯ, рдлреЛрдВрдЯ, рдХрдг, рдзреНрд╡рдирд┐рдпрд╛рдВ) рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред render рд╡рд┐рдзрд┐ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ render рдФрд░ рд░реЗрдВрдбрд░ рдХрд░рддреА рд╣реИ:


 @Override public void render() { updatePhysics(); updateBackground(); updateSprites(); updateParticles(); refresh(); renderBackground(); renderHearts(); renderFonts(); renderParticles(); } 

dispose рд╡рд┐рдзрд┐ рдореЗрдВ, рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред рд╣рд╛рдВ, рд╣рд╛рдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣, рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди (Box2d рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп) рдЕрднреА рднреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореБрдХреНрдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред touchDown рд╡рд┐рдзрд┐ touchDown рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдпрд╛ рдЯрдЪрд╕реНрдХреНрд░реАрди рдХреЛ рдЫреВрдиреЗ touchDown рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рд╕рдВрдкрд░реНрдХ рдмрд┐рдВрджреБ рдХреБрдЫ рджрд┐рд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдХреНрд▓рд┐рдХ рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдирдпрд╛ рджрд┐рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ \ "рд╣рд╛рд░реНрдЯ \" Heart рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:



рдЕрдЧрд▓рд╛, рдореИрдВ рдЖрд╡реЗрджрди рдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред


рдмрдирд╛рд╡рдЯ


рдкрд╣рд▓реЗ, рд╕реАрдзреЗ рд╣реГрджрдп рдХреЛ рд╕реНрд╡рдпрдВ рдЦреЛрдЬрдирд╛ рдпрд╛ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕реЗ рджреЗрдЦрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛: рдПрдХ рдЪрдордХ рдФрд░ рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ред Libgdx рдореЗрдВ рдЯреЗрдХреНрд╕рдЪрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЯреЗрдХреНрд╕рдЪрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдПрдХ рд╣реА рдмрдирд╛рд╡рдЯ рдХреЛ рдХрдИ рдмрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд Sprite рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реЗ render рд╡рд┐рдзрд┐ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдХреЛрдг рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рджрд┐рд▓ рдХрд╛ рднреМрддрд┐рдХ рдореЙрдбрд▓ рд╣реИред рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рджрд┐рд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд░рдВрдЧ рджрд┐рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдЪрдПрд╕рдПрд▓ рдкреИрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЖрдкрдХреЛ рд╣реНрдпреВ, рд╕рдВрддреГрдкреНрддрд┐ рдФрд░ рд▓рдкрдЯ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕реАрдзреЗ рдЖрд░рдЬреАрдмреА рдЬреИрд╕реЗ рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдирд╣реАрдВред рд░реВрдкрд╛рдВрддрд░рдг рд╕реВрддреНрд░ рдЖрд░рдЬреАрдмреА -> рдПрдЪрдПрд╕рдПрд▓ рдФрд░ рдПрдЪрдПрд╕рдПрд▓ -> рдЖрд░рдЬреАрдмреА рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ .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 рдХреЗрд╡рд▓ рдмрд┐рдЯрдореИрдк рдлрд╝реЙрдиреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ Hiero Bitmap рдлрд╝реЙрдиреНрдЯ рдЬрдирд░реЗрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рд╕рдВрд╕реНрдХрд░рдг 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(); 

рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рди


Box2d рдХрд╛ рдЙрдкрдпреЛрдЧ рднреМрддрд┐рдХ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред


рджрд┐рд▓ рдХреЗ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдФрд░ рднреМрддрд┐рдХ рдореЙрдбрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ 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); 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣рд╛рдБ рднреА рдиреБрдХрд╕рд╛рди рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ .ogg рдкреНрд░рд╛рд░реВрдк рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИрдВ рдФрд░ 96 kBit / s рдмрд┐рдЯрд░реЗрдЯред


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


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


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рджрд┐рд▓реЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ data/words.txt рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд┐рдирд╛ рд░реАрдХреИрдкрд┐рд▓реЗрд╢рди рдХреЗ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рд╕реНрд░реЛрдд рдФрд░ рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп




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


All Articles