人机猜拳游戏

import java.util.Random;
import java.util.Scanner;

public class Homework14{
    public static void main(String[] args){
        
        //随机数使用方法
        // Random r = new Random();
        // System.out.println(r.nextInt(3));
        System.out.println("游戏开始,共进行5局猜拳");//提示游戏已开始
        Game myGuessGame = new Game();//给myGuessGame开空间
        myGuessGame.guessGame();//使用猜拳方法
        

           
    }
}
class Tom{//定义一个Tom类
    //用tomNum表示Tom出的拳
    int tomNum;
    //用winNum表示Tom赢得次数
    int winNum;
    //再用一个gameNum表示比赛的次数
    int gameNum;
    public Tom(int gameNum){//用构造器来定义比赛次数
        this.gameNum = gameNum;
    }
    
}
class Computer{//定义一个Computer类
    //用comNum表示电脑随机出的拳
    int comNum;
    //定义一个让电脑出拳的方法computerNum
    public int computerNum(){
        Random r = new Random();
        return r.nextInt(3);
    }

}
class Game{
    //创建一个猜拳游戏方法,用int的形式返回Tom赢的次数
    Scanner myScanner = new Scanner(System.in);
    Tom t = new Tom(5);//括号内表示玩家意愿的比赛次数
    Computer c = new Computer();
    //创建一个方法表示游戏规则
    public int gameRule(){//返回1表示赢,0表示平,-1表示输
           
        t.tomNum = myScanner.nextInt();//接收玩家出的拳
        c.comNum = c.computerNum();//接收电脑出的拳
        //以下将两者出的拳进行输赢判断(return100用来1.表示输入错误 2.避免方法无返回值)
        if (t.tomNum == 0){
            if (c.comNum == 0){
                return 0;
            }
            else if (c.comNum == 1){
                return 1;
            }
            else if (c.comNum == 2){
                return -1;
            }else{
                return 100;
            }
        }
        else if (t.tomNum == 1){
                if (c.comNum == 0){
                    return -1;
                }
                else if (c.comNum == 1){
                    return 0;
                }
                else if (c.comNum == 2){
                    return 1;
                }
                  else{
                    return 100;
                 }
        }
        else if (t.tomNum == 2){
                if (c.comNum == 0){
                    return 1;
                }
                if (c.comNum == 1){
                    return -1;
                }
                if (c.comNum == 2){
                    return 0;
                }
                else{
                    return 100;
                }
        }else{
            System.out.println("你输入有误,游戏结束");
            return 100;
        }

    }
    //创建游戏主执行方法
    public void guessGame(){        
        int temp ;//创建一个临时变量保存游戏结果
        int i;
        for( i = 1; i <= t.gameNum; i++){
            System.out.println("请出拳");
            temp = gameRule();//使用gameRule方法并将结果赋给temp
            if(temp == 100){//输入有误时
                break;
            }else if(temp == 1){//当玩家输入正确且赢时
                t.winNum++;
                System.out.println("===============\n出拳情况如下\n===============\n你出了" 
                                + t.tomNum + "\n电脑出了" + c.comNum + "\n===============");
             }else {//剩余情况(只可能是-1和0)时
                 System.out.println("===============\n出拳情况如下\n===============\n你出了" 
                                + t.tomNum + "\n电脑出了" + c.comNum + "\n===============");
             }
        }
        if (i == 6){
            System.out.println(t.gameNum + "局中,你赢了" + t.winNum + "局");
        }else{
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值