
JAVA大神快来帮忙设计一个猜数字游戏,悬赏双手奉上~!!! 200
(一)课题内容利用Java多线程机制编写一个由三个线程玩猜数字的游戏。第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。要求每当第二或第三个线...
(一)课题内容
利用Java多线程机制编写一个由三个线程玩猜数字的游戏。第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。要求每当第二或第三个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要求第二、第三个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,第二、第三个线程要轮流猜数,其原则是:第二或第三个线程给出自己的猜测后,等待第一个线程给出提示;第一个线程给出提示后,等待第二或第三个线程给出猜测,如此进行,直到其中一个线程给出正确的猜测后,三个线程均进入死亡状态。
(二)课题要求
基本要求:
1.熟悉使用Thread创建线程对象,通常使用的构造方法是:Thread(Runnable target);该构造方法中的参数是一个Runnable类型的接口。
2.熟悉线程同步的概念及方法,如wait(),notify(),notifyAll()等。
3.利用Java多线程机制编写一个由三个线程玩猜数字的游戏,第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。
扩展要求:
1.给程序增加GUI设计,使程序具有更好的交互界面。 展开
利用Java多线程机制编写一个由三个线程玩猜数字的游戏。第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。要求每当第二或第三个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要求第二、第三个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,第二、第三个线程要轮流猜数,其原则是:第二或第三个线程给出自己的猜测后,等待第一个线程给出提示;第一个线程给出提示后,等待第二或第三个线程给出猜测,如此进行,直到其中一个线程给出正确的猜测后,三个线程均进入死亡状态。
(二)课题要求
基本要求:
1.熟悉使用Thread创建线程对象,通常使用的构造方法是:Thread(Runnable target);该构造方法中的参数是一个Runnable类型的接口。
2.熟悉线程同步的概念及方法,如wait(),notify(),notifyAll()等。
3.利用Java多线程机制编写一个由三个线程玩猜数字的游戏,第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。
扩展要求:
1.给程序增加GUI设计,使程序具有更好的交互界面。 展开
展开全部
//因为时间的关系,就先没写界面了。
import java.util.Random;
import java.util.Scanner;
class GuessNum implements Runnable{
int num=0;
public synchronized void guess(){
notify();
System.err.println(Thread.currentThread().getName()+"请输入你猜中的数字");
Scanner s=new Scanner(System.in);
int number=s.nextInt();
try {
if (number==num) {
System.err.println("猜对了--游戏结束");
System.exit(0);
}else if(number>num){
System.err.println("猜大了");
wait();
}else{
System.err.println("猜小了");
wait();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void initNum(){
try {
Random r=new Random();
num=r.nextInt(100)+1;
System.err.println("数字已准备好"+num);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
initNum();
}
}
class People1 implements Runnable{
public GuessNum guessNum;
@Override
public void run() {
try {
Thread.currentThread().sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true) {
guessNum.guess();
}
}
/**
* @Description: People1构造函数
* @param guessNum
*/
public People1(GuessNum guessNum) {
this.guessNum = guessNum;
}
}
class People2 implements Runnable{
public GuessNum guessNum;
@Override
public void run() {
try {
Thread.currentThread().sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
while (true) {
guessNum.guess();
}
}
/**
* @Description: People2构造函数
* @param guessNum
*/
public People2(GuessNum guessNum) {
this.guessNum = guessNum;
}
}
public class TestGuessNum {
public static void main(String[] args) {
GuessNum g=new GuessNum();
People1 p1=new People1(g);
People2 p2=new People2(g);
Thread t1=new Thread(p1);
Thread t2=new Thread(p2);
Thread t3=new Thread(g);
t1.setName("第一个人");
t2.setName("第二个人");
t3.setName("给出数字的人");
t3.setPriority(10);
t3.start();
t1.start();
t2.start();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
gui不会。。不过说白了。就是循环。。然后if else的事。。线程就是多跑几个就哦了呗。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没问题50块带GUI的私信我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询