【Java】采用面向对象的方式,编写程序模拟人和电脑玩剪刀石头布的游戏。

这里写采用面向对象的方式,编写程序模拟人和电脑玩剪刀石头布的游戏。人通过输入方式确定是出“剪刀”或“石头”或者“布”,电脑通过随机方式出,在main方式里面模拟人和电脑出拳,并判断人和电脑谁胜出.

要求

采用面向对象的方式,编写程序模拟人和电脑玩剪刀石头布的游戏。人通过输入方式确定是出“剪刀”或“石头”或者“布”,电脑通过随机方式出,在main方式里面模拟人和电脑出拳,并判断人和电脑谁胜出.

代码


import java.util.*;
/*
    1 石头 2 剪刀 3 布
    user     computer      score
    x     =     x             0
    1           2             1
    1           3             -1
    2           1             -1
    2           3              1
    3           1              1
    3           2              -1
 */

public class finger_guessing
{
    static int time=1;
    int user;
    int computer;

    static int userScore=0;
    static int computerScore=0;

    public void setInit()//初始化界面
    {
        System.out.println("现在开始剪刀石头布");
        System.out.println("1--石头  2--剪刀  3--布");
        System.out.println("第"+time+"次游戏开始");
        System.out.println("请输入1/2/3开始游戏。");
        time++;
    }

    public void showUser()//显示玩家的选项
    {
        Scanner se= new Scanner (System.in);
        user=se.nextInt();
        while(user!=1&&user!=2&&user!=3)
        {
            System.out.println("输入错误,请重新输入");
            user=se.nextInt();
        }
        if(user==3)
            System.out.println("您选择出布");
        else if(user == 1)
            System.out.println("您选择出石头");
        else if(user == 2)
            System.out.println("您选择出剪刀");
    }

    public void showComputer()//显示电脑的选项
    {
        computer =(int)(Math.random()*10)%3 + 1;//随机 1 2 3
        if(computer==3)
            System.out.println("电脑选择出布");
        else if(computer == 1)
            System.out.println("电脑选择出石头");
        else if(computer == 2)
            System.out.println("电脑选择出剪刀");
    }

    public int compare()//和电脑比较
    {
        if(user==computer)
            return 0;
        else if(user==1)
        {
            if(computer==2)
                return 1;
            return -1;
        }
        else if(user==2)
        {
            if(computer==1)
                return -1;
            return 1;
        }
        else if(user==3)
        {
            if(computer==1)
                return 1;
            return -1;
        }
        return 10;
    }

    public void  accumuscore(int f)//判断猜拳结果并记录分数
    {
        if(f==0) {
            System.out.println("平局\n");
            System.out.println("当前分数为:\n电脑:"+computerScore+"选手"+userScore);
        }
        else if(f==1){
            System.out.println("获胜");
            userScore++;
            System.out.println("当前分数为:\n电脑:"+computerScore+"选手"+userScore);
        }
        else if (f==-1){
            System.out.println("失败");
            computerScore++;
            System.out.println("当前分数为:\n电脑:"+computerScore+"   选手:"+userScore);
        }
        System.out.println("————————————————————————————————————————————————————————————————————————————————————————");
    }

    public void comparescore()//比较分数
    {
        System.out.println("电脑:选手 = "+computerScore+":"+userScore);
        if(userScore > computerScore)
            System.out.println("恭喜您获胜");
        else if(userScore<computerScore)
            System.out.println("您输给了电脑");
        else if (userScore == computerScore)
            System.out.println("平局");
    }
    public void Start()
    {
        System.out.println("是否开始游戏(y/n):");
        Scanner se = new Scanner(System.in);
        String choice=se.next();
        while(choice.equals("y"))
        {
            setInit();
            showUser();
            showComputer();
            int f=compare();
            accumuscore(f);
            System.out.print("\n是否开始下一轮(y/n):  ");
            choice=se.next();
        }
        System.out.println("游戏结束");
        comparescore();
    }

    public static void main(String[] args) {
        finger_guessing a;
        a=new finger_guessing();
        a.Start();
    }
}


运行结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值