利用控制台实现的猜拳游戏

利用控制台实现的猜拳游戏

人和电脑互相猜拳 (石头,剪刀,布)

游戏规则:

玩家可以从多名角色中选取一名角色(刘备 孙权 曹操)

选取角色后轮流猜拳

猜拳后比较结果,可以选择是否继续游戏

如果退出游戏,显示游戏结果统计列表:

包含总局数,玩家的输赢局数,以及胜率

最后根据胜负对玩家

用户类

package fist;

import java.util.Scanner;

/**
 * ClassName User
 *
 * @Description: TODO
 * @Author 我喜欢蒋邵祁
 * @Date 2020/8/1  10:52
 * @Version 1.0
 */
public class User {
    private String name;
    private String type;
    private Data data;


    public User(){

    }

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }



    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type= type;
    }



    public void input(){
        System.out.println("请输你的选择");
        System.out.println("1.剪刀");
        System.out.println("2.石头");
        System.out.println("3.布");
        Scanner scanner = new Scanner(System.in);
        String a = scanner.next();
        if(a.equals("1")){
            this.setType("剪刀");
        }
        else if(a.equals("2")){
            this.setType("石头");
        }
        else if(a.equals("3")){
            this.setType("布");
        }
        else {
            System.out.println("你的输入有误,请重新输入");
            input();
        }
    }

    public void list(){
        System.out.println("----------------战绩列表-------------");
        System.out.println("你的姓名:"+this.getName());
        System.out.println("总场次:"+this.getData().getNum()+"场");
        System.out.println("胜场:"+this.getData().getWin()+"场");
        System.out.println("败场:"+this.getData().getLost()+"场");
        System.out.println("平局:"+this.getData().getSame()+"场");
        System.out.println("胜率"+(int)(this.getData().winRate()*100)+"%");
    }
}

电脑用户类

package fist;

import java.util.Random;

/**
 * ClassName ComputerUser
 *
 * @Description: TODO
 * @Author 我喜欢蒋邵祁
 * @Date 2020/8/1  14:25
 * @Version 1.0
 */
public class ComputerUser {
    String type = null;

    public ComputerUser(){

    }

    public ComputerUser(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }


    public void computer() {
        Random random = new Random();
        int a = random.nextInt(3)+1;
        if(a==1){
            this.setType("剪刀");
        }
        if(a==2){
            this.setType("石头");
        }
        if(a==3){
            this.setType("布");
        }
    }
}

战绩列表类

package fist;

import java.text.DecimalFormat;

/**
 * ClassName Data
 *
 * @Description: TODO
 * @Author 我喜欢蒋邵祁
 * @Date 2020/8/1  14:11
 * @Version 1.0
 */
public class Data {
    private int num;
    private int win;
    private int lost;
    private int same;

    DecimalFormat df = new DecimalFormat("#.00");

    public Data(){

    }


    public Data(int num, int win, int lost) {
        this.num = num;
        this.win = win;
        this.lost = lost;
    }

    public int getSame() {
        return same;
    }

    public void setSame(int same) {
        this.same = same;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public int getWin() {
        return win;
    }

    public void setWin(int win) {
        this.win = win;
    }

    public int getLost() {
        return lost;
    }

    public void setLost(int lost) {
        this.lost = lost;
    }

    public Double winRate(){
        return Double.parseDouble(df.format(win*1.0/num));
    }

}

系统类

package fist;

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

/**
 * ClassName SystemMenu
 *
 * @Description: TODO
 * @Author 我喜欢蒋邵祁
 * @Date 2020/8/1  10:53
 * @Version 1.0
 */
public class SystemMenu {
    Scanner scanner = new Scanner(System.in);
    Random random = new Random();
    ComputerUser computerUser =new ComputerUser();
    User user1 = new User();
    Data data = new Data();

