石头剪子布小游戏(OOP思想)

这个简单的小游戏由三部分组成:

玩家猜拳,计算机猜拳(随机生成),然后比较,几局下来进行总的评判。

/**
模拟玩家
*/
import java.util.Scanner;

public class  Player
{
    private Scanner sc;

    public Player()
    {
        sc = new Scanner(System.in);
    }

    //玩家出拳
    public int showFist()
    {
        System.out.println("玩家请出拳:1、石头  2、剪子  3、布(请输入相应的数字)");
        int fist = sc.nextInt();

        switch(fist)
        {
            case 1:
                System.out.println("玩家出拳:石头!");
            break;

            case 2:
                System.out.println("玩家出拳:剪子!");
            break;

            case 3:
                System.out.println("玩家出拳:布!");
        }

        return fist;
    }
    
}
 

/**
*模拟计算机
*/
import java.util.Random;

public class  Computer
{
    private Random r;

    public Computer()
    {
        r = new Random();
    }

    //计算机出拳
    public int showFist()
    {
        int fist = r.nextInt(3) + 1;    //随机产生1 2 3这三个整数

        switch(fist)
        {
            case 1:
                System.out.println("计算机出拳:石头!");
            break;

            case 2:
                System.out.println("计算机出拳:剪子!");
            break;

            case 3:
                System.out.println("计算机出拳:布!");
        }

        return fist;
    }
}
 

import java.util.Scanner;

public class Game 
{
    private Computer computer;
        private Player player;
        private int count;            //游戏进行的总轮数
        private int cScore;            //计算机得分
        private int pScore;            //玩家得分

        public Game()
        {
            count = 0;
            cScore = 0;
            pScore = 0;
            computer = new Computer();
            player = new Player();
        }

    //模拟游戏进行过程
    public void start()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("---------------------欢迎进入石头剪子布游戏---------------------");
        System.out.print("玩家要开始游戏吗?(y/n):");
        String str = sc.next();
        while("y".equals(str) || "Y".equals(str))
        {
            //进行一轮游戏
            //1.玩家出拳
            int pFist = player.showFist();

            //2.玩家出拳
            int cFist = computer.showFist();

            //3.进行一轮评判
            judge(pFist, cFist);

            //4.提示玩家是否进行下一轮游戏
            System.out.print("\n要继续进行下一轮游戏吗?(y/n):");
            str = sc.next();
        }

        //进行本次游戏总的评判
        //备注:最后的评判是根据pScore,cScore和count来决定的,而这三者都是类的数据成员,可以直接使用。
        //所以就不需要在finalJudge这个方法中传入参数
        finalJudge();
    }

    
    //进行一轮游戏胜负的评判
    public void judge(int pFist, int cFist)
    {
        count++;
        if((cFist == 1 && pFist == 2) || (cFist == 2 && pFist == 3) 
            || (cFist == 3 && pFist == 1))
        {
            cScore++;    //计算机得分
            System.out.println("抱歉,本轮玩家输了!");
        }

        else if((cFist == 2 && pFist == 1) || (cFist == 3 && pFist == 2) 
            || (cFist == 1 && pFist == 3))
        {
            pScore++;    //玩家得分
            System.out.println("恭喜,本轮玩家获胜了!");
        }

        else
        {
            System.out.println("真衰,本轮平了!");
        }
        
    }

    //进行总的评判
    public void finalJudge()
    {
        System.out.println("本轮游戏总共进行了" + count + "轮,玩家获胜" + pScore + "轮,计算机获胜"
         + cScore + "轮,平了" + (count - pScore - cScore) + "轮!");

        if(cScore > pScore)
        {
            System.out.println("最后结果:呵呵,笨笨,下次加油!");
        }

        else if(cScore < pScore)
        {
            System.out.println("最后结果:恭喜玩家获胜!");
        }

        else
        {
            System.out.println("最后结果:走着瞧,下次再决胜负!");
        }
    }


    public static void main(String[] args) 
    {
        Game game = new Game();
        game.start();
    }
}
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值