Java 如何显示我的小程序的单个移动?
我目前正在制作一个小程序,模拟龟兔赛跑。他们每个人都有各自的动作,随机挑选。我的小程序可以工作,但它只显示乌龟获胜的比赛结束。我希望它能像gif一样显示龟兔各自的动作 这是我的密码:Java 如何显示我的小程序的单个移动?,java,applet,Java,Applet,我目前正在制作一个小程序,模拟龟兔赛跑。他们每个人都有各自的动作,随机挑选。我的小程序可以工作,但它只显示乌龟获胜的比赛结束。我希望它能像gif一样显示龟兔各自的动作 这是我的密码: import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; import java.awt.Color; import java.awt.Font; public class Project2 extends Applet
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Color;
import java.awt.Font;
public class Project2 extends Applet
{
Image tortoise, hare;
int tortoiseXPos = 180, hareXPos = 180;
final int tortoiseYPos = 50, hareYPos = 400, SQUARE = 20;
int move;
public void init()
{
tortoise = getImage(getDocumentBase(), "tortoise.gif");
hare = getImage(getDocumentBase(), "hare.gif");
}
public void gameControl()
{
//1200 is finish line
while((tortoiseXPos < 1200) || (hareXPos < 1200))
{
move = (int)(Math.random() * 10);
tortoiseMoves(move);
hareMoves(move);
for(int i = 0; i < 10; i++)
{
delay();
}
}
}
public void paint(Graphics field)
{
drawField(field);
drawMove(field);
//Display winner when they get to the finish line
if(tortoiseXPos >= 1200)
{
field.setFont(new Font("Times New Roman", Font.ITALIC, 72));
field.drawString("Tortoise Wins", 650, 240);
}
else if(hareXPos >= 1200)
{
field.setFont(new Font("Times New Roman", Font.ITALIC, 72));
field.drawString("Tortoise Wins!!", 650, 240);
}
}
public void drawField(Graphics field)
{
setBackground(Color.green);
Font f = new Font("Times New Roman", Font.BOLD, 48);
field.setFont(f);
field.drawString("Tortoise", 0, 75);
field.drawString("Hare", 0, 425);
//fill alternating black and white rectangles
field.setColor(Color.black);
int x = 180;
for(int i = 0; i < 25; i++)
{
field.fillRect(x, 50, SQUARE, 50);
field.fillRect(x, 400, SQUARE, 50);
x += (SQUARE * 2);
}
field.setColor(Color.white);
x = 200;
for(int i = 0; i < 25; i++)
{
field.fillRect(x, 50, SQUARE, 50);
field.fillRect(x, 400, SQUARE, 50);
x += (SQUARE * 2);
}
}
public void clearMove(Graphics s)
{
}
public void drawMove(Graphics s)
{
gameControl();
s.drawImage(tortoise, tortoiseXPos, 50, this);
s.drawImage(hare, hareXPos, 400, this);
}
public void tortoiseMoves(int move)
{
//Moves for Tortoise
if(move <= 5)
{
tortoiseXPos += (3 * SQUARE);
}
else if(move <= 8)
{
tortoiseXPos += SQUARE;
}
else if(move <= 10)
{
tortoiseXPos -= (6 * SQUARE);
}
if(tortoiseXPos < 0)
{
tortoiseXPos = 0;
}
if(tortoiseXPos > 1200)
{
tortoiseXPos = 1200;
}
}
public void hareMoves(int move)
{
//Moves for Hare
if(move <= 2)
{
hareXPos += (9 * SQUARE);
}
if(move <= 5)
{
hareXPos += (SQUARE);
}
if(move <= 6)
{
hareXPos -= (SQUARE);
}
if(move <= 8)
{
hareXPos -= (2 * SQUARE);
}
if(move <= 10)
{
hareXPos = hareXPos;
}
if(hareXPos < 0)
{
hareXPos = 0;
}
if(hareXPos > 1200)
{
hareXPos = 1200;
}
}
public void delay()
{
//To see individual moves
for(int i = 0; i <= 90000000; i++)
{}
}
}
import java.applet.applet;
导入java.awt.Graphics;
导入java.awt.Image;
导入java.awt.Color;
导入java.awt.Font;
公共类Project2扩展了Applet
{
形象乌龟、野兔;
内特乌龟=180,黑龟=180;
最终整型乌龟位置=50,兔子位置=400,正方形=20;
int-move;
公共void init()
{
tortoise=getImage(getDocumentBase(),“tortoise.gif”);
hare=getImage(getDocumentBase(),“hare.gif”);
}
公共控制()
{
//1200是终点线
而((龟类<1200)| |(龟类<1200))
{
move=(int)(Math.random()*10);
乌龟(移动);
hareMoves(移动);
对于(int i=0;i<10;i++)
{
延迟();
}
}
}
公共空白绘制(图形字段)
{
抽油场(场);
拖运(场);
//当他们到达终点线时显示赢家
如果(乌龟数量>=1200)
{
field.setFont(新字体(“Times new Roman”,Font.ITALIC,72));
拉绳(“乌龟赢”,650,240);
}
否则如果(harexps>=1200)
{
field.setFont(新字体(“Times new Roman”,Font.ITALIC,72));
拉绳(“乌龟赢!!”,650,240);
}
}
公共空白绘图字段(图形字段)
{
挫折背景(颜色:绿色);
Font f=新字体(“Times new Roman”,Font.BOLD,48);
字段设置字体(f);
领域。拉绳(“乌龟”,0,75);
字段。抽绳(“兔子”,0425);
//交替填充黑白矩形
field.setColor(Color.black);
int x=180;
对于(int i=0;i<25;i++)
{
fillRect字段(x,50,平方,50);
fillRect字段(x,400,正方形,50);
x+=(平方*2);
}
field.setColor(Color.white);
x=200;
对于(int i=0;i<25;i++)
{
fillRect字段(x,50,平方,50);
fillRect字段(x,400,正方形,50);
x+=(平方*2);
}
}
公共无效清除移动(图形s)
{
}
公共空间移动(图形s)
{
gameControl();
s、 drawImage(乌龟,乌龟,50,本);
s、 drawImage(hare、hareXPos、400、this);
}
公共空陆龟(内移)
{
//乌龟的招式
如果(移动)将两个数组添加到你的类中,并存储每个参赛者的每个移动。然后,随着比赛的进行,在屏幕上“绘制”每个参赛者的分数。你总是看到“乌龟赢”,因为即使兔子赢了,你也总是画那个字符串。你需要写“兔子赢”相反,当兔子赢的时候。@ErwinBolwidt谢谢,我没有领会到我希望它们实时显示,而不是在最后显示。这样你可以看到小程序执行时乌龟和兔子在屏幕上四处移动。根据需要更新答案。基本上,在绘制下一步之前在数组中绘制点。你可以添加一个方法that获取数组并绘制点,然后在paint()方法中调用它。