【java】简单的猜拳小游戏

简单的猜拳小游戏
emmmmm
我居然水了这么长时间。。。。

/*
 * finger-guessing game
 * 作者:@wonder
 * 猜拳游戏
 * 0-石头
 * 1-剪子
 * 2-布
 * */
package com.company;
import java.util.Scanner;

public class FingerGuessing {
    static Scanner in = new Scanner(System.in);
    static final String InfoText = "" +
            "************************\n" +
            "这是一个猜拳游戏\n" +
            "请输入您的选择:\n" +
            "0:石头\n" +
            "1:剪子\n" +
            "2:布\n" +
            "************************\n";

    public static void main(String[] args) throws InterruptedException {
//        CheckRandom();
        while (true) {
            FingerGuessing game = new FingerGuessing();
            game.Start();

            System.out.println("现在输入1退出,输入其他重新游戏");
            if(in.nextLine().equals("1")){
                System.exit(0);
            }
        }
    }

    public void Start() throws InterruptedException {
        PrintInfoText();
        int cmdNum = GetCmdNum();
        Thread.sleep(1000);
        int computerNum = GetRandomNum();
        int result = Check(cmdNum, computerNum);
        Thread.sleep(2000);
        PrintResult(result);
    }

    private void PrintInfoText() {
        System.out.println(InfoText);
    }

    private int GetCmdNum() {
        int cmdNum = -1;
        Scanner in = new Scanner(System.in);
        while (true) {
            String cmdStr = in.nextLine();
            try {
                cmdNum = Integer.parseInt(cmdStr);
                if (cmdNum < 0 || 2 < cmdNum) {
                    throw new Exception();
                }
                System.out.printf("你的选择是:%s\n", NumToType(cmdNum));
                return cmdNum;
            } catch (Exception e) {
                System.out.println("请输入对应数字!");
            }
        }
    }

    private int GetRandomNum() {
        int x = (int) (Math.random() * 3);
        System.out.printf("计算机的选择是:%s\n",NumToType(x));
        return x;
    }

    //-1左边胜利,0平局,1右边胜利
    //玩家放左边
    private int Check(int numA, int numB) {
        if (numA == numB) return 0;
        if ((numA + 1) % 3 == numB) return -1;
        return 1;
    }

    private void PrintResult(int result) {
        String resultStr;
        switch (result) {
            case -1:
                resultStr = "你赢了!!!牛逼!!!";
                break;
            case 0:
                resultStr = "平局!!!";
                break;
            case 1:
                resultStr = "你输了!!!垃圾!!!";
                break;
            default:
                resultStr = "数字转为对应出招类型错误!";
                break;
        }
        System.out.println(resultStr+
                "\n************************");
    }

    private String NumToType(int x) {
        switch (x) {
            case 0:
                return "0:石头";
            case 1:
                return "1:剪子";
            case 2:
                return "2:布";
            default:
                System.out.println("数字转为对应出招类型错误!");
                System.exit(0);
                return "";
        }
    }

    public static void CheckRandom(String[] args) {
        FingerGuessing game = new FingerGuessing();

        int[] count = {0, 0, 0};
        for (int i = 0; i < 10000; i++) {
            int x = game.GetRandomNum();
            count[x]++;
        }
        System.out.printf("0:%d\n1:%d\n2:%d\n", count[0], count[1], count[2]);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值