    public void start() {
        System.out.println("游戏开始-------猜拳");
        user1.input();//输入你剪刀石头布
        computerUser.computer();//电脑生成随机剪刀石头布
        compare();//比较是否成功赢得对手
        user1.list();//用户的对战结果统计列表
        continue1();//是否继续游戏
    }

    public void evaluate(User user1) {
        if(user1.getData().winRate()>0.8){
            System.out.println("你运气棒极了!");
        }
        else if(user1.getData().winRate()>0.6){
            System.out.println("你运气还算不错!");
        }
        else if(user1.getData().winRate()>0.4){
            System.out.println("你有点倒霉!");
        }
        else if(user1.getData().winRate()>0.2){
            System.out.println("你倒霉极了!");
        }
        else {
            System.out.println("千万别去买彩票!");
        }
    }


    public boolean isContinue(String str) {
        if(str.equals("yes")){
            return true;
        }
        else if(str.equals("no")){
            return false;
        }
        else {
            System.out.println("你得输入有误,请重新输入");
            continue1();
        }
        return false;
    }


    public void continue1(){
        System.out.println("是否继续游戏,yes or no");
        String  str = scanner.next();
        if(isContinue(str)){
            start();
        }
        else {
            evaluate(user1);
        }
    }


    public void menu() {
        System.out.println("1.刘备");
        System.out.println("2.孙权");
        System.out.println("3.曹操");
        String a = scanner.next();
        if(a.equals("1")){
            user1.setName("刘备");
            System.out.println("你当前角色为:"+user1.getName());
        }
        else if(a.equals("2")){
            user1.setName("孙权");
            System.out.println("你当前角色为:"+user1.getName());
        }
        else if(a.equals("3")){
            user1.setName("曹操");
            System.out.println("你当前角色为:"+user1.getName());
        }
        else {
            System.out.println("你的输入有误,请重新输入");
            menu();
        }
    }



    public void compare() {
        user1.setData(data);
        if(user1.getType().equals(computerUser.getType())){
            System.out.println(user1.getName()+":"+user1.getType());
            System.out.println("电脑:"+computerUser.getType());
            System.out.println("平局");
            user1.getData().setNum(user1.getData().getNum()+1);
            user1.getData().setSame(user1.getData().getSame()+1);
        }
        else if(user1.getType().equals("剪刀")&&computerUser.getType().equals("石头")){
            System.out.println(user1.getName()+":"+user1.getType());
            System.out.println("电脑:"+computerUser.getType());
            System.out.println("您输了");
            user1.getData().setNum(user1.getData().getNum()+1);
            user1.getData().setLost(user1.getData().getLost()+1);
        }
        else if(user1.getType().equals("石头")&&computerUser.getType().equals("布")){
            System.out.println(user1.getName()+":"+user1.getType());
            System.out.println("电脑:"+computerUser.getType());
            System.out.println("您输了");
            user1.getData().setNum(user1.getData().getNum()+1);
            user1.getData().setLost(user1.getData().getLost()+1);
        }
        else if(user1.getType().equals("布")&&computerUser.getType().equals("剪刀")){
            System.out.println(user1.getName()+":"+user1.getType());
            System.out.println("电脑:"+computerUser.getType());
            System.out.println("您输了");
            user1.getData().setNum(user1.getData().getNum()+1);
            user1.getData().setLost(user1.getData().getLost()+1);
        }
        else {
            System.out.println(user1.getName()+":"+user1.getType());
            System.out.println("电脑:"+computerUser.getType());
            System.out.println("您赢了");
            user1.getData().setNum(user1.getData().getNum()+1);
            user1.getData().setWin(user1.getData().getWin()+1);
        }
    }
}

测试类

package fist;

/**
 * ClassName Text
 *
 * @Description: TODO
 * @Author 我喜欢蒋邵祁
 * @Date 2020/8/1  10:54
 * @Version 1.0
 */
public class Text {
    public static void main(String[] args) {
        SystemMenu systemMenu =new SystemMenu();
        System.out.println("请选择一名角色");
        systemMenu.menu();
        systemMenu.start();
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值