第15周多线程_猜数字游戏

本文详细介绍了如何使用多线程技术实现一个猜数字游戏。通过创建独立的思考和反馈线程,提高游戏交互体验。同时,讨论了线程同步和通信的方法,确保游戏流程的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 用两个线程玩猜数字游戏,
 第一个线程负责随机给出1~100之间的一个整数,
 第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,
 第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。
 猜数之前,要求第二个线程要等待第一个线程设置好要猜测的数。
 第一个线程设置好猜测数之后,两个线程还要相互等待,
 其原则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;
 第一个线程给出提示后,等待给第二个线程给出猜测,如此进行,
 直到第二个线程给出正确的猜测后,两个线程进入死亡状态。

 */
import java.lang.Runnable;
import java.lang.Thread;
public class Example2 {

public static void main(String args[]) {
Number number = new Number();
number.giveNumberThread.start();
number.guessNumberThread.start();
}

}

class Number implements Runnable {

int realNumber, guessNumber, min = 0, max = 100, message;
final int SMALLER = -1, LARGER = 1, SUCCESS = 8;
Thread giveNumberThread, guessNumberThread;

Number() {
giveNumberThread = new Thread(this);
guessNumberThread = new Thread(this);

}

@Override
public  void run() {
// TODO Auto-generated method stub
      for (int count = 1; true; count++) 
      {
           if (Thread.currentThread() == giveNumberThread) 
           {
                   if (count == 1)
                   {
                       realNumber = (int) (Math.random() * 100) + 1;
                       System.out.println("随机给你一个数为"+realNumber+",猜猜是多少");
                   } 
                   else {
                           if (realNumber > guessNumber) {
                                  message = SMALLER;
                                  System.out.println("你猜小了");
                                  } 
                           else if (realNumber < guessNumber) {
                           message = LARGER;
                          System.out.println("你猜大了");
                   } 
            else {
                  message = SUCCESS;
                  System.out.println("恭喜,你猜对了");
                     return;
                 }
         }
      try {
              Thread.sleep(1500);
          } catch (Exception e) {

          }
      }
     if (Thread.currentThread() == guessNumberThread)
     {
        if (count == 1) {
           guessNumber = (min + max) / 2;
           System.out.println("我第" + count + "次猜这个数:" + guessNumber);
          } 
        else {
        if (message == SMALLER) {
        min = guessNumber;
        guessNumber = (min + max) / 2;
        System.out.println("我第" + count + "次猜这个数是"+ guessNumber);
       } 
        else if (message == LARGER) {
           max = guessNumber;
           guessNumber = (min + max) / 2;
           System.out.println("我第" + count + "次猜这个数是"+ guessNumber);
        } 
        else if (message == SUCCESS) {
        System.out.println("我成功了");
        return;
         }
    }
    try {
            Thread.sleep(1500);
        } catch (Exception e) {
    }
   }
}
}
}

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值