ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java石头剪刀布游戏控制台版(RockPaperScissorsConsole)

2020-06-09 10:04:26  阅读:230  来源: 互联网

标签:Java RockPaperScissorsConsole System 金币 computer println 控制台 theMoney out


石头剪刀布游戏控制台版(RockPaperScissorsConsole)

案例简介

石头剪刀布游戏:玩家可以在控制台输入代表石头、剪刀、布的数字,游戏会随机生成一个手势并和玩家输入的手势比较,根据比较结果增加或减少玩家的金钱数量。

案例使用建议

  1. 讲解:通过讲解演示此案例的实现过程教授学生综合应用JAVA程序设计基础知识和技能。此使用方式需要教师将实现步骤与逻辑梳理清楚,并且能在讲解过程中突出涉及到的知识点与技能点,最好在讲解的最后对涉及的知识点与技能点进行总结归纳。建议采用此方式的过程中尽量多提案例相关知识点相关的问题,以便学生可以参与课堂,帮助学生回想相关知识点与技能点。
  2. 分析:通过讲解演示如何分析设计此案例的实现方案帮助学生学习如何设计程序。此使用方式需要教师提前梳理清楚开发人员分析设计程序的过程并将其设计为授课过程,在讲解过程中应循循善诱、多提问,引导学生自己思考设计出程序的实现方案。
  3. 填补:通过删除部分代码让学生补全的方式考察学生对JAVA程序设计基础知识与技能的掌握情况,同时给予学生练习JAVA程序设计基础知识与技能的机会。如果删除很少的代码,题型可以是程序阅读填空题。如果删除的代码为逻辑完整的整块代码,则可以考察学生对代码整体的理解和锻炼学生自主设计微型程序的能力。教师还可以通过添加注释的方式帮助学生完成任务。如:删除案例中判断输赢方法中的所有代码并添加注释说明后让学生完成。
  4. 扩展:通过布置扩展任务为学生提供练习JAVA程序设计基础知识与技能的机会。如:让学生思考是否有更好的方法用来判断玩家和电脑的输赢。

涉及知识点与技能点

  • 包的导入;
  • 类的定义与使用;
  • 属性的定义与使用;
  • 数组的定义与使用;
  • 构造方法的定义;
  • 成员方法的定义与调用;
  • Scanner的使用:实例化、从标准输入读取内容、关闭;
  • 变量声明与赋值;
  • 字符串使用:声明、初始化、拼接、相等比较;
  • 基本数据类型使用;
  • 随机数生成;
  • 基本运算符的使用:算数运算符、逻辑运算符、比较运算符;
  • 表达式的使用;
  • if条件语句;
  • do-while循环;
  • while循环;
  • continue以及break语句的使用;
  • 标准输出使用;
import java.util.Scanner;

public class RockPaperScissors{
    /* 石头剪刀布游戏控制台版。
     * 第一次出手势 可以免费获取  500 币子,
     * 之后每次 赢得电脑 会获取 60 币子,
     * 平局 扣除 10 币子,输一局 扣除50币子,
     * 币子小于0或大于1000自动结束游戏,或手动输入8结束游戏。
    */
    String hand[] = {"","剪刀","石头","布"};     //方便对照石头剪刀布点数
    int theMoney;
    public RockPaperScissors(){
        theMoney = 500;
        System.out.println("1代表剪刀;2代表石头;3代表布!4代表不想玩儿了!");
        System.out.println("送你"+theMoney+" 金币 ,看你能赢多少,或者几局输光!哈哈哈!!");
    }
    
    //判断用户和电脑的输赢并对操作相应分数
    public void winJudge(int player, int computer){
        if (computer == player) {
            theMoney -= 10;
            System.out.println("平局:金币-10    当前金币:"+theMoney);
        } else if ((computer == 1 && player == 3) || (computer == 3 && player == 1)) {//出现1>3场景,即剪刀>布
            if (computer == 1) {
                theMoney -= 50;
                System.out.println("电脑赢!它是: "+hand[computer]+"  金币-50    当前金币:"+theMoney);
            } else if (player == 1) {
                theMoney += 60;
                System.out.println("你赢了!它是: "+hand[computer]+"  金币+60    当前金币:"+theMoney);
            }
        }
        else {
            if (computer > player) {//除去特例1>3,其它情况正常比较数值
                theMoney -= 50;
                System.out.println("电脑赢,ta是:"+hand[computer]+"  金币-50    当前金币:"+theMoney);
            } else {
                theMoney += 60;
                System.out.println("你赢了,ta是:"+hand[computer]+"  金币+60    当前金币:"+theMoney);
            }
        }
    }
    
    //根据剩余分数判断用户得分情况
    public void scores(){
        if (theMoney == 500)
            System.out.println("不赚不亏,账户余额:"+theMoney+"金币");
        else if (theMoney<500)
            System.out.println("您亏啦!账户余额:"+theMoney+"金币");
        else
            System.out.println("恭喜你赚翻啦!账户余额:"+theMoney+"金币");
    }
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String playAgain = "";
        do{
            RockPaperScissors rps = new RockPaperScissors();
            do {
                int guess;
                int computer;
                System.out.print("请出拳:");
                //try对合法性检测
                try{
                	guess = Integer.parseInt(input.next());
                }catch (NumberFormatException e){
                    System.out.println("输入不合法,请重试!"+1+"代表剪刀"+2+"代表石头"+3+"代表布");
                    continue;
                }
                if(guess == 4){
                    break;
                }
                //限制输入为1,2,3
                if (guess < 1 || guess > 3){
                    System.out.println("输入不合法,请重试!"+1+"代表剪刀"+2+"代表石头"+3+"代表布");
                    continue;
                }
                computer = (int) (1 + Math.random() * 3);
                rps.winJudge(guess, computer);
            }while (rps.theMoney<1000 && rps.theMoney>0);    //分数小于0或大于1000时结束游戏
            rps.scores();//根据剩余分数判断
            System.out.println("再玩一次(y/n)?");
            playAgain = input.next();
        }while(playAgain.equalsIgnoreCase("y"));
        input.close();
    }
}

标签:Java,RockPaperScissorsConsole,System,金币,computer,println,控制台,theMoney,out
来源: https://www.cnblogs.com/kongw/p/13070712.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有