Пример как НЕ нужно писать код прицела для 2Д экшн

  1. private void inputKey()
  2. {
  3.  private void inputKey()
  4.  int keyStates=getKeyStates();
  5.  if((keyStates&FIRE_PRESSED)!=0)fire();
  6.  if((keyStates&GAME_A_PRESSED)!=0)changeTarget(2);
  7.  if((keyStates&GAME_B_PRESSED)!=0)changeTarget(1);
  8.  if((keyStates&GAME_C_PRESSED)!=0)changeTarget(3);
  9.  if((keyStates&GAME_D_PRESSED)!=0)changeTarget(4);
  10. }
  11. public void changeTarget(int changeTarg)
  12. {
  13. switch(changeTarg)
  14.  {//движение прицела по часовой стрелке
  15.  case 1: targetX=target.getX();
  16.  distX=tank1X-targetX;
  17.  distX2=distX*distX;
  18. //Квадраты интов для расчёта У
  19.  fireStr2=fireStr*fireStr;
  20.  distY2=fireStr2-distX2;
  21. //Выведение из квадрата и из double(буква D- значит double)
  22.  distYD=Math.sqrt(distY2);
  23.  distY=(int)distYD;
  24. //присвоение значения координатам прицела в зависимости от положения прицела относительно танка.
  25.  if((targetY<=tank1Y)&(targetX<tank1X))
  26.  {targetY=tank1Y-distY;
  27.  targetX=targetX+2;
  28.  target.setPosition(targetX,targetY);}else
  29.  {if((targetY<tank1Y)&(targetX>=tank1X))
  30. {targetY=tank1Y-distY;
  31.  targetX=targetX+2;
  32.  target.setPosition(targetX,targetY);}else{
  33.  if((targetY>=tank1Y)&(targetX>tank1X)){targetY=tank1Y+distY;
  34.  targetX=targetX-2;
  35.  target.setPosition(targetX,targetY);}else
  36.  {if((targetY>tank1Y)&(targetX<=tank1X))
  37.  {targetY=tank1Y+distY;
  38.  targetX=targetX-2;
  39.  target.setPosition(targetX,targetY);}}}}
  40.  break;
Метод обработки событий с клавиш, и первое задание метода движения прицела- по часовой стрелке.

Реклама

Мы в соцсетях

tw tg yt gt