c/c++开发分享C语言版猜数字小游戏

本文实例为大家分享了c语言版猜数字小游戏的具体代码,供大家参考,具体内容如下清楚实现目标做任何一个小项目之前,我们首先都需要明确自己想要实现的目标.所以猜数字游戏的实现目标是啥? 电脑随

c/c++开发分享C语言版猜数字小游戏实例为大家分享了c语言版猜数字小游戏的具体代码,供大家参考,具体内容如下

清楚实现目标

做任何一个小项目之前,我们首先都需要明确自己想要实现的目标.

所以猜数字游戏的实现目标是啥?

  • 电脑随机给出一个目标数字,玩家进行猜测
  • 电脑会根据玩家猜测的数字,提示猜大了还是小了
  • 直到猜对为止,一轮游戏结束.
  • 游戏结束会询问是否继续.1代表继续,0代表不继续.
  • 游戏模式有3种(简单,普通,困难),对应内容分别为猜25次,15次,5次
  • 游戏会记录你的战绩,在菜单中按2表示查询战绩.

明确逻辑结构

清楚的知道了想要实现的目标,那最开始的步骤就是搭建逻辑结构.

所以逻辑结构是啥呢?

有一个菜单提示,内容为按1代表开始/继续游戏,2代表查询战绩,0代表退出游戏,其他按键提示输入错误

输入2后,会再次跳出菜单.提示输入错误后,可以重新输入命令

输入1后,会询问游戏模式,然后开始.

所以逻辑结构如下:

  #include <stdio.h>    int computer = 0; //电脑的战绩  int player = 0; //玩家的战绩  int main()  {      int input = 0;//键入命令      do      {          menu();//菜单提示模块,后面进行实现          scanf("%d", &input);            switch (input)          {              case 0:                  printf("成功退出游戏n");                  break;              case 1:                  playgame(); //玩游戏模块,后面进行实现                  store(); //存储战绩模块                  break;              case 2:                  query();//查询战绩模块,后面进行实现                  break;          }      } while (input);            return 0;  }

功能细节实现

菜单模块

按照目标要求,菜单木块代码如下:

  void menu()  {      printf(             "*******************************************************n"             "*******************  0----退出游戏  ********************n"             "*******************  1----开始游戏  ********************n"             "*******************  2----查询战绩  ********************n"             "*******************************************************n"             );  }

储存战绩

这个的目标是无论啥时候打开游戏,都会记录之前玩过的成绩.

  void store()  {      file* fp = fopen("grade.txt","w+");      if (fp == null)      {          exit(-1);      }      else      {          fprintf(fp,"computer : player = %d : %dn",computer,player);      }      fclose(fp);  }

游戏模块

游戏模块的功能是:

玩家选择游戏模式,

然后电脑首先会随机给出一个玩家需要猜测的数字.

大概提示数字在哪个范围.

玩家开始猜测.并且每猜测一次,都会提示还剩余几次机会.

  void playgame()  {      srand(time(null)); //随机数种子      int target = rand() % 1001;//代表电脑的随机数        int input = 0, num = 0; //input 代表游戏猜测的数字,num代表猜测剩余次数        num = mode(); //游戏模式选择模块,后面进行实现        while (1)      {          printf("请输入你认为是答案的数字:n");          scanf("%d",&input);          if (num == 0)          {              break;          }          if (input > target)          {              printf("猜大了,再试试n");          }          else if (input > target)          {              printf("猜小了,再试试n");          }          else          {              printf("恭喜你,猜对了n");              break;          }          num--;          printf("你还剩余%d次机会哦~~~~n", num);      }        if (!num)      {          printf("很遗憾,你输了n");          computer++; //标记战绩      }      else      {          printf("恭喜你,你赢了n");          player++;      }      printf("是否还继续游戏呢?n");//这一步是提醒玩家是否继续.  }

游戏模式选择

  int mode()  {      char str[20] = { 0 };      int num = 0;      printf("请输入游戏模式:简单  普通  困难n:");      scanf("%s", str);      if (strcmp("简单", str) == 0)      {          num = 25;      }      else if (strcmp("普通", str) == 0)      {          num = 15;      }      else      {          num = 5;      }        return num;  }

战绩查询

  void query()  {      file* fp = fopen("grade.txt","r");      int a = 0, b = 0;      char p[60] = { 0 };      if (fp == null)      {          exit(-1);      }      else      {          fgets(p,60,fp);          printf("%sn",p);      }      fclose(fp);      printf("游戏是否继续?n");  }

成品展示

  #include <stdio.h>  #include <stdlib.h>  #include <time.h>  #include <string.h>  int computer = 0; //电脑的战绩  int player = 0; //玩家的战绩    void menu()  {      printf(             "*******************************************************n"             "*******************  0----退出游戏  *******************n"             "*******************  1----开始游戏  *******************n"             "*******************  2----查询战绩  *******************n"             "*******************************************************n"             );  }    int mode()  {      char str[20] = { 0 };      int num = 0;      printf("请输入游戏模式:简单  普通  困难n:");      scanf("%s", str);      if (strcmp("简单", str) == 0)      {          num = 25;      }      else if (strcmp("普通", str) == 0)      {          num = 15;      }      else      {          num = 5;      }        return num;  }    void playgame()  {      srand(time(null)); //随机数种子      int target = rand() % 1001;//控制数字在0-1000        int input = 0, num = 0; //input 代表游戏猜测的数字,num代表猜测剩余次数        num = mode(); //游戏模式选择模块        while (1)      {          printf("请输入你认为是答案的数字(0-1000):n");          scanf("%d",&input);          if (num == 0)          {              break;          }          if (input > target)          {              printf("猜大了,再试试n");          }          else if (input < target)          {              printf("猜小了,再试试n");          }          else          {              printf("恭喜你,猜对了n");              break;          }          num--;          printf("你还剩余%d次机会哦~~~~n", num);      }        if (!num)      {          printf("很遗憾,你输了n");          computer++; //标记战绩      }      else      {          printf("恭喜你,你赢了n");          player++;      }      printf("是否还继续游戏呢?n");//这一步是提醒玩家是否继续.  }    void query()  {      file* fp = fopen("grade.txt","r");      int a = 0, b = 0;      char p[60] = { 0 };      if (fp == null)      {          exit(-1);      }      else      {          fgets(p,60,fp);          printf("%sn",p);      }      fclose(fp);      printf("游戏是否继续?n");  }      void store()  {      file* fp = fopen("grade.txt","w");      if (fp == null)      {          exit(-1);      }      else      {          fprintf(fp,"computer : player = %d : %dn",computer,player);      }      fclose(fp);  }    int main()  {      int input = 0;//键入命令      do      {          menu();//菜单提示模块,后面进行实现          scanf("%d", &input);          switch (input)          {          case 0:              printf("成功退出游戏n");              break;          case 1:              playgame(); //玩游戏模块,后面进行实现              store(); //存储战绩模块              break;          case 2:              query();//查询战绩模块,后面进行实现              break;          }        } while (input);      return 0;  }

小提示:

成品中的战绩查询实际并没有真的实现记录所有次战绩,每次启动程序战绩都会从0:0更新,那么怎么实现这个功能呢?

留给大家思考一下.

以上就是c/c++开发分享C语言版猜数字小游戏的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<猴子技术宅>。

需要了解更多c/c++开发分享C语言版猜数字小游戏,都可以关注C/C++技术分享栏目—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/676117.html

发表评论

邮箱地址不会被公开。 必填项已用*标注