【C语言】猜数字小游戏详细教程

ACM比赛整理

共 13655字,需浏览 28分钟

 ·

2022-01-13 06:35

游戏效果

先带大家看下游戏效果,

1.首页面

img

2.模式选择页面

img

3.游戏页面

img

4.成功页面

img

项目源码分享

注:VS2019编译器不能用scanf,若想用要在第一行加上下面的代码

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include

void gotoxy(short x, short y)//将光标移动到指定位置

void date();  //时间函数

void Menu();  //游戏首页面

void menu1();  //游戏模式选择页面

void menu2();  //魔鬼模式页面

void menu3();  //变态模式页面

void quit();  //游戏结束页面

void fault();  //错选提示

void win();   //获胜页面

void fail();  //失败页面

void game1();  //简单模式

void game2();  //正常模式

void game3();  //魔鬼模式

void game4();  //变态模式

void pattern();  //模式选择程序

int main()
{
 
 system("COLOR 0A");
 int input = 0;
 srand((unsigned int)time(0));
 do
 {
  system("cls");  //清屏
  date();    //打印时间。
  Menu();    //打印菜单
  gotoxy(5425);  //将光标定位
  printf("请选择->");
  while (scanf("%d", &input) != EOF)
  {
   getchar();
   if (input == 1 || input == 2)
    break;
   fault();
   Sleep(1500);
  
   system("cls");  //清屏
   date();    //打印时间。
   Menu();    //打印菜单
   gotoxy(5425);  //将光标定位
   printf("请选择->");
  
  }
  
  switch (input)
  {
  case 1:
   pattern();
   break;
  //case 2:
  // system("cls");  //清屏
  // date();
  // rule();
  // break;
  case 2:
   system("cls");  //清屏
   quit();
   Sleep(3000);
   exit(0);
   break;
  //default:
  // //system("cls");  //清屏
  // fault();
  // Sleep(1500);
  // break;
  }
  
 } while (1);
 return 0;
}

