石头剪刀布游戏

实现石头剪刀布游戏用1-2-3表示石头-剪刀-布

用户每次输入一个数,电脑每次自动生成一个数,根据游戏规则判断输赢

三局两胜

注:调用了方法

代码实现如下:

主代码:

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

public class Day_02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rd = new Random();
        boolean isFlag = true;
        String Details = "石头剪刀布,使用1,2,3代表石头,剪刀,布,三局两胜制";
        while (isFlag) {
            System.out.println("-------欢迎来到石头剪刀布游戏-------");
            System.out.println("-----------请  选  择--------");
            System.out.println("          0.规     则");
            System.out.println("          1.开始游戏");
            System.out.println("          2.退     出");
            System.out.print("         请选择(0-2):");
            char selection = Utility2.readMenuSelection();
            switch (selection) {
                case '0':
                    System.out.println("-------------规     则-------------");
                    System.out.println(Details);
                    System.out.println("--------------------------------\n");
                    break;
                case '1':
                    System.out.println("------------开 始 游 戏------------");
                    while (true) {
                        int victory = 0, draw = 0, fail = 0;
                        int numbers = rd.nextInt(3) + 1;//机器人出拳随机数
                        System.out.println(numbers);
                        for (int i = 1; i <= 3; i++) {
                            System.out.println("请输入你出的第" + i + "拳:");
                            int num = sc.nextInt();
                            if (num > 3) {
                                System.out.println("出拳错误,请重新出拳");
                                i--;
                            } else if (num == 1) {
                                if (numbers == 1) {
                                    draw++;
                                } else if (numbers == 2) {
                                    victory++;
                                    if (victory == 2) {
                                        System.out.println("恭喜你赢了");
                                        break;
                                    }
                                } else {
                                    fail++;
                                    if (fail == 2) {
                                        System.out.println("很遗憾,你输了,下次努力!");
                                        break;
                                    }
                                }
                            } else if (num == 2) {
                                if (numbers == 1) {
                                    fail++;
                                    if (fail == 2) {
                                        System.out.println("很遗憾,你输了,下次努力!");
                                        break;
                                    }
                                } else if (numbers == 2) {
                                    draw++;
                                } else {
                                    victory++;
                                    if (victory == 2) {
                                        System.out.println("恭喜你赢了");
                                        break;
                                    }
                                }
                            } else {
                                if (numbers == 1) {
                                    victory++;
                                    if (victory == 2) {
                                        System.out.println("恭喜你赢了");
                                        break;
                                    }
                                } else if (numbers == 2) {
                                    fail++;
                                    if (fail == 2) {
                                        System.out.println("很遗憾,你输了,下次努力!");
                                        break;
                                    }
                                } else {
                                    draw++;
                                }
                            }
                        }
                        if (victory == 1 && draw == 1 && fail == 1 || draw == 3) {
                            System.out.println("棋逢对手");
                        }
                        if (victory == 1 && draw == 2) {
                            System.out.println("小胜一局");
                        }
                        if (draw == 2 && fail == 1) {
                            System.out.println("很遗憾,你输了");
                        }
                        break;
                    }
                case '2':
                    System.out.print("确认是否退出(Y/N):");
                    char isExit = Utility2.readConfirmSelection();
                    if(isExit == 'Y'){
                        isFlag = false;
                    }
                    break;
            }
        }
    }
}

调用的方法:

import java.util.Scanner;

public class Utility2 {
    private static Scanner sc = new Scanner(System.in);
    public static char readMenuSelection(){
        char c;
        for(; ; ){
            String str = readKeyBoard(1);
            c = str.charAt(0);
            if(c != '0' && c != '1' && c != '2'){
                System.out.print("选择错误,请重新输入");
            }else break;
        }
        return c;
    }
    public static char readConfirmSelection(){
        char c;
        for(; ; ){
            String str = readKeyBoard(1).toUpperCase();
            c = str.charAt(0);
            if(c == 'Y' || c == 'N'){
                break;
            }else {
                System.out.print("选择错误,请重新输入:");
            }
        }
        return c;
    }
    private static String readKeyBoard(int limit) {
        String line="";
        while (sc.hasNext()) {
            line = sc.nextLine();
            if(line.length()<1||line.length()>limit){
                continue;
            }
            break;
        }
        return line;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值