C语言实现小游戏之扫雷(下)

简介: C语言实现小游戏之扫雷

扫雷函数

//扫雷函数
int sweep_mine(int n, int m)
{
  if (real_mine[n][m] == '1')//踩到雷
  {
    return 0;
  }
  else
  {
    int count = count_mine(n, m);//没踩到,统计周围雷的个数
    if (count)
    {
      show_mine[n - 1][m - 1] = count + 0x30;//该坐标处应展示的值 (普通整数要转换为字符,需要加上‘0’的ASCII码值,即0x30)
    }
    else
    {
      open_mine(n, m);
    }
    return 1;
  }
}

判断是否赢得游戏

//判断是否赢得游戏
int is_win()
{
  int i = 0, j = 0;
  int count = 0;
  for (i = 0; i < ROW - 2; i++)
  {
    for (j = 0; j < COL - 2; j++)
    {
      if (show_mine[i][j] == '*')
      {
        count++;
      }
    }
  }
  if (count == MINE)
  {
    return 0;
  }
  else
  {
    return 1;
  }
}

game.h文件

//函数的声明
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define COL 12
#define ROW 12
#define MINE 10
char show_mine[ROW-2][COL-2];//展示给玩家的棋盘的数组
char real_mine[ROW][COL];
void init_mine();//初始化布置雷的棋盘和展示给玩家的棋盘
void set_mine();//放置雷
void print_mine(); //打印放置雷的棋盘
void print_show();//打印展示给玩家的棋盘
int count_mine();//统计周围雷的个数
int has_queried(int n, int m);//判断输入的坐标是否已经被查询过
int sweep_mine();//扫雷函数
int is_win();//判断是否赢得游戏

game.c文件

#define _CRT_SECURE_NO_WARNINGS
#include"saolei.h"
//测试游戏逻辑
void game()
{
  int n = 0, m = 0;
  init_mine();//初始化布置雷的棋盘和展示给玩家的棋盘
  set_mine();//放置雷
  while (1)
  {
    print_mine(); //打印放置雷的棋盘(方便观察是否有错误,实现整个游戏后进行隐藏)
    printf("\n");
    print_show();//打印展示给玩家的棋盘
    printf("请输入您想排查雷的坐标:>");
    scanf("%d %d", &n, &m);
    if (n<1 || n>10 || m<1 || m>10)
    {
      printf("您输入的坐标无效,请重新输入\n");
      continue;
    }
    int ret1 = has_queried(n, m);//判断输入的坐标是否已经被查询过
    if (!ret1)
    {
      printf("该位置已经被查询,请重新输入\n");
      continue;
    }
    int ret2 = sweep_mine(n, m);//扫雷函数
    if (!ret2)
    {
      printf("您已被炸死!\n");
      break;
    }
    int ret3 = is_win();//判断是否赢得游戏
    if (!ret3)
    {
      printf("游戏胜利!\n");
      break;
    }
  }
}
void menu()
{
  printf("*****************************\n");
  printf("********   1. Play   ********\n");
  printf("********   0. Exit   ********\n");
  printf("*****************************\n");
}
int main()
{
  srand((unsigned int)time(NULL));//设置随机数的起始值
  int input = 0;
  do
  {
    menu();//主菜单
    printf("请输入您的操作:>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      game();//进入游戏
      break;
    case 0:
      printf("退出游戏\n");
      break;
    default:
      printf("输入错误请重新输入:>");
      break;
    }
  } while (input);
  return 0;
}

运行截图:

由运行截图可以看出部分游戏的功能,为了方便大家的学习和交流,文中以及将所有代码都展示出来了,大家可以自行测试。

总结

以上就是今天要讲的内容,本文简单的介绍了用C语言实现扫雷小游戏的思路,还进一步展示了代码的运行结果验证了作者的思路。用学习到的知识来实现一个小游戏确实是一个成就感满满的事情,正在学习C语言的你也跟着一起来实现这个小游戏吧。

本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。

最后,如果本篇文章对你有所启发的话,也希望可以支持支持作者,后续作者也会定期更新学习记录。谢谢大家!

相关文章
|
1月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
96 0
|
1月前
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
|
2月前
|
定位技术 API C语言
C语言——实现贪吃蛇小游戏
本文介绍了一个基于Windows控制台的贪吃蛇游戏的实现方法。首先,需调整控制台界面以便更好地显示游戏。接着,文章详细描述了如何使用Win32 API函数如`COORD`、`GetStdHandle`、`GetConsoleCursorInfo`等来控制控制台的光标和窗口属性。此外,还介绍了如何利用`GetAsyncKeyState`函数实现键盘监听功能。文中还涉及了`&lt;locale.h&gt;`库的使用,以支持本地化字符显示。
58 1
C语言——实现贪吃蛇小游戏
|
2月前
|
存储 安全 算法
C 语言——实现扫雷小游戏
本文介绍了使用二维数组创建棋盘并实现扫雷游戏的方法。首先,通过初始化数组创建一个9x9的棋盘,并添加行列标识以便操作。接着,利用随机数在棋盘上布置雷。最后,通过判断玩家输入的坐标来实现扫雷功能,包括显示雷的数量和处理游戏胜利或失败的情况。文中提供了完整的代码实现。
43 1
C 语言——实现扫雷小游戏
|
1月前
|
C语言 定位技术 API
【C语言】实践:贪吃蛇小游戏(附源码)(二)
【C语言】实践:贪吃蛇小游戏(附源码)
【C语言】实践:贪吃蛇小游戏(附源码)(二)
|
1月前
|
C语言 开发者
C语言实现猜数字小游戏(详细教程)
C语言实现猜数字小游戏(详细教程)
|
1月前
|
存储 算法 安全
C语言实现扫雷游戏
C语言实现扫雷游戏
|
1月前
|
C语言
初学者指南:使用C语言实现简易版扫雷游戏
初学者指南:使用C语言实现简易版扫雷游戏
35 0
|
1月前
|
C语言
C语言扫雷游戏(详解)
C语言扫雷游戏(详解)
39 0
|
1月前
|
C语言
【C语言】实践:贪吃蛇小游戏(附源码)(三)
【C语言】实践:贪吃蛇小游戏(附源码)