简化版21点小游戏

21点小游戏

今日推文和大家分享一个小游戏,简化版21点,比较适合刚学完循环的同学来练一下手,游戏多少要比题目有意思些。

一 、题目描述

两个参与者 ✦

这个简化版的21点游戏,只有两个参与者,一个是玩家,另一个就是NPC。

NPC:

NPC开局会有一个抽牌和n(1≤n≤21),你需要用随机数生成n。

玩家:

允许玩家每次抽一张1-13之间的牌(可重复,用随机数生成),每抽一次牌,计算当前玩家抽牌的和m,如果和m>21直接输掉,反之询问玩家要不要继续抽牌Y代表抽牌,N代表不抽牌。

玩家选择N之后,比较玩家抽牌和以及电脑抽牌和,谁更靠近21点谁赢

开局在控制台输出“Race start!”表示游戏开始;

每次询问玩家的语句,可用“Would you like to draw?Y/N”类似的询问语句;

1.如果玩家分数m超过21,输出“XXX out!”

2.玩家分数m高于NPC分数n,输出“XXX win! NPC‘s score is n”

3.玩家分数m等于NPC分数n,输出“The game has drawn! NPC‘s score is n”

4.玩家分数m低于NPC分数n,输出“XXX out! NPC‘s score is n”

(n指NPC分数)

、   题目分解

固定范围的随机数 ✦

玩家和npc都会有一个固定范围的随机数,这里涉及到随机数的知识点,稍微讲一下。

rand()方法可以帮助我们产生随机数,计算机产生的随机数是通过一种算法计算出来的伪随机数,单纯的只是用rand()方法产生的随机数是固定的,那这样就达不到获取随机数的效果。

这种情况下就需要一个参照物去帮助rand()产生随机数即设置随机数种子,我们知道时间每分每秒都在变动,那么我们可以通过获取当前的时间去产生随机数,时间改变获取的随机数也随之改变

获取当前时间可以用time()方法。rand()方法和time()方法直接使用前提是使用万能头文件<bits/stdc++.h>

设置随机数种子:

srand(time(0));

获取[a,b]之间的随机数,包含a,b:

rand()%(b-a+1)+a;

那么npc和玩家最开始的点数:

npc=rand()%(21-1+1)+1;

player=rand()%(13-1+1)+1;

1、通过循环去不断地抽牌,当满足某些条件时结束循环。这种不确定循环次数的一般采用while循环

这里可以提前设置一个bool条件flag=true,根据这个flag是否为真去判断是否继续执行抽牌的循环。

  bool flag=true;

  while(flag){

        //循环语句;

  }

那在什么情况下flag的条件变为false?

a、当输入的回答为“Y”,且player抽取的牌点数总和大于21点。这里注意玩家的点数每循环一次新获取一张牌对应的点数,这里要加上新获取的点数

if(s==“Y”) {

     player+=rand()%(13-1+1)+1;

if(player>21){

 cout<<“player out!”<<endl;

           flag=false;

}

 }

b、当输入的回答为“N”,结束输入。

 else if(s==“N”){

       //比较player和npc的大小

       flag=false;

 }

2、还有一个需要注意的地方。输出玩家的名字及npc对应的分数。这里的话比较简单的写法是采用格式化输出方法printf(“格式化字符串”,对应的参数)比较快捷方便,在格式化字符串中想要表示的字符串和整数分别用%s和%d来表示

例如玩家赢的情况:

简化版21点小游戏

%s和%d按照从前往后的顺序,依次表示字符串“player”和npc对应的点数。

完整的如下:

简化版21点小游戏

三 、所有代码

代码合并 ✦

以上比较关键的代码合并起来如下,可以给同学们参考一下

简化版21点小游戏
简化版21点小游戏

程序语言提升班

程序语言提升班详情介绍

学员要求

学员已掌握基本的C++语言知识,包括简单的顺序、分支、循环等结构,此外能用基础编写代码解决部分编程问题。

课程内容

主要以算法为重点,帮助学生进一步了解计算机存储和运算方式。课程中教授学生数组、向量、字符串等程序语言,提升学生对程序算法的知识储备。

上课时间

每周六上午9-12点

上课地点

深圳市南山区G&G创意社区BEEPLUS

简化版21点小游戏

师资介绍

秦老师,哈尔滨工业大学(双一流大学)计算机专业。

获奖经历:高中时期获得NOIP提高组省级一等奖,大学期间共获得ICPC区域赛一金两银两铜,南科大第二届程序设计竞赛三等奖,“远光杯”粤港计算机程序设计大赛决赛二等奖,高教社杯全国大学生数学建模竞赛省级二等奖;

教学经历:大学时为ICPC校队队长,负责新进队员的教学和培训;曾担任哈工大【深圳】第一、二届程序设计竞赛主要负责人;在毕莘2年的工作期间多次担任程序语言基础、算法阶段课程的主讲教师;

教学特色:班课授课经验丰富,教学方式灵活变通,授课思路清晰,深入浅出易于学员理解。逻辑思维强,善于引导学员解决复杂的问题,语言严谨,认真负责。

课表详情:

简化版21点小游戏

(疫情期间课程将根据相关部门颁布的规定作出调整)

详情可扫描二维码咨询了解

简化版21点小游戏

毕莘教育咨询(深圳)有限公司围绕信息学竞赛普及组、提高组、省赛、国赛进行培训,同时提供与信息学相关的高校自主招生政策咨询。教研团队由国内顶校师资构成,深圳本地教学团队由来自清华、北大等顶尖名校的硕士、博士研究生及NOI、ACM- ICPC退役选手组成。自成立已开展多次培训,服务学生数百人次。

点击下方阅读原文了解更多

原创文章,作者:深圳信息学_中小学编程_编程培训_信息学竞赛_毕莘教育咨询(深圳)有限公司,如若转载,请注明出处:深圳信息学_中小学编程_编程培训_信息学竞赛_毕莘教育咨询(深圳)有限公司

联系我们

教务老师:余老师
联系电话(微信同号):14774755240
在线咨询:点击QQ在线咨询

QR code