需要有关蛙式游戏的帮助

时间:2013-11-21 22:45:55

标签: java

我正在创建一个蛙式游戏,并且已经让程序完成了我想做的事情。但是,我开始认为要完成游戏,我将不得不使用大量代码的方式,必须有一种更简单的方法来实现相同的结果。我不是在寻找答案,只是需要更多信息。

问题1:我可以将哪些图像用于代表移动图标或汽车的图像?我目前正在使用JButtons。问题是难以让按钮均匀移动,我想使用24个不同的移动图标,从我到目前为止学到的东西,我将不得不为每个图标添加一个新的JButton。

问题2:我获得Jbutton图标移动的方式是使用定时器延迟然后使用计数器来增加x值。这在大多数情况下都有效,但是有更好的,或许更简单的方法在屏幕上移动图标吗?

非常感谢任何提示,教程等。

这是我为了获得图标移动而创建的一个类:

public class EnemyJPanel extends JButton {

JButton enem = new JButton();
JButton enem12 = new JButton();
JButton enem13 = new JButton();
JButton enem1 = new JButton("1");
JButton enem2 = new JButton("2");
JButton enem3 = new JButton("3");
JButton enem4 = new JButton("4");
JButton score = new JButton("Score");
JButton enem5 = new JButton("5");
JButton enem6 = new JButton("6");
JButton enem7 = new JButton("7");
JButton enem8 = new JButton("8");
JButton yard = new JButton("50 Yard Line");
  int i = 16;
   int u = 576;
   int d = 16;
   int n = 576;
   int k = 16;
   int l = 16;
   int dummyval = 16;
public EnemyJPanel(){
    super();
      setLayout(null);
      enem1.setBounds(16,300,40,55);
      enem2.setBounds(16,245,40,55);
      enem3.setBounds(16,190,40,55);
      enem4.setBounds(16,135,40,55);
      score.setBounds(16,80,601,55);
      yard.setBounds(16,355,601,55);
      enem5.setBounds(16,410,40,55);
      enem6.setBounds(16,465,40,55);
      enem7.setBounds(16,520,40,55);
      enem8.setBounds(16,575,40,55);
      enem12.setBounds(16,300,40,55);
      enem13.setBounds(16,300,40,55);
      add(enem1);
      add(enem2);
      add(enem3);
      add(enem4);
      add(score);
}
public void addEnemy(){
     enem1.setBounds(16,300,40,55);
      enem2.setBounds(16,245,40,55);
      enem3.setBounds(16,190,40,55);
      enem4.setBounds(16,135,40,55);
      score.setBounds(16,80,601,55);
      add(enem1);
      add(enem2);
      add(enem3);
      add(enem4);
      add(score);
}
      public void enemyMovement(){ 
     i++;u--;d++;n--; // increments lateral movement from a timer in 
     dummyval++; // the dummy value is needed to keep the icons looping 
     dummyval = dummyval + 2;
     enem1.setBounds(i,300,40,55);
     i = i + 2;
     if (dummyval > 176){

     k++; k = k + 2;
         enem12.setBounds(k,300,40,55);
     }
     if (k > 176){
         l++;
         l = l + 2;
         enem13.setBounds(l,300,40,55);
     }
     enem2.setBounds(u,245,40,55);
     enem3.setBounds(d,190,40,55);
     enem4.setBounds(n,135,40,55);
     enem5.setBounds(i,410,40,55);
      enem6.setBounds(u,465,40,55);
      enem7.setBounds(d,520,40,55);
      enem8.setBounds(n,575,40,55);
     if(i > 576){ // resets button
         i = 16;
     }
     if(k > 576){
         k = 16;
     }
     if(u < 16){
         u = 576;
     }
     u = u - 2; // increase lateral speed
      if(d == 576) {
         d = 16;
     }
     if(n < 16){
         n = 576;
     }
     n = n - 5; //increases lateral speed


     }
 }

1 个答案:

答案 0 :(得分:2)

问题是因为您尝试单独管理所有“内容”而创建的。看起来您可能遗漏了classes的一些基本信息 首先,我会创建一个自定义类,如

class ButtonObject extends JButton
{
    public ButtonObject(String text, int x, int y, int width, int height)
    {
        super(text);
        this.setBounds(x, y, width, height);
    }
}

您还可以查看arrays并创建一个新的ButtonObject数组。

for loop将帮助您浏览阵列中的所有对象。

ButtonObject[] enemies = new ButtonObject[10];
for (int i = 0; i < 10; i++)
{
    String text = String.valueOf(i);
    int y = 300 - (i * 55);
    enemies[i] = new ButtonObject(text, 16, y, 40, 55);
}

可能有一种比按钮更好的方法,但为了简单起见,你可能想要坚持使用它们。