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

рддреЛ, рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдПрдХ рдирдпрд╛ рддрд╛рд░рд╛рдордВрдбрд▓ рдФрд░ рдПрдХ рдирдпрд╛ рдорд╛рдзреБрд░реНрдп рд╣реИред рд╕рд┐рддрд╛рд░реЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдиреЛрдЯ рдЦреЗрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░, рдкрд╣рд▓реЗ рдЪрд╛рд░ рдиреЛрдЯреЛрдВ рдореЗрдВ рдЪрд╛рд░ рдФрд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рдХрд┐ рд╕реНрддрд░ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред
рд╣рдо libGDX рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗрдВрдЧреЗред рдореБрдЭреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рдЖрдпрд╛ред рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реАред рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
- рдЧреНрд░рд╣рдг
- Gradle
- Android рдПрд╕рдбреАрдХреЗ
- libGDX рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг
- рд╕рд┐рд░ + рд╣рд╛рде + рдзреИрд░реНрдп
рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдирд╛рдКрдВрдЧрд╛ред рдореЗрд░реЗ рд▓рд┐рдП gdx-setup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рддреЛ, рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ:
java -jar gdx-setup.jar
рдЕрдЧрд▓рд╛ рд╣рдо рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
- рдирд╛рдо: "рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдЧреАрдд"
- рдкреИрдХреЗрдЬ: "en.yoursite.songs_of_the_space"
- рдЧреЗрдо рдХреНрд▓рд╛рд╕: "рдорд╛рдпрдЧреЗрдо"
- рдЧрдВрддрд╡реНрдп: рдкрде / рд╕реЗ / рдЕрдкрдиреЗ / рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ / рдЧреАрдд_рдСрдл_рдереЗ_рд╕реНрдкреЗрд╕
- Android рдПрд╕рдбреАрдХреЗ: рдкрде / рд╕реЗ / рдЕрдкрдиреЗ / рдПрд╕рдбреАрдХреЗ
- libGDX рд╕рдВрд╕реНрдХрд░рдг: рд░рд╛рддреЗрдВ
- рдЙрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ: рдбреЗрд╕реНрдХрдЯреЙрдк, рдПрдВрдбреНрд░реЙрдЗрдб
- рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕: рдлрд╝реНрд░реАрдЯрд╛рдЗрдк
рдЬрдирд░реЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ
рдХрд░реЗрдВ рдФрд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж, рдЧреНрд░рд╣рдг рдкрд░ рдЬрд╛рдПрдВред
рдЧреНрд░рд╣рдг рдореЗрдВ,
рдЖрдпрд╛рдд -> рдЧреНрд░реЗрдбрд▓ -> рдЧреНрд░реЗрдбрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВ ред рдлрд┐рд░
рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ .. рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░
рдмрд┐рд▓реНрдб рдХрд░реЗрдВ ред рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░
рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ ред рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рддреБрд░рдВрдд рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ (
рдХреЛрд░ ) ->
MyGame.java рдкрд░ рдЬрд╛рдПрдВ ред рд╣рдордиреЗ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬреЛ
gdx рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛, рдФрд░ рд╣рдореЗрдВ
ApplicationAdapter рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐
рдЧреЗрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдирддреАрдЬрддрди, рд╡рд░реНрдЧ рдХреЛ рдлреЙрд░реНрдо рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:
public class MyGame extends Game { @Override public void create() { } @Override public void render() { super.render(); } }
рдЕрдЧрд▓рд╛ред рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ
рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВред рдФрд░ рдЗрд╕рдореЗрдВ рддреАрди рд╡рд░реНрдЧ рд╣реИрдВ:
- MainMenuScreen - рдЖрд╡реЗрджрди рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛
- LevelScreen - рд╕реНрддрд░реАрдп рдЪрдпрди рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛
- PlayScreen - рдЧреЗрдо рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛
рдЙрди рд╕рднреА рдХреЛ
рд╕реНрдХреНрд░реАрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЙрди рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдорд╛рд░реЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдореЗрдирдореЗрдиреНрд╕рд╕реНрдХреНрд░реАрди рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдмрдВрдж рдХрд░ рджреЗрдВред рд╣рдо рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public class MainMenuScreen implements Screen {
рдЕрдЧрд▓рд╛ред рд╣рдо рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ (Shift + Ctrl + O)ред рдФрд░ рдореБрдЦреНрдп рд╡рд░реНрдЧ
MyGame.java рдкрд░ рдЬрд╛рдПрдВ ред рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
public class MyGame extends Game {
? public class MyGame extends Game {
- '' '<>" \\ / + = () * рдФрд░ ;, {} \ред "; public class MyGame extends Game {
рд╣рдо рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░
рдкреНрд░рдмрдВрдзрдХреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдирд╛рдордХ рдПрдХ рдирдпрд╛
рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ
XMLparse.java рдХреНрд▓рд╛рд╕ рд╣реИред рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдлрд┐рд░, рд╣рдо xml рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдХрд┐рд╕ рд╕реНрддрд░ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд▓реЗрдВрдЧреЗред рд╡реИрд╕реЗ,
рдПрд╕реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ (
рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ -> рдПрд╕реЗрдЯреНрд╕ ) рдореЗрдВ рдПрдХ
рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВред рдЗрд╕рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░:
- рдЫрд╡рд┐рдпреЛрдВ
- рдлреЛрдВрдЯ
- рдЖрд╡рд╛рдЬрд╝
- рдПрдХреНрд╕рдПрдордПрд▓
рдлрд╝реЙрдиреНрдЯ рдХреЛ рдлрд╝реЙрдиреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред рдФрд░
xml рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ,
рд╕реНрддрд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ (F5) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░ рд╕рдХреЗред рдФрд░ рдЕрдм, рд╣рдорд╛рд░реЗ
XMLparse.java рд╡рд░реНрдЧ рдХреЛ рдЖрдмрд╛рдж рдХрд░реЗрдВред рд╣рдо рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public class XMLparse { public Array<String> XMLparseLevels() { Array<String> levels = new Array<String>(); Array<Integer> int_levels = new Array<Integer>(); FileHandle dirHandle; if (Gdx.app.getType() == ApplicationType.Android) { dirHandle = Gdx.files.internal("xml/levels"); } else { dirHandle = Gdx.files.internal(System.getProperty("user.dir") + "/assets/xml/levels");
рд╡реИрд╕реЗ рдХреНрдпрд╛? рдЪрд▓рд┐рдП рдЖрдЦрд┐рд░ LevelScreen.java рд╡рд░реНрдЧ рдХреЛ рдЖрдмрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ,
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдмрдирд╛рдПрдБ
-> xml -> рд╕реНрддрд░ рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде 1.xml, 2.xml рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдФрд░ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public class LevelScreen implements Screen { final MyGame game; private Stage stage; private Table table; private LabelStyle labelStyle; private TextButton level; private Array<String> levels; public LevelScreen(MyGame gam) { game = gam; stage = new Stage(new ScreenViewport()); Skin skin = new Skin(); TextureAtlas buttonAtlas = new TextureAtlas(Gdx.files.internal("images/game/images.pack")); skin.addRegions(buttonAtlas); TextButtonStyle textButtonStyle = new TextButtonStyle(); textButtonStyle.font = game.levels; textButtonStyle.up = skin.getDrawable("level-up"); textButtonStyle.down = skin.getDrawable("level-down"); textButtonStyle.checked = skin.getDrawable("level-up");
рд╡рд╛рд╣, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ (рдпрджрд┐ рдпрд╣ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ) рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ:
- PlayScreen рд╡рд░реНрдЧ рднрд░реЗрдВ
- рд╕реНрдЯрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ, рдиреЛрдЯреНрд╕ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЬреЛрдбрд╝реЗрдВред
рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЗрдВрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЕрджреНрдпрддрдирдореИрдВ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрддрдиреА рдЬрд▓реНрджреА рдореЗрдВ рдерд╛ рдХрд┐ рдореИрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧреАред рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реНрдЯреЗрдЬ рдХреНрд▓рд╛рд╕ (
рд╕реНрдЯреЗрдЬ ) рднреА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐
libGDX рд╕реНрдЯреЗрдЬ рдХрд╛ рд╡рдВрд╢рдЬ рд╣реЛрдЧрд╛ред рд╣рдо рдЕрдкрдиреЗ
рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ
PlayStage.java рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ:
public class PlayStage extends Stage { public PlayStage(ScreenViewport screenViewport) { super(screenViewport); }
рдЕрдм, LevelScreen рдореЗрдВ рд╣рдо рдХреНрд▓рд╛рд╕ рдкреНрд▓реЗрд╕реНрдЯреЗрдЬ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рд╕реНрдЯреЗрдЬ рдФрд░ рдХреЛрдИ рдФрд░ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдПрдХ рдФрд░ рдЬреЛрдбрд╝ред
рдЪрд▓реЛ рдкреНрд▓реЗрд╕реНрдХреНрд░реАрди рдХреНрд▓рд╛рд╕ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдЕрдиреНрдп рддрд░реАрдХреЗ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╢рдкрде рди рд▓реЗрдВред рдХреЛрдб:
public class PlayScreen implements Screen { final MyGame game;