猜拳游戏代码(java编写)

猜拳游戏

实现功能:
1.定义电脑类,玩家类
2.可以添加玩家,选择玩家进行游戏
3.游戏分为人机游戏和双人游戏两种模式
4.玩家可以设定每轮游戏局数,每局游戏均显示猜拳结果,系统根据结果为玩家积分,胜出玩家获得一积分。
5.每轮游戏结束,显示玩家积分,系统根据玩家积分判断玩家输赢。
6.每轮游戏结束,玩家可以继续开始新一轮游戏,也可以退出游戏。


//电脑类
class ComputerPlayer {
    private String name="电脑";
    private int score=0;
    public int guessing (){
        return (int)(Math.random()*3)+1;
    }
    public String getName() {
        return name;
    }
    public int getScore() {
        return score;
    }
    public void setScore() {
        score=0;
    }
    public void addScore() {
        score++;
    }
}
//玩家类
class People {
    private String name="";
    private int score=0;
    private static int number=0;
    People(){
        number++;
        name="玩家"+number;
    }
    People(String name){
        number++;
        this.name=name;
    }
    public int guessing(){
        Scanner sc=new Scanner(System.in);
        int result;
        System.out.println("请输入您的猜拳结果:(1.石头 2.剪刀 3.布)");
        result=sc.nextInt();
        return result;
    }
    public String getName() {
        return name;
    }
    public int getScore() {
        return score;
    }
    public void setScore() {
        score=0;
    }
    public void addScore() {
        score++;
    }
    public static int getNumber() {
        return number;
    }
}
//游戏类
class Game{

    //人机游戏
    public void peopleAndComputerPK(People person,ComputerPlayer computer){
        Scanner sc=new Scanner(System.in);
        boolean start=true;
        int startCount=0,count=0,startJudge=1;
        while(start){
            startCount++;
            person.setScore();
            computer.setScore();;
            System.out.println("请输入第"+startCount+"轮游戏局数:");
            count=sc.nextInt();
            int n=1;
            while(count-->0){
                int pResult,cResult,win;
                System.out.println("第"+n+++"局:");
                System.out.println("玩家出拳中......");
                pResult=person.guessing();
                System.out.println("电脑出拳中......");
                cResult=computer.guessing();
                win=judge(pResult,cResult);
                if(win==1){
                    person.addScore();
                }
                if(win==2){
                    computer.addScore();
                }
                result(person.getName(), pResult, computer.getName(), cResult, win);
            }
            int winAll=judgeAll(person.getScore(),computer.getScore());
            reaultAll(n-1, person.getName(), person.getScore(), computer.getName(), computer.getScore(), winAll);
            System.out.println("本轮游戏结束,是否进入下一轮游戏?(1.是 2.否 )");
            startJudge=sc.nextInt();
            if(startJudge==2){
                start=false;
            }
        }
        System.out.println("人机游戏结束!");
    }

    //双人游戏
    public void peopleAndPeoplePK(People person1,People person2){
        Scanner sc=new Scanner(System.in);
        boolean start=true;
        int startCount=0,count=0,startJudge=1;
        while(start){
            startCount++;
            person1.setScore();
            person2.setScore();
            System.out.println("请输入第"+startCount+"轮游戏局数:");
            count=sc.nextInt();
            int n=1;
            while(count-->0){
                int p1Result,p2Result,win;
                System.out.println("第"+n+++"局:");
                System.out.println(person1.getName()+"出拳中......");
                p1Result=person1.guessing();
                System.out.println(person2.getName()+"出拳中......");
                p2Result=person2.guessing();
                win=judge(p1Result,p2Result);
                if(win==1){
                    person1.addScore();
                }
                if(win==2){
                    person2.addScore();
                }
                result(person1.getName(), p1Result, person2.getName(), p2Result, win);
            }
            int winAll=judgeAll(person1.getScore(),person2.getScore());
            reaultAll(n-1, person1.getName(), person1.getScore(), person2.getName(), person2.getScore(), winAll);
            System.out.println("本轮游戏结束,是否进入下一轮游戏?(1.是 2.否 )");
            startJudge=sc.nextInt();
            if(startJudge==2){
                start=false;
            }
        }
        System.out.println("双人游戏结束!");
    }

    //判断猜拳胜负
    private static int judge(int first,int second){
        if(first==second){
            return 0;
        }else if(first==1&&second==2||first==2&&second==3||first==3&&second==1){
            return 1;
        }else{
            return 2;
        }
    }

    //判断每轮游戏胜负
    private static int judgeAll(int first,int second){
        if(first==second){
            return 0;
        }else if(first>second){
            return 1;
        }else{
            return 2;
        }
    }

