扫雷小游戏(简易版)

扫雷小游戏(简易版)写个小游戏娱乐娱乐 目录 1 简要分析 2 实现扫雷游戏细节 3 总代码 1 简要分析一般写这种小游戏要分为两个模块 头文件 源文件 头文件中声明各种函数和库函数以及宏定义 全局变量等 源文件中主要是实现函数和逻辑函数等 在扫雷游戏中 我将我的模块分为三部分 一部分是 game h 声明头文件等 game c 实现游戏函数 test c 实现总体逻辑接下来就是扫雷游戏的细节处理 2 游戏细节 1 定义两个数组 charmi

写个小游戏娱乐娱乐!

目录:1.简要分析

           2.实现扫雷游戏细节

            3.总代码

1.简要分析

一般写这种小游戏要分为两个模块:头文件,源文件。头文件中声明各种函数和库函数以及宏定义,全局变量等。源文件中主要是实现函数和逻辑函数等。

在扫雷游戏中,我将我的模块分为三部分,一部分是game.h–声明头文件等,game.c–实现游戏函数,test.c–实现总体逻辑

接下来就是扫雷游戏的细节处理

2.游戏细节

1.定义两个数组

char mine[ROW][COL];//用于存放雷的位置,以及非雷的位置,初始化为‘0’,然后才将雷的位置‘1’来替换原来的字符

char show[ROW][COL];//用于展示在游戏界面的雷阵,并不会将雷的位置暴露,且初始化为‘*’。

2.布雷

srand((unsigned int )time(NULL));

int x=0,y=0;

x=rand()%row+1;//用srand((unsigned int )time(NULL))来随机生成雷的位置坐标

y=rand()%col+1;//生成10个雷,就循环十次,将雷的位置存放在mine[ROW][COL]中

3.排雷

if(arr[x][y]==1)//当位置输入坐标在mine[ROW][COL]中存放的字符为‘1’时,则为踩雷,游戏结束

printf(“游戏结束!”);

else

int count = get_mine(mine, x, y);

4.判断什么时候排雷成功

int win=0;//定义一个变量来判断什么时候排雷成功;

3.总代码

1.test.c

#define _CRT_SECURE_NO_WARNINGS #include "game.h" void menu() { printf("*\n"); printf("* 1.play *\n"); printf("* 0.exit *\n"); printf("*\n"); } void game() { char mine[ROWS][COLS];//存放雷 char show[ROWS][COLS];//用于展示给玩家的棋盘; //初始化棋盘 init_board(mine, ROWS, COLS, '0'); init_board(show, ROWS,COLS,'*'); //打印棋盘; show_board(show, ROW, COL); //show_board(mine, ROW, COL); //布置雷 set_mine(mine, ROW, COL); //show_board(mine, ROW, COL); //排雷 find_mine(mine, show, ROW, COL); } int main() { int input; srand((unsigned int)time(NULL)); do { menu(); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏!\n"); break; default: printf("输入错误,请重新输入:\n"); break; } } while (input); return 0; }

2.game.h

#define _CRT_SECURE_NO_WARNINGS #include 
  
    #include 
   
     #include 
    
      #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 #define EASY 10 //初始化棋盘 void init_board(char arr[ROWS][COLS], int rows, int cols, char set); //打印棋盘 void show_board(char arr[ROWS][COLS], int row, int col); //布置雷 void set_mine(char arr[ROWS][COLS], int row, int col); //排雷 void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col); 
     
    
  

3.game.c

