Libgdx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╢реВрдиреНрдп рдкреНрд▓реЗрдпрд░ рдЧреЗрдо рдмрдирд╛рдирд╛

рд╡рд┐рдЪрд╛рд░



  1. рдЦреЗрд▓ рд╕реНрдерд╛рди - рдлреНрд░реЗрдо рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдЪреЗрдХрд░ рдХреНрд╖реЗрддреНрд░
  2. рдореМрдЬреВрджрд╛ рд╕реЗрд▓ рдкреНрд░рдХрд╛рд░:
    • рдЦрд╛рд▓реА рд╕реЗрд▓ - рд╕рдлреЗрдж
    • рджреАрд╡рд╛рд░ - рдХрд╛рд▓реА
    • рдЬрд╛рдирд╡рд░ - рд▓рд╛рд▓
    • рдкрдЧрдбрдгреНрдбреА рднреВрд░реА рд╣реИ
    • рдШрд░ рд╣рд░рд╛ рд╣реИ
  3. рдЬрд╛рдирд╡рд░ рдХреА рдЧрддрд┐ рдПрдХ рдЧреИрд░-рд▓реБрдкреНрдд рд╣реЛрддреА рд░рд╛рд╣ рдЫреЛрдбрд╝рддреА рд╣реИ
  4. рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдПрдХ рднреВрд▓рднреБрд▓реИрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ
  5. рдЬрд╛рдирд╡рд░ рдкрдбрд╝реЛрд╕реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд▓рддреЗ рд╕рдордп рдПрдХ рдирдХреНрд╢рд╛ рдмрдирд╛рддрд╛ рд╣реИ
  6. рдЪрд▓рддреЗ рд╕рдордп, рдЬрд╛рдирд╡рд░ рдЙрди рддрд╛рдХрддреЛрдВ рдХрд╛ рд╕реЗрд╡рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдШрд░ (+5) рдпрд╛ рдХрд┐рд╕реА рд╕реЗрд▓ (+1) рдкрд░ рдмрд╣рд╛рд▓ рд╣реЛрддреА рд╣реИрдВ
  7. рдПрдХ рдЯрдХреНрдХрд░ рдореЗрдВ, рдЬрд╛рдирд╡рд░реЛрдВ рдХреЛ рдЭреБрдВрдбреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдШрд░реЛрдВ рдХреЛ рдкрдбрд╝реЛрд╕реА рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЕрдЧрд░ рдХрдИ рдЬрд╛рдирд╡рд░ рдПрдХ рд╕рд╛рде рдШрд░ рдореЗрдВ рдЖрд░рд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдб рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ
  8. (рд▓рд╛рдЧреВ рдирд╣реАрдВ) рд╡рд┐рднрд┐рдиреНрди "рдХреБрд▓реЛрдВ" рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдпрд╛ рд▓рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП
  9. (рд▓рд╛рдЧреВ рдирд╣реАрдВ) рдкреНрд░рдЬрдирди рдХреЗ рджреМрд░рд╛рди рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдорд┐рд╢реНрд░рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (+ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди), рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЖрд╢рд╛рдЬрдирдХ рдкреНрд░рдЬрд╛рддрд┐ рдпреБрджреНрдзреЛрдВ рдореЗрдВ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧреА




Libgdx рдХреНрдпреЛрдВ?


рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛, ubuntu рдкрд░ рдШрд░реЗрд▓реВ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ win8 рдкрд░ рдЯреИрдмрд▓реЗрдЯ, java + рдЧреНрд░рд╣рдг рдмрдВрдбрд▓ рдиреЗ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред Libgdx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Android рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ



рдПрдХ рдЦреЗрд▓ рдХреА рдХрдЯрд╛рдИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:





рдкрд░рд┐рдгрд╛рдо:







рд╢реБрд░реБрдЖрдд



рдЧреНрд░рд╣рдг рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВ (libgdx рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)



SpriteBatch batch;//       OrthographicCamera camera;//    Texture texture;// (   png  -     )
      
      







рдмрдирд╛рдиреЗ () рд╡рд┐рдзрд┐ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЖрд░рдВрдн рдХрд░реЗрдВ:



 batch = new SpriteBatch(); batch.disableBlending(); camera = new OrthographicCamera(FIELD_SIZE, FIELD_SIZE);
      
      







рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝реЗрдВ:



 public static final int FIELD_SIZE = 51;// ( ) public static float UPDATE_TIME = 0.001f;//  "" 
      
      







рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд╕реЗрд▓ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред



 public abstract class Cell { public Color color; Sprite sprite; public Cell(Texture texture, Color color){ this.color = color; sprite = new Sprite(texture); sprite.setColor(color); sprite.setSize(1, 1); } public abstract void update(Cell[][] map, int x, int y, Texture texture); public void setColor(Color color){ this.color = color; sprite.setColor(color); } public void draw(SpriteBatch batch,int x, int y){ sprite.setPosition(x-Main.FIELD_SIZE/2-sprite.getWidth()/2, y-Main.FIELD_SIZE/2-sprite.getHeight()/2); sprite.draw(batch); } }
      
      







рддреБрд░рдВрдд рдЗрд╕рдХреЗ рджреЛ рд╡рд╛рд░рд┐рд╕ рджреАрд╡рд╛рд░ рдФрд░ рдЦрд╛рд▓реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред



 public class Wall extends Cell { public Wall(Texture texture) { super(texture, new Color(0f, 0f, 0f, 1)); } @Override public void update(Cell[][] map, int x, int y, Texture texture) { } } public class Empty extends Cell { public Empty(Texture texture) { super(texture, new Color(1, 1, 1, 1)); } @Override public void update(Cell[][] map, int x, int y, Texture texture) { } }
      
      







рдЕрдм рдЖрдкрдХреЛ рдПрдХ рднреВрд▓рднреБрд▓реИрдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдореИрдВрдиреЗ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдЧреЗрдЯрдореЗрдЬрд╝реЗрдиреЗрдЯрд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдЧреЗрдЯрдореИрдЬрд╝ (рдЗрдВрдЯ рд╕рд╛рдЗрдЬрд╝) рд╡рд┐рдзрд┐ рд╕реЗ рдЪреБрдирд╛ рд╣реИ рдЬреЛ рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рд╢реВрдиреНрдп рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рджреЗрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ 0 рдПрдХ рдЦрд╛рд▓реА рд╕реЗрд▓ рд╣реИ, 1 рдПрдХ рджреАрд╡рд╛рд░ рд╣реИред



рдЦреЗрд▓ рдореИрджрд╛рди рдХреЛ рдПрдХ рд╕рд░рд▓ рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:



 Cell[][] map;
      
      







рдлрд╝реАрд▓реНрдб рдмрдирд╛рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



 map = new Cell[FIELD_SIZE][FIELD_SIZE]; texture = new Texture(Gdx.files.internal("tile.png"));//    char[][] bmap = (new MazeGenerator()).getMaze(FIELD_SIZE - 1); for (int i = 0; i < FIELD_SIZE; i++) for (int j = 0; j < FIELD_SIZE; j++) { if (bmap[i][j] == 0) map[i][j] = new Empty(texture); if (bmap[i][j] == 1) map[i][j] = new Wall(texture); }
      
      







рдЕрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рднреВрд▓рднреБрд▓реИрдпрд╛ рд╣реИред рдЖрдк рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдВрдпреЛрдЬрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред







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



рдЬрд╛рдирд╡рд░



рдпрд╣ рджреБрдирд┐рдпрд╛ рдХреЛ рдЬреАрд╡рди рд╕реЗ рднрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред



