全国服务热线:400-6263-721

位置:重庆少儿编程培训学校 > 学校动态 > 信息学编程 简化版21点小游戏

信息学编程 简化版21点小游戏

来源:重庆少儿编程培训学校时间:2023/1/2 10:46:48

  和大家分享一个小游戏,简化版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()方法直接使用前提是使用头文件

  设置随机数种子:

  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!”<

  flag=false;

  }

  }

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

  else if(s==“N”){

  //比较player和npc的大小

  flag=false;

  }

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

  例如玩家赢的情况:


简化版21点小游戏


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

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/168/news/588814/违者必究! 以上就是重庆少儿编程培训学校 小编为您整理 信息学编程 简化版21点小游戏的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-721