模拟龟兔赛跑
要求:用图形用户界面实现。能设置比赛时间,马匹的数量等等。在任意时间段内马匹的速度是随机的。开始比赛之后以动画显示赛马过程。提示:使用多线程需要源代码发qq邮箱38033...
要求: 用图形用户界面实现。 能设置比赛时间,马匹的数量等等。 在任意时间段内马匹的速度是随机的。 开始比赛之后以动画显示赛马过程。 提示:使用多线程
需要源代码
发qq邮箱380337103 展开
需要源代码
发qq邮箱380337103 展开
3个回答
展开全部
import java.awt.*;
import java.awt.event.*;
public class Competition extends Frame implements Runnable{
int BeginX=200,EndX=400;//起点和重点
int RabbitX =200,RabbitY=100;//兔子的坐标
int TortoiseX =200,TortoiseY=200;//乌龟的坐标
int RabbitRest =800,TortoiseRest =50;//休息时间 兔子更久
int RSpeed =15,TSpeed=1;//各自的速度
int state =0;//比赛状态 0表示正在进行中 1表示兔子win 2表示乌龟win
Thread rabbit,tortoise;//声明龟兔两条线程
public Competition(){
super("龟兔赛跑");
setBounds(100,100,500,600);
setVisible(true);
rabbit = new Thread(this,"rabbit");
tortoise = new Thread(this,"tortoise");//初始化两线程
rabbit.start();
tortoise.start();//两线程处于就绪状态
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g){
g.drawString("tortoise", TortoiseX, TortoiseY);
g.drawString("rabbit", RabbitX, RabbitY);
g.setColor(Color.red);
for(int j=70;j<230;j+=10)
g.drawString("|",EndX+8,j);
g.setColor(Color.black);
if(state==1)
g.drawString("Rabbit win", 250, 300);
else if(state ==2)
g.drawString("Tortoise win", 250, 300);
}
public void run(){
String currentRunning;
while(state==0){
currentRunning = Thread.currentThread().getName();
if(currentRunning.equals("rabbit"))
{
try {
Thread.sleep((int)(Math.random()*RabbitRest));
} catch (InterruptedException e) {
e.printStackTrace();
}
RabbitX+=RSpeed;
}
else if(currentRunning.equals("tortoise"))
{
try {
Thread.sleep((int)Math.random()*TortoiseRest);
} catch (InterruptedException e) {
e.printStackTrace();
}
TortoiseX+=TSpeed;
}
if(RabbitX==EndX) state =1;
else if(TortoiseX==EndX) state=2;
repaint();
}}
public static void main(String args[]){
new Competition();
}
}
import java.awt.event.*;
public class Competition extends Frame implements Runnable{
int BeginX=200,EndX=400;//起点和重点
int RabbitX =200,RabbitY=100;//兔子的坐标
int TortoiseX =200,TortoiseY=200;//乌龟的坐标
int RabbitRest =800,TortoiseRest =50;//休息时间 兔子更久
int RSpeed =15,TSpeed=1;//各自的速度
int state =0;//比赛状态 0表示正在进行中 1表示兔子win 2表示乌龟win
Thread rabbit,tortoise;//声明龟兔两条线程
public Competition(){
super("龟兔赛跑");
setBounds(100,100,500,600);
setVisible(true);
rabbit = new Thread(this,"rabbit");
tortoise = new Thread(this,"tortoise");//初始化两线程
rabbit.start();
tortoise.start();//两线程处于就绪状态
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g){
g.drawString("tortoise", TortoiseX, TortoiseY);
g.drawString("rabbit", RabbitX, RabbitY);
g.setColor(Color.red);
for(int j=70;j<230;j+=10)
g.drawString("|",EndX+8,j);
g.setColor(Color.black);
if(state==1)
g.drawString("Rabbit win", 250, 300);
else if(state ==2)
g.drawString("Tortoise win", 250, 300);
}
public void run(){
String currentRunning;
while(state==0){
currentRunning = Thread.currentThread().getName();
if(currentRunning.equals("rabbit"))
{
try {
Thread.sleep((int)(Math.random()*RabbitRest));
} catch (InterruptedException e) {
e.printStackTrace();
}
RabbitX+=RSpeed;
}
else if(currentRunning.equals("tortoise"))
{
try {
Thread.sleep((int)Math.random()*TortoiseRest);
} catch (InterruptedException e) {
e.printStackTrace();
}
TortoiseX+=TSpeed;
}
if(RabbitX==EndX) state =1;
else if(TortoiseX==EndX) state=2;
repaint();
}}
public static void main(String args[]){
new Competition();
}
}
追问
你的程序是没错,可是不符合问题里面的具体要求啊,我没办法交差啊!
追答
你修改几处就好了 你再想想。我现在也赶呢。要有时间就给你做了。
随机速度 你可以用 Math.random()*HSpeed;
用个循环创造线程,可以用Scanner类读取键盘输入的数据。
展开全部
龟兔赛跑要马干什么
追问
看要求啊,是模拟龟兔赛跑,实际上程序是做赛马过程,这是我的JAVA程序设计作业,有能力的话帮帮忙啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
心态不对啊, 既然是作业就自己完成
有问题再问大家,怎么上来就要source code。
多学点吧,不要让自己以后后悔!
有问题再问大家,怎么上来就要source code。
多学点吧,不要让自己以后后悔!
追问
可是很急啊,我做了几天了都没有弄出来,下周一就要交源代码了,没办法了不是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询