人机交互小游戏猜拳

//裁判类,用于定义游戏规则什么的
public class Caipan {

    Person Person = new Person();//实例化一个人的对象
    Computer Computer = new Computer();//实例化电脑玩家对象
    int times = 0;//定义游戏次数
    Scanner sc = new Scanner(System.in);

    public void init() {
        System.out.println("出拳规则:1.剪刀 2.石头 3.布 ");//输出游戏规则
        System.out.println("请选择电脑角色(1:刘备 2:孙权 3:曹操)");
        while (true) {
            int number = sc.nextInt();//输入选择的电脑角色数字
            boolean flag = true;//定义flag初始值
            //如果输入其他数字则再次进入循环
            switch (number) {
                case 1 -> Computer.name = "刘备";//赋值给电脑名称
                case 2 -> Computer.name = "孙权";//赋值给电脑名称
                case 3 -> Computer.name = "曹操";//赋值给电脑名称
                default -> {
                    System.out.println("您输入的名字不正确请重新输入:");
                    flag = false;
                }
            }
            if (!flag) {
                continue;
            } else {
                break;
            }
        }
        System.out.println("请输入你的名称");
        String name = sc.next();
        Person.name = name;//将输入的名字赋值
    }

    public void start() {

        System.out.println("请问要开始游戏吗y/n");
        String s = sc.next();
        boolean flag = false;
        if (s.equalsIgnoreCase("y")) {
            flag = true;
        }else {
            flag = false;
            System.out.println("再见");
        }
        while (flag) {
            System.out.println("游戏分值规则:赢了,加一分,其余情况均不改变分值");
            System.out.println("请出拳:1.剪刀 2.石头 3.布");
            int PersonNumber = Person.showFist();
            //调用玩家出拳方法并取值
            int ComputerNumber = Computer.showFist();
            //调用电脑出拳方法并取值
            switch (PersonNumber) {
                case 1:
                    System.out.println(Person.name + "出拳:剪刀");
                    break;
                case 2:
                    System.out.println(Person.name + "出拳:石头");
                    break;
                case 3:
                    System.out.println(Person.name + "出拳:布");
                    break;
            }
            switch (ComputerNumber) {
                case 1:
                    System.out.println(Computer.name + "出拳:剪刀");
                    break;
                case 2:
                    System.out.println(Computer.name + "出拳:石头");
                    break;
                case 3:
                    System.out.println(Computer.name + "出拳:布");
                    break;
            }
            youxijieguo(PersonNumber, ComputerNumber);//调用游戏结果方法
            times++;//游戏次数加一
            System.out.println("你已经进行了" + times + "次游戏,是否继续? y/n");
            boolean chongxin=true;
            while (chongxin ) {
                String jixu = sc.next();
                if (jixu.equalsIgnoreCase("n")) {
                    chongxin=false;
                    flag = false;//玩家不想继续
                } else if (jixu.equalsIgnoreCase("y")) {
                    chongxin=false;
                    flag = true;

                } else {
                    System.out.println("请重新输入y或n");
                    chongxin=true;
                }
            }
        }

    }


    public void youxijieguo(int PersonNumber, int ComputerNumber) {
        //定义游戏结果方法
        if (PersonNumber == ComputerNumber) {//双方出拳一样
            System.out.println("平局,双方均不得分");
        } else if ((PersonNumber == 1 && ComputerNumber == 3) || (PersonNumber == 2 && ComputerNumber == 1)
                || (PersonNumber == 3 && ComputerNumber == 2)) {
            System.out.println("你赢了,很不错!");
            Person.score++;//玩家得分增加
        } else
            System.out.println("你输了,有点蠢");
        Computer.score++;//电脑得分增加
    }

    public void print() {//输出双方游戏所有信息
        System.out.println(Person.name +"\t\t\t"+ "VS" + "\t\t\t" + Computer.name);
        System.out.println("对站次数:" + times);
        System.out.println("姓名\t\t\t\t\t\t得分");
        System.out.println(Person.name + "\t\t\t\t\t\t" + Person.score);
        System.out.println(Computer.name + "\t\t\t\t\t\t" + Computer.score);
    }

    public void zuizhongjieguo() {//判断最终结果
        if (Person.score > Computer.score) {
            System.out.println("你赢了");
        } else if (Person.score == Computer.score) {
            System.out.println("平局");
        } else {
            System.out.println("你输了");
        }
    }

}

 //电脑玩家类

public class Computer {
    String name;// 定义电脑名字
    int score;// 定义电脑分数
    public int showFist () {
        //让计算机玩家随机出拳
        //依靠随机函数去实现
        int number = (int) (Math.random() * 3 + 1);
        //返回计算机玩家的出拳数值(在Game类中会根据返回的数值来判定计算机玩家的出拳)
        return number;
    }
}

//玩家类

public class Person {
    String name;//定义玩家姓名
    int score;// 定义玩家分数
    public int showFist(){//玩家出拳方法
        Scanner sc = new Scanner(System.in);
        int number=0;//定义返回的数字,确定出拳;
        boolean flag= true;//定义初始flag为真,死循环
        while (flag){
            int n= sc.nextInt();
            if ( n==1 || n==2 || n==3){//判断输入的值是否为1 2 3
                number=n;
                flag= false;//修改flag值,跳出while语句;
            }else {
                System.out.println("你输入的数值有误请重新输入");
            }

        }
        return number;//返回玩家的出拳结果
    }


}
public class Game {
    public static void main(String[] args) {
        System.out.println("---------------欢迎进入游戏世界----------------");
        System.out.println();
        System.out.println("---------------   猜拳游戏   ----------------");
        Caipan caipan= new Caipan();
        caipan.init();
        caipan.start();
        caipan.print();
        caipan.zuizhongjieguo();

    }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值