#define _CRT_SECURE_NO_WARNINGS #include "game.h" void init_board(char arr[ROWS][COLS], int rows, int cols, char set) { int i = 0; int j = 0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { arr[i][j] = set; } } } void show_board(char arr[ROWS][COLS], int row, int col) { int i = 1; int j = 1; printf("------扫雷-------\n"); for (i = 0; i <= row; i++) { printf("%d ", i); } printf("\n"); for (i = 1; i <= row; i++) { printf("%d ", i); for (j = 1; j <= col; j++) { printf("%c ", arr[i][j]); } printf("\n"); } } //布置雷 void set_mine(char arr[ROWS][COLS], int row, int col) { int count = EASY; int x=0, y=0; while (count) { x = rand() % row + 1; y = rand() % col + 1; if (arr[x][y] == '0') { arr[x][y] = '1'; count--; } } } int get_mine(char mine[ROWS][COLS], int x, int y) { return (mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][x + 1] + mine[x][x - 1] + mine[x][x + 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] - 8 * '0' ); } void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int x; int y; int win=0; while (win 
  
    = 1 && x <= row && y >= 1 && y <= col) { if (mine[x][y] == '1') { printf("很遗憾,踩雷了,游戏结束!\n"); show_board(mine, ROW, COL); break; } else { int count = get_mine(mine, x, y); show[x][y] = count+'0'; show_board(show, ROW, COL); win++; } } else { printf("坐标非法,请重新输入:\n"); } } if (win == row * col - EASY) printf("恭喜你,排雷成功!\n"); } 
  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216867.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:53
下一篇 2026年3月18日 上午10:53


相关推荐

  • c++的条件运算符_条件运算符都有哪些

    c++的条件运算符_条件运算符都有哪些一、运算符1.条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。&amp;amp;amp;amp;amp;amp;amp;lt;表达式1&amp;amp;amp;amp;amp;amp;amp;gt;?&amp;amp;amp;amp;amp;amp;amp;lt;表达式2&amp;amp;amp;amp;amp;amp;amp;gt;:&amp;amp;amp;amp;amp;amp;a

    2026年4月15日
    6
  • Blazor编辑表单状态控件

    Blazor编辑表单状态控件概述 BlazorEditFo 控件这是描述一组有用的 BlazorEdit 控件的系列文章中的第一篇 这些控件解决了开箱即用编辑体验中的一些当前缺点 而无需购买昂贵的工具包 代码和示例该存储库包含一个项目 该项目实现了本系列中所有文章的控件 你可以在这里找到它 示例站点位于 https cec blazor database azurewebsite net 您可以在 https cec blazor database azurewebsite net

    2026年3月16日
    2
  • 数学函数图像处理_matlab基本图像处理

    数学函数图像处理_matlab基本图像处理文章目录1.imdilate2.imresize3.imfinfo4.imcomplement总结1.imdilate功能:进行膨胀操作介绍用法:IM2=imdilate(IM,SE)对灰度图像或二值图像IM进行膨胀操作,返回结果图像IM2。SE为由strel函数生成的结构元素对象。IM2=imdilate(IM,NHOOD)对灰度图像或二值图像IM进行膨胀操作,返回结果图像IM2。参量NHOOD是一个由O和1组成的矩阵,指定邻域。IM2=imdilate(…,SHAPE)对图

    2022年10月5日
    5
  • translate 3d android,translate3d(0,0,0)作用

    translate 3d android,translate3d(0,0,0)作用http blog bingo929 com transform translate3d translatez transition gpu hardware acceleration htmlhttp stackoverflo com questions 18529381 what does webkit transform translate3d0 0 0 exactly do ap

    2026年3月18日
    2
  • PHP如何解决网站大流量与高并发的问题(一)「建议收藏」

    PHP如何解决网站大流量与高并发的问题(一)

    2022年2月9日
    74
  • Focal loss 和 GHM

    Focal loss 和 GHMFocalLossfor 是 ICCV2017 的 Beststudentp 文章思路很简单但非常具有开拓性意义 效果也非常令人称赞 GHM gradientharm 发表于 GradientHarm stageDetecto AAAI2019 是基于 Focalloss 的改进 也是个人推荐的一篇深度学习必读文章 1 FocalLossFoc 的引入主要是为了

    2026年3月17日
    2

发表回复

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

关注全栈程序员社区公众号