рдПрдХ рд╕реЗрд▓ рд╡рдВрд╢рдЬ рдмрдирд╛рдПрдБ:



 public class Unit extends Cell { Cell[][] my_map = new Cell[3][3];// ,      float update_time = Main.UPDATE_TIME;//  int mapX = 1, mapY = 1;//     Vector<Action> queue = new Vector<Action>();//    enum Action { left, right, up, down//  } public Unit(Texture texture, Cell[][] map, int x, int y) { super(texture, new Color(1f, 0, 0, 1)); for (int i = x - 1; i <= x + 1; i++) for (int j = y - 1; j <= y + 1; j++) my_map[i - x + 1][j - y + 1] = map[i][Main.FIELD_SIZE - j - 1]; my_map[1][1] = this; homeX = 1; homeY = 1; } private int goRight(Cell[][] map, int x, int y, Texture texture) {...}//map - ,   , x,y -     private int goLeft(Cell[][] map, int x, int y, Texture texture) {...} private int goUp(Cell[][] map, int x, int y, Texture texture) {...} private int goDown(Cell[][] map, int x, int y, Texture texture) {...}
      
      







рдореИрдВ рдкреЛрд╕реНрдЯ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреВрд░реА рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рджреАред



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



рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ:



 private int goRight(Cell[][] map, int x, int y, Texture texture) {...}//map - ,    private int goLeft(Cell[][] map, int x, int y, Texture texture) {...}//x,y -     private int goUp(Cell[][] map, int x, int y, Texture texture) {...} private int goDown(Cell[][] map, int x, int y, Texture texture) {...}
      
      







рдПрдХ "рдЪрд░рдг" рдореЗрдВ рдХрдИ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред





рдорд╛рд░реНрдЧ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдПрдХ рддрд░рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ рдЬреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЦрд╛рд▓реА рд╕реЗрд▓ рдореЗрдВ рдорд╛рд░реНрдЧ рдмрдирд╛рддрд╛ рд╣реИ

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ WavePath рд╡рд░реНрдЧ рдЬреЛрдбрд╝рд╛:



 public static Vector<Action> getPath(Cell[][] my_map, int x, int y, int nx,int ny){...}
      
      







рдпрд╣ рд╡рд┐рдзрд┐ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪрдпрдирд┐рдд рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдгреЛрдВ рдХрд╛ рдХреНрд░рдо рджреЗрддреА рд╣реИред



рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢



рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдпрд╣ рд╕рдм рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдФрд░, рдорд╛рдирдЪрд┐рддреНрд░ рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рдХрд░рдХреЗ, рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ



 @Override public void render() { this.update();//  Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(camera.combined); batch.begin(); for (int i = 0; i < FIELD_SIZE; i++) for (int j = 0; j < FIELD_SIZE; j++) if(!(map[i][j] instanceof Wall))//       map[i][j].draw(batch, i, j); batch.end(); } public void update() { Input input = Gdx.input; for (int i = 0; i < FIELD_SIZE; i++) for (int j = 0; j < FIELD_SIZE; j++) map[i][j].update(map, i, j, texture);// if(input.isKeyPressed(Input.Keys.W))// , , ,  camera.zoom-=Gdx.graphics.getDeltaTime(); if(input.isKeyPressed(Input.Keys.S)) camera.zoom+=Gdx.graphics.getDeltaTime(); if(input.isKeyPressed(Input.Keys.Q)) camera.rotate(Gdx.graphics.getDeltaTime()*90); if(input.isKeyPressed(Input.Keys.E)) camera.rotate(-Gdx.graphics.getDeltaTime()*90); if(input.isKeyPressed(Input.Keys.CONTROL_LEFT)) UPDATE_TIME+=Gdx.graphics.getDeltaTime(); if(input.isKeyPressed(Input.Keys.SHIFT_LEFT)) UPDATE_TIME-=Gdx.graphics.getDeltaTime(); if(input.isKeyPressed(Input.Keys.LEFT)) camera.translate(new Vector2(-Gdx.graphics.getDeltaTime()*50,0)); if(input.isKeyPressed(Input.Keys.RIGHT)) camera.translate(new Vector2(Gdx.graphics.getDeltaTime()*50,0)); if(input.isKeyPressed(Input.Keys.UP)) camera.translate(new Vector2(0,Gdx.graphics.getDeltaTime()*50)); if(input.isKeyPressed(Input.Keys.DOWN)) camera.translate(new Vector2(0,-Gdx.graphics.getDeltaTime()*50)); if(input.isKeyPressed(Input.Keys.SPACE)){//  UPDATE_TIME = 1f; camera = new OrthographicCamera(FIELD_SIZE, FIELD_SIZE); } camera.update(); if (input.isTouched()) {//    float stepX = Gdx.graphics.getWidth() / FIELD_SIZE; float stepY = Gdx.graphics.getHeight() / FIELD_SIZE; float x = input.getX(); float y = input.getY(); for (int i = 0; i < FIELD_SIZE; i++) for (int j = 0; j < FIELD_SIZE; j++) { if (x >= stepX * i && x <= stepX * (i + 1) && y >= stepY * j && y <= stepY * (j + 1)) if (map[i][FIELD_SIZE - j - 1] instanceof Empty) map[i][FIELD_SIZE - j - 1] = new Unit(texture, map, i, j); } } }
      
      







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



рдореИрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рдкреВрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдирд╣реАрдВред рдЧреАрдереВрдм рдкрд░ рд╕реВрддреНрд░ред



рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдЕрдЧрд▓реА рдХрдбрд╝реА рд▓рд┐рдЦреВрдВрдЧрд╛ред



All Articles