人机猜拳游戏

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{
        }
    }
}

Java人机猜拳互动游戏是一款基于Java编程语言开发的游戏,玩家可以与计算机进行猜拳对战。以下是一个简单的实现示例: 1. 首先,需要定义猜拳的手势,可以使用枚举类型来表示,例如: ```java enum Gesture { ROCK, PAPER, SCISSORS } ``` 2. 接下来,需要实现玩家和计算机的选择手势的逻辑。可以通过用户输入来获取玩家的选择,而计算机的选择可以通过随机数生成: ```java import java.util.Random; import java.util.Scanner; public class Player { private Gesture gesture; public void chooseGesture() { Scanner scanner = new Scanner(System.in); System.out.println("请选择手势(0-石头,1-剪刀,2-布):"); int choice = scanner.nextInt(); switch (choice) { case 0: gesture = Gesture.ROCK; break; case 1: gesture = Gesture.SCISSORS; break; case 2: gesture = Gesture.PAPER; break; default: System.out.println("无效的选择!"); chooseGesture(); } } public Gesture getGesture() { return gesture; } } public class Computer { private Gesture gesture; public void chooseGesture() { Random random = new Random(); int choice = random.nextInt(3); switch (choice) { case 0: gesture = Gesture.ROCK; break; case 1: gesture = Gesture.SCISSORS; break; case 2: gesture = Gesture.PAPER; break; } } public Gesture getGesture() { return gesture; } } ``` 3. 然后,需要实现判断胜负的逻辑。可以通过比较玩家和计算机的手势来确定胜负关系: ```java public class Game { private Player player; private Computer computer; public Game() { player = new Player(); computer = new Computer(); } public void play() { player.chooseGesture(); computer.chooseGesture(); Gesture playerGesture = player.getGesture(); Gesture computerGesture = computer.getGesture(); System.out.println("玩家选择:" + playerGesture); System.out.println("计算机选择:" + computerGesture); if (playerGesture == computerGesture) { System.out.println("平局!"); } else if ((playerGesture == Gesture.ROCK && computerGesture == Gesture.SCISSORS) || (playerGesture == Gesture.SCISSORS && computerGesture == Gesture.PAPER) || (playerGesture == Gesture.PAPER && computerGesture == Gesture.ROCK)) { System.out.println("玩家胜利!"); } else { System.out.println("计算机胜利!"); } } } public class Main { public static void main(String[] args) { Game game = new Game(); game.play(); } } ``` 这样,一个简单的Java人机猜拳互动游戏就完成了。玩家可以通过输入数字选择手势,与计算机进行对战,并根据胜负情况进行输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值