Java 需要青蛙型游戏的帮助吗
我正在制作一款蛙人类型的游戏,在让程序实现我想要的功能方面已经取得了相当大的进展。然而,我开始认为,为了完成游戏,我必须使用大量的代码,并且必须有一种更简单的方法来实现相同的结果。我不是在寻找答案,只是需要更多的信息 问题1:对于表示移动图标或汽车的图像,我可以使用什么?我目前正在使用JButtons。问题是很难让按钮均匀移动,我想使用24个不同的移动图标,根据我到目前为止学到的知识,我必须为每个图标添加一个新的JButton 问题2:我移动Jbutton图标的方法是使用计时器延迟,然后使用计数器来增加x值。这在很大程度上是可行的,但是有没有更好、更简单的方法在屏幕上移动图标呢 非常感谢任何提示、教程等 下面是我创建的用于获取图标移动的类之一:Java 需要青蛙型游戏的帮助吗,java,Java,我正在制作一款蛙人类型的游戏,在让程序实现我想要的功能方面已经取得了相当大的进展。然而,我开始认为,为了完成游戏,我必须使用大量的代码,并且必须有一种更简单的方法来实现相同的结果。我不是在寻找答案,只是需要更多的信息 问题1:对于表示移动图标或汽车的图像,我可以使用什么?我目前正在使用JButtons。问题是很难让按钮均匀移动,我想使用24个不同的移动图标,根据我到目前为止学到的知识,我必须为每个图标添加一个新的JButton 问题2:我移动Jbutton图标的方法是使用计时器延迟,然后使用计数
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
}
}
公共类EnemyJPanel扩展JButton{
JButton enem=新JButton();
JButton enem12=新JButton();
JButton enem13=新JButton();
JButton enem1=新JButton(“1”);
JButton enem2=新JButton(“2”);
JButton enem3=新JButton(“3”);
JButton enem4=新JButton(“4”);
JButton分数=新JButton(“分数”);
JButton enem5=新JButton(“5”);
JButton enem6=新JButton(“6”);
JButton enem7=新JButton(“7”);
JButton enem8=新JButton(“8”);
JButton码=新JButton(“50码线”);
int i=16;
INTU=576;
int d=16;
int n=576;
int k=16;
int l=16;
int dummyval=16;
公共EnemyJPanel(){
超级();
setLayout(空);
enem1.立根数(16300,40,55);
enem2.立根(16245,40,55);
enem3.立根(16190,40,55);
enem4.立根(16135,40,55);
分数.挫折(16,80601,55);
场地立根(1635601,55);
enem5.立根(16410,40,55);
enem6.立根(16465,40,55);
enem7.立根(16520,40,55);
enem8.立根(16575,40,55);
enem12.立根(16300,40,55);
enem13.立根(16300,40,55);
添加(enem1);
添加(enem2);
添加(enem3);
添加(enem4);
加(分);
}
公共无效附录(){
enem1.立根数(16300,40,55);
enem2.立根(16245,40,55);
enem3.立根(16190,40,55);
enem4.立根(16135,40,55);
分数.挫折(16,80601,55);
添加(enem1);
添加(enem2);
添加(enem3);
添加(enem4);
加(分);
}
public void enemyMovement(){
i++;u--;d++;n--;//从中的计时器增加横向移动
dummyval++;//保持图标循环需要伪值
dummyval=dummyval+2;
enem1.立根(i,300,40,55);
i=i+2;
如果(dummyval>176){
k++;k=k+2;
enem12.立根(k,300,40,55);
}
如果(k>176){
l++;
l=l+2;
enem13.立根(l,300,40,55);
}
enem2.立根(u,245,40,55);
enem3.立根(d,190,40,55);
enem4.立根(n,135,40,55);
enem5.立根(i,410,40,55);
enem6.立根(u,465,40,55);
enem7.立根(d,520,40,55);
enem8.立根(n,575,40,55);
如果(i>576){//重置按钮
i=16;
}
如果(k>576){
k=16;
}
if(u<16){
u=576;
}
u=u-2;//增加横向速度
如果(d==576){
d=16;
}
如果(n<16){
n=576;
}
n=n-5;//增加横向速度
}
}
问题的产生是因为您试图单独管理所有“东西”。看起来您可能丢失了有关的一些基本信息
首先,我将创建一个自定义类,类似
class ButtonObject extends JButton
{
public ButtonObject(String text, int x, int y, int width, int height)
{
super(text);
this.setBounds(x, y, width, height);
}
}
您可能还想查看并创建新ButtonObject的数组
将帮助您通过阵列中的所有对象
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);
}
ButtonObject[]敌人=新的ButtonObject[10];
对于(int i=0;i<10;i++)
{
String text=String.valueOf(i);
int y=300-(i*55);
敌人[i]=新按钮对象(文本,16,y,40,55);
}
可能有一种比按钮更好的方法,但为了简单起见,您现在可能想继续使用按钮。我已经尝试过类似的数组;但是,我无法添加JButton。该方法允许我这样做吗?只要该方法必须对变量赋值并且不是静态方法(带有关键字
static
的方法),那么该方法就不会限制变量赋值