首页后端开发ASP.NETc语言简单小游戏-扫雷游戏

c语言简单小游戏-扫雷游戏

时间2024-01-31 10:22:03发布访客分类ASP.NET浏览1063
导读:收集整理的这篇文章主要介绍了c语言简单小游戏-扫雷游戏,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了c语言实现简单扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。c语...
收集整理的这篇文章主要介绍了c语言简单小游戏-扫雷游戏,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了c语言实现简单扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

c语言简单小游戏-扫雷

本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下

#define _CRT_SECURE_NO_WARNINGS#include stdio.h>
    #include windows.h>
    #include time.h>
    /* 用 C 语言写一个简单的扫雷游戏*/// 1.写一个游戏菜单 Menu()// 2.开始游戏 // 1.初始化二维数组 InIT_Interface() // 2.打印游戏界面 PRint_Interface() // 3.玩家掀起指定位置 play() -->
     指定输入坐标(判断合法性) // 1.判断该位置是否是雷 // 2.判断是否掀掉所有空地 // 3.如果掀开的是空地,则判断该空地周围是否有雷  // 1.如果周围有雷,则统计周围雷的个数  // 2.如果周围没有雷,则掀开周围除了雷的所有空地,并且统计所掀开空地周围雷的个数 // 4.更新地图 // 5.继续 3 的循环 //定义全局变量://定义扫雷地图的长和宽#define MAX_ROW 9#define MAX_COL 9//定义默认的雷数#define DEFAULT_MINE 9//定义两个二维数组,分别存放初始地图和雷阵char show_map[MAX_ROW + 2][MAX_COL + 2];
    char mine_map[MAX_ROW + 2][MAX_COL + 2];
 //写一个游戏菜单int Menu() {
     printf("=========\n");
     printf("1.开始游戏\n");
     printf("0.结束游戏\n");
     printf("=========\n");
     printf("请选择游戏菜单选项:");
     int choice = 0;
 while (1) {
     scanf("%d", &
    choice);
     if (choice != 0 &
    &
 choice != 1) {
      printf("您的输入有误, 请重新输入\n");
      continue;
 }
     break;
 }
     return choice;
}
 //开始游戏//初始化数组void Init_Interface() {
     for (int row = 0;
     row  MAX_ROW + 2;
 row++) {
     for (int col = 0;
     col  MAX_COL + 2;
 col++) {
      show_map[row][col] = '*';
 }
 }
     for (int row = 0;
     row  MAX_ROW + 2;
 row++) {
     for (int col = 0;
     col  MAX_COL + 2;
 col++) {
      mine_map[row][col] = '0';
 }
 }
     int mine_count = DEFAULT_MINE;
     while (mine_count >
 0) {
     int row = rand() % MAX_ROW + 1;
     int col = rand() % MAX_COL + 1;
 if (mine_map[row][col] == '1') {
     //将雷设置为 1  //此处已经有雷  continue;
 }
     mine_count--;
     mine_map[row][col] = '1';
 }
}
//打印初始界面void Print_Interface(char map[MAX_ROW + 2][MAX_COL + 2]) {
     printf("  ");
     for (int col = 1;
     col = MAX_COL;
 col++) {
     printf("%d ", col);
 }
     printf("\n  ");
     for (int col = 1;
     col = MAX_COL;
 col++) {
     printf("--");
 }
     printf("\n");
     for (int row = 1;
     row = MAX_ROW ;
 row++) {
     printf("%02d |", row);
     for (int col = 1;
     col = MAX_COL;
 col++) {
      printf("%c ", map[row][col]);
 }
     printf("\n");
 }
}
//写一个统计周围雷数个数的函数int Around_Mine_count(int row, int col) {
     return (mine_map[row - 1][col - 1] - '0' + mine_map[row - 1][col] - '0' + mine_map[row - 1][col + 1] - '0' + mine_map[row][col - 1] - '0' + mine_map[row][col + 1] - '0' + mine_map[row + 1][col - 1] - '0' + mine_map[row + 1][col] - '0' + mine_map[row + 1][col + 1] - '0');
}
//写一个判断该位置周围是否有雷的函数int No_Mine(int row, int col) {
 if (Around_Mine_count(row, col) == 0) {
     return 1;
 }
     return 0;
}
//写一个掀开该位置周围空地的函数void OPEn_Blank(int row, int col) {
     show_map[row - 1][col - 1] = '0' + Around_Mine_count(row - 1, col - 1);
     show_map[row - 1][col] = '0' + Around_Mine_count(row - 1, col);
     show_map[row - 1][col + 1] = '0' + Around_Mine_count(row - 1, col + 1);
     show_map[row][col - 1] = '0' + Around_Mine_count(row, col - 1);
     show_map[row][col + 1] = '0' + Around_Mine_count(row, col + 1);
     show_map[row + 1][col - 1] = '0' + Around_Mine_count(row + 1, col - 1);
     show_map[row + 1][col] = '0' + Around_Mine_count(row + 1, col);
     show_map[row + 1][col + 1] = '0' + Around_Mine_count(row + 1, col + 1);
}
//写一个判断游戏结束的函数int Success_Sweep(char show_map[MAX_ROW + 2][MAX_COL + 2]) {
     int count = 0;
     for (int row = 1;
     row = MAX_ROW;
 row++) {
     for (int col = 1;
     col = MAX_COL;
 col++) {
  if (show_map[row][col] == '*') {
      count++;
  }
 }
 }
 if (count == DEFAULT_MINE) {
     return 1;
 }
     return 0;
}
//开始游戏void StartGame() {
 while (1) {
     printf("请输入您要掀开的坐标:");
     int row = 0;
     int col = 0;
 while (1) {
      scanf("%d %d", &
    row, &
    col);
      if (row  1 || row >
     MAX_ROW || col  1 || col >
 MAX_COL) {
      printf("您的输入有误,请重新输入!\n");
      continue;
  }
  if (show_map[row][col] != '*') {
      printf("该位置已被掀开,请重新选择\n");
      continue;
  }
      break;
 }
 //判断该地方是否有雷 if (mine_map[row][col] == '1') {
      Print_Interface(mine_map);
      printf("该地方有雷,游戏结束!!!\n");
      break;
 }
 if (No_Mine(row, col)) {
      show_map[row][col] = '0';
      Open_Blank(row, col);
 }
     show_map[row][col] = '0' + Around_Mine_count(row, col);
 //判断是否掀开所有空地 if (Success_Sweep(show_map) == 1) {
      Print_Interface(mine_map);
      printf("您已成功扫雷!!!\n");
      break;
 }
     System("cls");
     //更新地图 Print_Interface(show_map);
 }
}
 int main() {
 if (Menu() == 0) {
     exit(0);
 }
     srand((unsigned int)time(NULL));
     Init_Interface();
     Print_Interface(show_map);
     StartGame();
      system("pause");
     return 0;
}
    

效果图:

数字代表周围雷的个数

更多C语言教程,推荐观看C语言视频教程!

以上就是c语言简单小游戏-扫雷游戏的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

小游戏

若转载请注明出处: c语言简单小游戏-扫雷游戏
本文地址: https://pptw.com/jishu/593834.html
JavaScript实例详解之HTML元素操作 推荐分享Node.js中18个值得了解的Web框架和工具

游客 回复需填写必要信息