gpt4 book ai didi

java - 需要 Frog 类型游戏的帮助

转载 作者:行者123 更新时间:2023-12-02 06:30:18 25 4
gpt4 key购买 nike

我正在创建一个 Frog 类型的游戏,并且已经在让程序做我想做的事情方面取得了很大的进展。然而,我开始认为要完成游戏,我将不得不使用大量代码,并且必须有一种更简单的方法来达到相同的结果。我不是在寻找答案,只是需要更多信息。

问题 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


}
}

最佳答案

问题的产生是因为您试图单独管理所有“东西”。看来您可能缺少 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);
}

可能有比按钮更好的方法,但为了简单起见,您现在可能想坚持使用它们。

关于java - 需要 Frog 类型游戏的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20133499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com