JAVA大神快来帮忙设计一个猜数字游戏,悬赏双手奉上~!!! 200

(一)课题内容利用Java多线程机制编写一个由三个线程玩猜数字的游戏。第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。要求每当第二或第三个线... (一)课题内容
利用Java多线程机制编写一个由三个线程玩猜数字的游戏。第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。要求每当第二或第三个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要求第二、第三个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,第二、第三个线程要轮流猜数,其原则是:第二或第三个线程给出自己的猜测后,等待第一个线程给出提示;第一个线程给出提示后,等待第二或第三个线程给出猜测,如此进行,直到其中一个线程给出正确的猜测后,三个线程均进入死亡状态。
(二)课题要求
基本要求:
1.熟悉使用Thread创建线程对象,通常使用的构造方法是:Thread(Runnable target);该构造方法中的参数是一个Runnable类型的接口。
2.熟悉线程同步的概念及方法,如wait(),notify(),notifyAll()等。
3.利用Java多线程机制编写一个由三个线程玩猜数字的游戏,第一个线程负责随机给出1~100之间的一个整数,第二、三个线程负责猜出这个数。
扩展要求:
1.给程序增加GUI设计,使程序具有更好的交互界面。
展开
 我来答
跌倒的砂糖橘dQ
2015-06-23 · TA获得超过626个赞
知道小有建树答主
回答量:1258
采纳率:71%
帮助的人:279万
展开全部
//因为时间的关系,就先没写界面了。
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();


}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Silent丶Cry
2015-06-23
知道答主
回答量:9
采纳率:0%
帮助的人:7.1万
展开全部
gui不会。。不过说白了。就是循环。。然后if else的事。。线程就是多跑几个就哦了呗。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2015-06-23 · TA获得超过366个赞
知道小有建树答主
回答量:1192
采纳率:32%
帮助的人:249万
展开全部
没问题50块带GUI的私信我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式