扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码

扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码

本文主要详细介绍了扫雷游戏的C语言代码。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

前言

扫雷是一款经典的电脑游戏。扫雷就是找出所有非矿格,即赢,输入矿格,即输。游戏的主要区域由许多方块组成。输入一个正方形坐标,正方形将被打开,并显示正方形中的数字。方块中的数字表示在它周围的八个方块中隐藏着几个地雷。如果点击的方块是0,那么它周围有0个地雷。

本文将用VS2013带领大家用C语言编写这个小游戏。

一、所需函数

1.埋雷功能(SetMines)

2.展示线

3.展示板

(2,3函数是水平线和垂直线)

4.雷霆的计数函数(CountMines)

5.游戏功能(游戏)

6.菜单功能(菜单)

7.主要功能(主要)

二、实现过程

1.算法分析

memset函数初始化棋盘,使用SetMines函数埋雷,读取用户输入的坐标。当与mine_board的地雷“1”坐标一致时,游戏结束,否则,使用CountMines函数输出当前坐标附近的地雷数量,直到排出地雷。

我们用二维数组打印棋盘。如果要打印一个66的棋盘,我们设置的二维数组元素应该是88,因为设计算法时需要统计坐标周围的闪电个数。如果要统计边界坐标周围的闪电个数,就会出现数组越界的问题。我们可以在66的边界上加一圈元素,还需要定义88的数组元素。

c库函数memset用于初始化两个棋盘,一个埋雷,一个显示。

memset(show_board,STYLE,sizeof(show _ board));

memset(mine_board,' 0 ',sizeof(mine _ board));

添加一个memset函数:

void *memset(void *str,int c,size_t n)

str参数指向要填充的内存块。c是要设置的值,以int的形式传递,但函数在填充内存块时使用该值的无符号字符形式。n是要设置为该值的字符数。这个值返回一个指向存储字符串的指针。

2.详细代码

# define _ CRT _ SECURE _ NO _ WARNINGS 1

#包含stdio.h

#包含stdlib.h

#包含时间. h

#包含windows.h

#定义第8行

#定义第8列

#定义样式'?'

#定义NUM 10 //埋设地雷的数量

Void set mines (charboard [] [col],int row,int col)//掩埋地雷

{

int count=NUM

while(计数){

int x=rand()%(row-2)1;

int y=rand()%(col-2)1;

if (board[x][y]=='0'){

board[x][y]=' 1 ';

count-;

}

}

}

Void ShowLine(int col) //网格的水平线

{

for(int I=0;I=(col-2);i ){

printf('-');

}

printf(' \ n ');

}

Void show board (charboard [] [col],int row,int col)//网格的垂直线

{

printf(“”);

for(int I=1;I=(col-2);i ){

printf('%d ',I);

}

printf(' \ n ');

显示线(col);

for(int I=1;I=(row-2);i ){

printf('%-3d| ',I);

for(int j=1;j=(col-2);j ){

printf(' %c | ',board[I][j]);

}

printf(' \ n ');

显示线(col);

}

}

Count mines (char board [] [col],int x,int y)//统计雷数。

{

返回板[x - 1][y - 1]板[x - 1][y]板[x-1][y-1]\

board[x][y 1]board[x 1][y 1]board[x 1][y]\

board[x 1][y-1]board[x][y-1]-7 * ' 0 ';

}

无效游戏()

{

srand((无符号长整型)时间(空));

char show _ board[ROW][COL];

char mine _ board[ROW][COL];

memset(show_board,STYLE,sizeof(show _ board));//将字符样式复制到参数指向的字符串的第一个sizeof(show_board)字符。

memset(mine_board,' 0 ',sizeof(mine _ board));//将字符0复制到参数指向的字符串的第一个sizeof(mine_board)字符。

SetMines(mine_board,ROW,COL);

int count=(ROW-2)*(COL-2)-NUM;

while(计数){

系统(“cls”);

ShowBoard(show_board,ROW,COL);

printf('请输入您的位置x,y:');

int x=0;

int y=0;

scanf('%d %d ',x,y);

if(x ^ 1 | | x row-2 | | y ^ 1 | | y col-2){//判断输入坐标是否合法

printf('位置错误!\ n’);

继续;

}

if (show_board[x][y]!=STYLE){ //判断输入坐标是否已被占用

printf('位置不是* \ n ');

继续;

}

if (mine_board[x][y]=='1'){ //判断用户输入坐标是否为雷坐标

printf('游戏结束!\ n’);

ShowBoard(mine_board,ROW,COL);

打破;

}

show _ board[x][y]=count mines(mine _ board,x,y);

count-;

}

}

无效菜单()

{

printf(' # # # # # # # # # # # # # # # # # \ n ');

printf(# 1 .播放0。退出# \ n ');

printf(' # # # # # # # # # # # # # # # # # \ n ');

}

int main()

{

int quit=0;

int select=0;

而(!退出){

menu();

printf('请输入一或0:');

scanf('%d ',select);

开关(选择){

案例1:

game();

打破;

案例0:

退出=1;

打破;

默认值:

printf('位置错误,请重试!\ n’);

打破;

}

}

printf('欢迎你下次再来玩!\ n’);

系统("暂停");

返回0;

}

三、总结

这就是我的本篇文章了,此代码思路较为直接,欢迎大家和我继续讨论。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 利用c语言实现三子棋游戏的目标,c语言三子棋程序,利用C语言实现三子棋游戏
  • 留言与评论(共有 条评论)
       
    验证码: