猜拳游戏(java)

猜拳游戏

import java.util.Random;
import java.util.Scanner;
/*
请编写一个猜拳游戏
有个人 Tom ,设计他的成员变量,成员方法,可以让电脑猜拳
电脑每次都会随机生产0,1,2
0表示石头 1表示剪刀 2表示布
并要可以显示 Tom的输赢次数(清单),假定玩三次
*/
public class MoraGame {

    public static void main(String args[]){
        // 创建一个玩家对象
        Tom t = new Tom();
        // 用来记录最后输赢的次数

        int winCount = 0;
        // 创建一个二维数组,用来接收局数,Tom出拳情况以及电脑出拳情况
        int[][] arr1 = new int[3][3];
        int j = 0;

        // 创建一个一维数组,用来接收输赢情况
        String[] arr2 = new String[3];

        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++){
            // 获取玩家出的拳
            System.out.println("请输入你要出的拳(0-拳头, 1-剪刀, 2-布):");
            int num = scanner.nextInt();
            t.setTomGuessNum(num);
            int tomGuess = t.getTomGuessNum();
            arr1[i][j + 1] = tomGuess;

            // 获取电脑出的拳
            int comGuess = t.computerNum();
            arr1[i][j + 2] = comGuess;

            // 将玩家猜的拳与电脑做比较
            String win = t.vsComputer();
            arr2[i] = win;
            arr1[i][j] = t.count;

            // 对每一局的情况进行输出
            System.out.println("=============================");
            System.out.println("局数\t玩家的出拳\t电脑的出拳\t输赢的情况");
            System.out.println(t.count + "\t" + tomGuess + "\t\t" +
                    comGuess + "\t\t" + arr2[i]);
            System.out.println("=============================");
            System.out.println("\n\n");
            winCount = t.winCount(win);

        }
        // 对游戏的最终结果进行输出
        System.out.println("局数\t\t玩家的出拳\t电脑的出拳\t输赢的情况");
        for (int a = 0; a < arr1.length; a++){
            for (int b = 0; b < arr1[a].length; b++){
                System.out.print(arr1[a][b] + "\t\t");
            }

            System.out.print(arr2[a]);
            System.out.println();
        }
        System.out.println("你赢了" + winCount + "次");
    }
}

class Tom{
    // 玩家出拳的类型
    int tomGuessNum; //0,1,2
    // 电脑出拳的类型
    int comGuessNum; //0,1,2
    // 玩家赢的次数
    int winCountNum;
    // 比赛的次数
    int count = 1;  // 一共比赛3次


    public int computerNum(){
        Random r = new Random();
        comGuessNum = r.nextInt(3);
        return  comGuessNum;
    }

    /*
    *  设置玩家猜拳的数字的方法
    *  @para tomGuessNum
    * */
    public void setTomGuessNum(int tomGuessNum){
        if (tomGuessNum > 2 || tomGuessNum < 0){
            throw new IllegalArgumentException("数字输入错误");
        }
        this.tomGuessNum = tomGuessNum;
    }

    public int getTomGuessNum(){
        return tomGuessNum;
    }

    /*
    * 比较猜拳的结果
    * @return 玩家赢返回ture,否则返回false
    * */
    public String vsComputer(){
        //比较
        if (tomGuessNum == 0 && comGuessNum == 1){
            return "你赢了";
        }else if (tomGuessNum == 1 && comGuessNum == 2){
            return "你赢了";
        }else if (tomGuessNum == 2 && comGuessNum == 0){
            return "你赢了";
        }else if (tomGuessNum == comGuessNum){
            return "平手";
        }else return "你输了";
    }

    /*
    * 记录玩家赢的次数
    * @return
    * */
    public int winCount(String s){
        count++;
        if (s.equals("你赢了")){   // 统计赢的次数
            winCountNum++;
        }
        return  winCountNum;
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值