void gotoxy(short x, short y)
{
 COORD coord = { x, y };
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void date() //显示当前日期
{
 printf("\n当前日期:");
 system("date/t");
 printf("当前时间:");
 system("time/t");

}

void Menu() {
 printf("\n########################################################################################################################\n");
 printf("\n▓                                              *  欢迎进入猜数字小游戏  *                                            ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n                             ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
 printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
 printf("                            |◆|******|◆|       ☆ 开始游戏    请按 1         |◆|******|◆|\n");
 printf("                            |◆|******|◆|       ☆ 退出游戏    请按 2         |◆|******|◆|\n");
 printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
 printf("                             ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                                               *************************                                             ▓\n");
 printf("\n########################################################################################################################\n");

}

void menu1() {
 printf("\n########################################################################################################################\n");
 printf("\n▓                                                     * 欢迎使用 *                                                    ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n                              ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
 printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
 printf("                            |◆|******|◆|       ☆ 简单模式    请按 1         |◆|******|◆|\n");
 printf("                            |◆|******|◆|       ☆ 正常模式    请按 2         |◆|******|◆|\n");
 printf("                            |◆|******|◆|       ☆ 魔鬼模式    请按 3         |◆|******|◆|\n");
 printf("                            |◆|******|◆|       ☆ 变态模式    请按 4         |◆|******|◆|\n");
 printf("                            |◆|******|◆|                                     |◆|******|◆|\n");
 printf("                              ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                                               *************************                                             ▓\n");
 printf("\n########################################################################################################################\n");

}

//*******************************************************************************************************************
//game3页面

void menu2()
{
 system("cls");  //清屏
 date();    //打印时间。
 printf("\n########################################################################################################################\n");
 printf("\n▓                                                 * 欢迎进入魔鬼模式 *                                                ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                            ☆规则:系统随机生成一组0到9不重复的数,具体生成几个由玩家设定                           ▓\n");
 printf("\n▓                            ☆规则:玩家需要输入和系统顺序一致且数字相同的数,即可获胜。                             ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                            ☆提示:A表示数字和位置都正确,B代表只有数字正确,顺序不对。                             ▓\n");
 printf("\n▓                            ☆提示:   字母前面的数字表示个数                                                        ▓\n");
 printf("\n########################################################################################################################\n");

}

//*******************************************************************************************************************
//game4页面

void menu3()
{
 system("cls");  //清屏
 date();    //打印时间。
 printf("\n########################################################################################################################\n");
 printf("\n▓                                                 * 欢迎进入魔鬼模式 *                                                ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                            ☆规则:系统随机生成一组0到19不重复的数,具体生成几个由玩家设定                          ▓\n");
 printf("\n▓                            ☆规则:玩家需要输入和系统顺序一致且数字相同的数,即可获胜。                             ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                            ☆提示:A表示数字和位置都正确,B代表只有数字正确,顺序不对。                             ▓\n");
 printf("\n▓                            ☆提示:   字母前面的数字表示个数                                                        ▓\n");
 printf("\n########################################################################################################################\n");

}

//*******************************************************************************************************************
//结束页面

void quit()
{

 printf("\n\n");
 printf("########################################################################################################################\n");
 printf("###                                                                                                                  ###\n");
 printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
 printf("###   \t\t\t||                         *猜数字小游戏*                         ||\t\t\t     ###\n");
 printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
 printf("###   \t\t\t||                      ☆☆☆☆☆☆☆☆☆☆                      ||\t\t\t     ###\n");
 printf("###   \t\t\t||                      ☆                ☆                      ||\t\t\t     ###\n");
 printf("###   \t\t\t||                ☆☆    欢迎玩家下次挑战    ☆☆                ||\t\t\t     ###\n");
 printf("###   \t\t\t||                      ☆                ☆                      ||\t\t\t     ###\n");
 printf("###   \t\t\t||                      ☆☆☆☆☆☆☆☆☆☆                      ||\t\t\t     ###\n");
 printf("###   \t\t\t||                                                                ||\t\t\t     ###\n");
 printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
 printf("###   \t\t\t||================================================================||\t\t\t     ###\n");
 printf("###                                                                                                                  ###\n");
 printf("########################################################################################################################\n");

}

//*******************************************************************************************************************
//错选提示
void fault()
{
 printf("\n\n                                     ***********************************************                                      \n");
 printf("                                     ▓    $#$      选择错误,重新选择      $#$     ▓\n");
 printf("\n                                     ***********************************************                                      \n");

}

//*******************************************************************************************************************
//成功页面

void win()
{
 printf("\n\n\n\n\n\n");
 printf("    \t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
 printf("    \t\t\t|#|                                                          |#|\n");
 printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
 printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
 printf("    \t\t\t|#|             ☆☆     恭喜你,挑战成功!   ☆☆           |#|\n");
 printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
 printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
 printf("\t\t\t|#|                                                          |#|\n");
 printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
 system("COLOR 0A");
}

//*******************************************************************************************************************
//失败页面
void fail()
{
 printf("\n\n\n\n\n\n");
 printf("    \t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
 printf("    \t\t\t|#|                                                          |#|\n");
 printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
 printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
 printf("    \t\t\t|#|             ☆☆         挑战失败!       ☆☆           |#|\n");
 printf("    \t\t\t|#|                    ☆                ☆                  |#|\n");
 printf("    \t\t\t|#|                    ☆☆☆☆☆☆☆☆☆☆                  |#|\n");
 printf("\t\t\t|#|                                                          |#|\n");
 printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

}

//*******************************************************************************************************************
//简单模式

void game1()
{
 system("cls");  //清屏
 date();    //打印时间。
 printf("\n########################################################################################################################\n");
 printf("\n▓                                                 * 欢迎进入简单模式 *                                                ▓\n");
 printf("\n▓                                        * 在1-100之间系统会随机生成一个数字 *                                        ▓\n");
 printf("\n▓                                        *           请用户猜该数字          *                                        ▓\n");
 printf("\n########################################################################################################################\n");

 int n = rand() % 100 + 1;
 int guess = 0;
 while (1)
 {
  printf("\n▓#$请猜数字:>");
  scanf("%d", &guess);
  if (guess < n)
  {
   printf("\n                                        ****************************************                                        \n");
   printf("\n                                        ▓        #$    猜小了    $#          ▓\n");
   printf("\n                                        ****************************************                                        \n");
  }
  else if (guess > n)
  {
   printf("\n                                        ****************************************                                        \n");
   printf("\n                                        ▓        #$    猜大了    $#          ▓\n");
   printf("\n                                        ****************************************                                        \n");
  }
  else
  {
   system("COLOR 04");
   system("cls");  //清屏
   date();    //打印时间。
   win();
   break;
  }
 }

}

//*******************************************************************************************************************
//正常模式

void game2()
{
LOOP:date();    //打印时间。
 system("COLOR A0");
 system("cls");  //清屏
 date();    //打印时间。
 printf("\n########################################################################################################################\n");
 printf("\n▓                                                 * 欢迎进入正常模式 *                                                ▓\n");
 printf("\n########################################################################################################################\n");
 printf("\n▓                                               * 提醒:这是个镜像世界 *                                              ▓\n");
 printf("\n########################################################################################################################\n");

 int n = rand() % 100 + 1;
 int guess = 0;
 int i = 0, k = 1, s;
 printf("\n▓#$请输入挑战次数:>");
 scanf("%d", &s);
  
 for (i = 0; i < s; i++)
 {
  printf("\n▓#$请猜数字:>");
  scanf("%d", &guess);
  if (guess < n)
  {
   printf("\n                                        ****************************************                                        \n");
   printf("\n                                        ▓        #$    猜大了    $#          ▓\n");
   printf("\n                                        ****************************************                                        \n");
  }
  else if (guess > n)
  {
   printf("\n                                        ****************************************                                        \n");
   printf("\n                                        ▓        #$    猜小了    $#          ▓\n");
   printf("\n                                        ****************************************                                        \n");
  }
  else
  {
   system("COLOR 04");
   system("cls");  //清屏
   date();    //打印时间。
   win();
   k = 0;
   break;
  }
 }
 if (k)
 {
  system("cls");  //清屏
  date();    //打印时间。
  win();
  Sleep(3000);
  printf("\n                                      ************************************                                      \n");
  printf("\n                                      ▓    $#$  嘻嘻,逗你呢!  $#$    ▓\n");
  printf("\n                                      ************************************                                       \n");
  Sleep(3000);
  goto LOOP;
 }
}

//*******************************************************************************************************************
//魔鬼模式

void game3()
{
 int acount, bcount, n = 0, i, j, k = 0, flag, a[10], b[10];


 do
 {
  menu2();
  printf("\n▓ #$请输入要猜几个数字(1);
  while (n <= 1 || n > 10)
   scanf("%d", &n);
  flag = 0;
  for (i = 0; i < n; i++)
  {
   a[i] = rand() % 10;   //每次产生0-9范围内任意的一个随机数字并存到数组a中
  }
  for (i = 0; i < n - 1; i++)
  {
   for (j = i + 1; j < n; j++)
   {
    if (a[i] == a[j]) //判断数组a中是否有相同数字
    {
     flag = 1;  //若有上述情况则标志位置1
     break;
    }
   }
  }
  //for (i = 0; i < n; i++)
  // printf("%d ", a[i]);
  //printf("\n");
  
 } while (flag == 1);  //若标志位为1则重新分配数据
  
 do
 {
  k++;  //记录猜数字的次数
  acount = 0;   //每次猜的过程中位置和数字都正确的个数
  bcount = 0;   //每次猜的过程中位置不正确但数字正确的个数、
  printf("\n▓#$请猜%d个数,用空格分开:>", n);
  for (i = 0; i < n; i++)
  {
   scanf("%d", &b[i]);  //输入猜测的数据到数组b中
   getchar();
  
  }
  for (i = 0; i < n; i++)
   for (j = 0; j < n; j++)
   {
    if (a[i] == b[i]) //检测输入的数据与计算机分配的数据相同且位置相同的个数
    {
     acount++;
     break;
    }
    if (a[i] == b[j] && i != j) //检测输入的数据与计算机分配的数据相同但位置不同的个数
    {
     bcount++;
     break;
    }
   }
  printf("▓#$提示:%dA , %dB\n\n", acount, bcount);
  if (acount == n)
  {
   system("COLOR 04");
   system("cls");  //清屏
   date();    //打印时间。
   win();
   break;
  }
 } while (1);
}

//*******************************************************************************************************************
//变态模式

void game4()
{
 int acount, bcount, i, j, k = 0, flag, a[20], b[20], n = 0;
 do
 {
  menu3();
  printf("\n▓ #$请输入要猜几个数字(5);
  while (n <= 5 || n >= 20)
   scanf("%d", &n);
  flag = 0;
  for (i = 0; i < n; i++)
  {
   a[i] = rand() % 20;   //每次产生0-19范围内任意的一个随机数字并存到数组a中
  }
  for (i = 0; i < n - 1; i++)
  {
   for (j = i + 1; j < n; j++)
   {
    if (a[i] == a[j]) //判断数组a中是否有相同数字
    {
     flag = 1;  //若有上述情况则标志位置1
     break;
    }
   }
  }
  //for (i = 0; i < n; i++)
  // printf("%d ", a[i]);
  //printf("\n");

 } while (flag == 1);  //若标志位为1则重新分配数据
  
 do
 {
  k++;  //记录猜数字的次数
  acount = 0;   //每次猜的过程中位置和数字都正确的个数
  bcount = 0;   //每次猜的过程中位置不正确但数字正确的个数、
  printf("\n▓#$请猜%d个数,用空格分开:>", n);
  for (i = 0; i < n; i++)
  {
   scanf("%d", &b[i]);  //输入猜测的数据到数组b中
   getchar();
  
  }
  for (i = 0; i < n; i++)
   for (j = 0; j < n; j++)
   {
    if (a[i] == b[i]) //检测输入的数据与计算机分配的数据相同且位置相同的个数
    {
     acount++;
     break;
    }
    if (a[i] == b[j] && i != j) //检测输入的数据与计算机分配的数据相同但位置不同的个数
    {
     bcount++;
     break;
    }
   }
  printf("▓#$提示:%dA , %dB\n\n", acount, bcount);
  if (acount == n)
  {
   system("COLOR 04");
   system("cls");  //清屏
   date();    //打印时间。
   win();
   break;
  }
 } while (1);
}

//*******************************************************************************************************************
//模式选择页面

void pattern()
{
 int input1 = 0, n = 0;
 char s = 0;
 do
 {
  system("cls");  //清屏
  date();
  menu1();
  gotoxy(5425);
  printf("请选择->");

  while (scanf("%d", &input1) != EOF)
  {
   getchar();
   if (input1 >= 1 && input1 <= 4)
    break;
   fault();
   Sleep(1500);
   system("cls");  //清屏
   date();
   menu1();
   gotoxy(5425);
   printf("请选择->");
  }
  switch (input1)
  {
  case 1:
   game1();
   goto LINK;
  
  case 2:
   game2();
   goto LINK;
  case 3:
   game3();
   goto LINK;
  case 4:
   game4();
   goto LINK;
  
  }
  
 } while (1);
LINK:printf("\n\n                                     ***********************************************                                      \n");
 printf("                                     ▓    $#$  按ENTER键进入、返回主菜单  $#$     ▓\n");
 printf("\n                                     ***********************************************                                      \n");

 getchar();
 while ((s = getchar()) != '\n')
 {
  ;
 }

}

分步讲解以下为代码块,在编译器上不能执行,只用于理解

一、主函数

int main()
{
 
 system("COLOR 0A");        //改变字体背景颜色
 int input = 0;
 srand((unsigned int)time(NULL));    //设置随机种子
 do
 {
  system("cls");  //清屏
  date();    //打印时间。
  Menu();    //打印菜单
  gotoxy(5425);  //将光标定位
  printf("请选择->");
  while (scanf("%d", &input) != EOF)    //处理当用户输入信息为字母或其他数字的bug
  {
   getchar();
   if (input == 1 || input == 2)
    break;
   fault();
   Sleep(1500);            //程序停止运行,vs2019的单位是毫秒。
  
   system("cls");  //清屏
   date();    //打印时间。
   Menu();    //打印菜单
   gotoxy(5425);  //将光标定位
   printf("请选择->");
  
  }
  
  switch (input)    
  {
  case 1:
   pattern();            //进入模式选择页面
   break;
  
  case 2:
   system("cls");  //清屏
   quit();            //进入游戏结束页面
   Sleep(3000);
   exit(0);            //程序结束。
   break;
  
  }
  
 } while (1);        //能多次玩游戏
 return 0;
}

1)system("COLOR 0A");system头文件

    其中COLOR后面的0是背景色代号,A是前景色代号

颜色代号

0 黑色 1 蓝色 2 绿色 3 湖蓝色 4 红色 5 紫色 6 黄色 7 白色 8 灰色 9 淡蓝色 A 淡绿色 B 淡浅绿色 C 淡红色 D 淡紫色  E 淡黄色 F 亮白色

2)srand((unsigned int)time(NULL));srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,使程序每次运行产生不同的随机数序列。

3)system("cls");        //清屏

  1. gotoxy(54, 25)                //光标定位1、在 Turbo C 或 Borland C 中可以使用 gotoxy 函数,包含在头文件 conio.h中。

2、而在 Visual C++ 或 GCC 中使用 gotoxy 函数,就需要把上面自定义的 gotoxy 函数写在自己的程序中。

下面这个 C 程序将在屏幕中第5行10列(横向为X,纵向为Y轴)中央输出“你好 陌生人”

#include 
#include 

void gotoxy(short x, short y)
{
    COORD coord = {x, y};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

int main(void) {
    gotoxy(105);
    printf("你好 陌生人\n");

    return 0;
}

来源于百度gotoxyhttps://baike.baidu.com/item/gotoxy/2986529?fr=aladdin

5)Sleep()Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。

windows下的Sleep函数,首字母大写  #include     参数usigned long类型,为毫秒数。

linux下的sleep函数,首字母小写   #include  其参数为秒数。

sleep函数https://baike.baidu.com/item/Sleep%E5%87%BD%E6%95%B0

6)exit(0);exit(0)的意思指的是正常状态退出。

exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出。退出程序,括号中的0表示程序的退出返回代码,无实际意义。exit()就是退出 , 0就是返回的参数,  也可以返回 1  -1 等  你可以用来判断函数是否正确返回

二、pattern子函数

void pattern()
{
 int input1 = 0, n = 0;
 char s = 0;
 do
 {
  system("cls");  //清屏
  date();            //显示日期
  menu1();           
  gotoxy(5425);
  printf("请选择->");

  while (scanf("%d", &input1) != EOF)
  {
   getchar();
   if (input1 >= 1 && input1 <= 4)
    break;
   fault();
   Sleep(1500);
   system("cls");  //清屏
   date();
   menu1();
   gotoxy(5425);
   printf("请选择->");
  }
  switch (input1)
  {
  case 1:
   game1();
   goto LINK;
  
  case 2:
   game2();
   goto LINK;
  case 3:
   game3();
   goto LINK;
  case 4:
   game4();
   goto LINK;
  
  }
  
 } while (1);
LINK:printf("\n\n                                     ***********************************************                                      \n");
 printf("                                     ▓    $#$  按ENTER键进入、返回主菜单  $#$     ▓\n");
 printf("\n                                     ***********************************************                                      \n");

 getchar();
 while ((s = getchar()) != '\n')
 {
  ;
 }

}

1)goto语句goto (无条件转换语句)函数可以出现在程序的任意一条语句之前,

一般形式:

goto  标号 ;

标号 : 语句;程序可直接由goto跳的标号的那一个语句。

三、简单模式

void game1()
{
 system("cls");  //清屏
 date();    //打印时间。
 printf("\n########################################################################################################################\n");
 printf("\n▓                                                 * 欢迎进入简单模式 *                                                ▓\n");

 printf("\n▓                                        * 在1-100之间系统会随机生成一个数字 *                                        ▓\n");
  
 printf("\n▓                                        *           请用户猜该数字          *                                        ▓\n");
 printf("\n########################################################################################################################\n");
  
 int n = rand() % 100 + 1;        //去1——100之间的随机变量赋值给n
 int guess = 0;
 while (1)
 {
  printf("\n▓#$请猜数字:>");
  scanf("%d", &guess);
  if (guess < n)    //猜的数比系统产生的数小。
  {
   printf("\n                                        ****************************************                                        \n");
   printf("\n                                        ▓        #$    猜小了    $#          ▓\n");
   printf("\n                                        ****************************************                                        \n");
  }
  else if (guess > n)    //猜的数比系统产生的数大。
  {
   printf("\n                                        ****************************************                                        \n");
   printf("\n                                        ▓        #$    猜大了    $#          ▓\n");
   printf("\n                                        ****************************************                                        \n");
  }
  else        //猜对了,
  {
   system("COLOR 04");    //换颜色
   system("cls");  //清屏
   date();    //打印时间。
   win();
   break;
  }
 }

}

「游戏设置思路」先由系统产生一个随机数。用个变量先存起来。再设个变量来存玩家猜的数,然后让再让这两数比较不同给出提示,相同则游戏通过。

注意:猜错了的提示不要弄反,猜错了之后不要结束程序要有循环让玩家继续猜。

四、魔鬼模式

void game3()
{
 int acount, bcount, n = 0, i, j, k = 0, flag, a[10], b[10];


 do
 {
  menu2();    //打印魔鬼模式的界面
  printf("\n▓ #$请输入要猜几个数字(1);
  while (n <= 1 || n > 10)
   scanf("%d", &n);
  flag = 0;
  for (i = 0; i < n; i++)        //把随机生成的数存到数组a中
  {
   a[i] = rand() % 10;   //每次产生0-9范围内任意的一个随机数字并存到数组a中
  }
  for (i = 0; i < n - 1; i++)        //若有一样的数,重新分配数字。
  {
   for (j = i + 1; j < n; j++)
   {
    if (a[i] == a[j]) //判断数组a中是否有相同数字
    {
     flag = 1;  //若有上述情况则标志位置1
     break;
    }
   }
  }
  //for (i = 0; i < n; i++)    //用来打印出产生的a数组,
  // printf("%d ", a[i]);
  //printf("\n");
  
 } while (flag == 1);  //若标志位为1则重新分配数据
  
 do
 {
  k++;  //记录猜数字的次数
  acount = 0;   //每次猜的过程中位置和数字都正确的个数
  bcount = 0;   //每次猜的过程中位置不正确但数字正确的个数、
  printf("\n▓#$请猜%d个数,用空格分开:>", n);
  for (i = 0; i < n; i++)
  {
   scanf("%d", &b[i]);  //输入猜测的数据到数组b中
   getchar();
  }
  for (i = 0; i < n; i++)
   for (j = 0; j < n; j++)
   {
    if (a[i] == b[i]) //检测输入的数据与计算机分配的数据相同且位置相同的个数
    {
     acount++;
     break;
    }
    if (a[i] == b[j] && i != j) //检测输入的数据与计算机分配的数据相同但位置不同的个数
    {
     bcount++;
     break;
    }
   }
  printf("▓#$提示:%dA , %dB\n\n", acount, bcount);
  if (acount == n)        //玩家猜的数组与系统产生的一样,游戏通过
  {
   system("COLOR 04");
   system("cls");  //清屏
   date();    //打印时间。
   win();
   break;
  }
 } while (1);
}

「1)游戏设置思路」先让玩家输入一个数字作为产生数组a的个数,例如:输入5,就产生5的随机数并存到数组a中。

玩家在输入一组数存到数组b中,让数组b与a比较完全相同则游戏通过

提示A:顺序与数字相同        B顺序不对,但系统生成的随机数里有这个数字。

来源:https://blog.csdn.net/weixin_62263267/article/details/122389955

仅供大家学习参考与知识传播,版权归原作者所有,如有侵权,麻烦联系进行删除,感谢~

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报