    //输出出拳结果
    private static String threeResults(int i){
        String result="";
        switch(i){
        case 1:
            result="石头";
            break;
        case 2:
            result="剪刀";
            break;
        case 3:
            result="布";
            break;
        }
        return result;
    }

    //输出每局结果
    private static void result(String person1,int result1,String person2,int result2,int win){
        System.out.println(person1+": "+threeResults(result1)+" PK "+person2+": "+threeResults(result2));
        if(win==0){
            System.out.println("平局!");
        }else if(win==1){
            System.out.println(person1+"胜,积分+1!");
        }else{
            System.out.println(person2+"胜,积分+1!");
        }
    }

    //输出每轮结果
    private static void reaultAll(int count,String person1,int score1,String person2,int score2,int winAll){
        System.out.print("总共"+count+"局:");
        System.out.println("其中"+person1+" 积分 "+score1+"分,"+person2+" 积分 "+score2+"分.");
        if(winAll==0){
            System.out.println("最终平局!");
        }else if(winAll==1){
            System.out.println("最终"+person1+"胜!");
        }else{
            System.out.println("最终"+person2+"胜!");
        }
    }

}
public class TestDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        int meanSel,peopleNumber=0;
        boolean peopleJudge=false;
        People[] players=new People [10];
        Game game=new Game();
        System.out.println("欢迎进入猜拳游戏!");
        System.out.println("请输入您的选择:\n1.人机游戏\n2.双人游戏\n3.添加玩家\n0.退出游戏");
        meanSel=sc.nextInt();
        while(meanSel!=0){
            switch(meanSel){
            case 1://人机游戏
                ComputerPlayer computer=new ComputerPlayer();
                if(peopleJudge){
                    int num=players.length;
                    if(peopleNumber==1){
                        num=0;
                    }else{
                        String name="";
                        boolean judge=false;
                        while(!judge){
                            System.out.println("请输入玩家姓名:");
                            name=sc.next();
                            for(int i=0;i<peopleNumber;i++){
                                if(players[i].getName().equals(name)){
                                    num=i;
                                    judge=true;
                                    break;
                                }
                            }
                            if(!judge){
                                System.out.println("玩家信息错误,请重新输入玩家姓名:");
                            }
                        }
                    }
                    game.peopleAndComputerPK(players[num], computer);
                }else{
                    People person=new People();
                    game.peopleAndComputerPK(person, computer);
                }
                break;
            case 2://双人游戏
                if(peopleJudge){
                    String name1="";
                    String name2="";
                    boolean judge1=false;
                    boolean judge2=false;
                    int num1=0;
                    int num2=0;
                    while(!judge1){
                        System.out.println("请输入玩家a姓名:");
                        name1=sc.next();
                        for(int i=0;i<peopleNumber;i++){
                            if(players[i].getName().equals(name1)){
                                num1=i;
                                judge1=true;
                                break;
                            }
                        }
                        if(!judge1){
                            System.out.println("玩家a信息错误,请重新输入玩家a姓名:");
                        }
                    }
                    if(peopleNumber==1){
                        num2=peopleNumber;
                        players[num2]=new People();
                    }else{
                        while(!judge2){
                            System.out.println("请输入玩家b姓名:");
                            name2=sc.next();
                            for(int i=0;i<peopleNumber;i++){
                                if(players[i].getName().equals(name2)){
                                    num2=i;
                                    judge2=true;
                                    break;
                                }
                            }
                            if(!judge2){
                                System.out.println("玩家b信息错误,请重新输入玩家b姓名:");
                            }
                        }
                    }
                    game.peopleAndPeoplePK(players[num1], players[num2]);
                }else{
                    People person1=new People();
                    People person2=new People();
                    game.peopleAndPeoplePK(person1, person2);
                }
                break;
            case 3://添加玩家
                peopleJudge=true;
                int num;
                String name="";
                System.out.println("请输入添加玩家人数:");
                num=sc.nextInt();
                System.out.println("请输入"+num+"个玩家的姓名:");
                while(num-->0){
                    name=sc.next();
                    players[peopleNumber++]=new People(name);
                }
                System.out.println("添加完成!");
                break;
            default:
                System.out.println("您的选择输入错误!");
                break;
            }
            System.out.println("欢迎进入猜拳游戏!");
            System.out.println("请输入您的选择:\n1.人机游戏\n2.双人游戏\n3.添加玩家\n0.退出游戏");
            meanSel=sc.nextInt();
        }
        System.out.println("游戏结束,欢迎下次再玩!");
    }

}
  • 12
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值