人机猜拳游戏

人机猜拳:

用户类

@Setter
@Getter
public class Users {
    private String username;
    private int score;
    public int uFist(Scanner input){
        System.out.println("请出拳:1.剪刀 2.石头 3.布");
        int uchoose=input.nextInt();
        String uresult="";
        switch (uchoose) {
            case 1:uresult="剪刀";
                break;
            case 2:uresult="石头";
                break;
            case 3:uresult="布";
                break;
        }
        System.out.println(username+"出了"+uresult);
        return uchoose;
    }
}

电脑类

@Setter
@Getter
public class Computer {
    private String name;
    private int score;
    public int cFist(){
        int cchoose=(int)(Math.random()*3+1);
        String cresult="";
        switch (cchoose) {
            case 1:cresult="剪刀";
                break;
            case 2:cresult="石头";
                break;
            case 3:cresult="布";
                break;
        }
        System.out.println(name+"出了"+cresult);
        return cchoose;
    }

}

游戏类

public class Game {
   private static Scanner input;
   private static Users users;
   private static Computer computer;
   static  {
       users=new Users();
       computer=new Computer();
       input=new Scanner(System.in);//放静态代码块自动初始化
   }
    public void play() {
       String nextRound;
        do {
            cname();
            System.out.println("要开始猜拳吗?y/n");
            String answer = input.next();
            if ("n".equals(answer)) {
                System.out.println("程序退出");
                input.close();//释放资源
                return;
            }
            String answer1;
            int count = 0;
            do {
                count++;
                int userFist = users.uFist(input);
                int computerFist = computer.cFist();
                vsFist(userFist, computerFist);
                System.out.println("是否开始下一轮?y/n");
                answer1 = input.next();
            } while ("y".equals(answer1));
            //统计结果
            GuessResult(count);
            System.out.println("是否开始下一局?y/n");
            nextRound = input.next();
        }while("y".equals(nextRound));
        System.out.println("游戏退出");
        users.setScore(0);//每局新开始score得清零
        computer.setScore(0);
        input.close();
    }
    private void GuessResult(int count){
       String name=users.getUsername();
       String comname=computer.getName();
        System.out.println(name+" V  S "+comname);
        System.out.println("对战次数"+count);
        System.out.println("姓名\t得分");
        System.out.println(name+"\t"+users.getScore());//统计分数
        System.out.println(comname+"\t"+computer.getScore());
        if(users.getScore()>computer.getScore())
            System.out.println(name+"Win!!!");
        else if(users.getScore()<computer.getScore())
            System.out.println(comname+"Win!!!");
        else System.out.println("和局");

    }
    private void cname(){//最好封装起来,给电脑取名字的方法
        System.out.println("请选择你要对战的角色:1、刘备 2、关羽 3、张飞");
            int computername=input.nextInt();
            String name="";
            switch (computername) {
                case 1:name="刘备";
                    break;
                case 2:name="关羽";
                    break;
                case 3:name="张飞";
                    break;
            }computer.setName(name);
            //将computer name传过去
        System.out.println("你选择了和"+name+"对战");
        System.out.println("请输入你的角色名");
        String username=input.next();
        users.setUsername(username);
    }
    private void vsFist(int userFist,int computerFist){//判断出拳结果
        if((userFist-computerFist==1)||(userFist-computerFist==-2)){
            System.out.println(users.getUsername()+" win!!!");
            users.setScore(users.getScore()+1);
        }
        else if(userFist==computerFist){
            System.out.println("平局");
        }
        else {
        System.out.println(users.getUsername()+" loss!!!");
        computer.setScore(computer.getScore()+1);
    }
   }
}

玩游戏测试类

public class Test {
    public static void main(String[] args) {
        new Game().play();
    }
}
posted @ 2022-10-17 21:56  Liku007  阅读(41)  评论(0编辑  收藏  举报