C语言开发入门到实战--C语言实现扫雷
小职 2021-09-06 来源 : 阅读 606 评论 0

摘要:本文主要介绍了C语言开发入门到实战--C语言实现扫雷,通过具体的内容向大家展现,希望对大家C语言开发的学习有所帮助。

本文主要介绍了C语言开发入门到实战--C语言实现扫雷,通过具体的内容向大家展现,希望对大家C语言开发的学习有所帮助。

C语言开发入门到实战--C语言实现扫雷

test.c


#define _CRT_SECURE_NO_WARNINGS

#include "game.h"

 

void game()

{

char mine[ROWS][COLS] = { 0 };

char show[ROWS][COLS] = { 0 };

//初始化棋盘

InitBoard(mine, ROWS, COLS, '0');

InitBoard(show, ROWS, COLS, '*');

//打印棋盘

DisplayBoard(show, ROW, COL); 

//布置雷

SetMine(mine, ROW, COL);

//排查雷

FindMine(mine, show, ROW, COL);

}

 

void menu()

{

printf("***********************\n");

printf("***1.play     0.exit***\n");

printf("***********************\n");

}

 

int main()

{

int input = 0;

srand((unsigned)time(NULL));

do

{

menu();

printf("请输入:");

scanf("%d", &input);

switch (input)

{

case 1:

game();

break;

case 0:

printf("游戏结束\n");

break;

default:

printf("输入错误,请重新输入\n");

}

} while (input);

return 0;

}

game.c


#define _CRT_SECURE_NO_WARNINGS

#include "game.h"

 

void InitBoard(char board[ROWS][COLS], int rows, int cols, char back)

{

int i, j;

for (i = 0; i < rows; i++)

{

for (j = 0; j < cols; j++)

{

board[i][j] = back;

}

}

}

 

void DisplayBoard(char board[ROWS][COLS], int row, int col)

{

int i, j;

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 ", board[i][j]);

}

printf("\n");

}

printf("******扫雷游戏******\n");

}

 

void SetMine(char board[ROWS][COLS], int row, int col)

{

int x, y;

int count = 10;

while (count)

{

x = rand() % row + 1;

y = rand() % col + 1;

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

{

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

count--;

}

}

}

 

int get_mine_count(char mine[ROWS][COLS], int x, int y)

{

return mine[x - 1][y - 1] +

mine[x - 1][y] +

mine[x - 1][y + 1] +

mine[x][y - 1] +

mine[x][y + 1] +

mine[x + 1][y - 1] +

mine[x + 1][y] +

mine[x + 1][y + 1] - 8 * '0';

}

 

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)

{

printf("请输入要排查的坐标:");

int x, y;

int win = 0;

while (win<row*col-EASY_COUNT)

{

scanf("%d%d", &x, &y);

if (x >= 1 && x <= row&&y >= 1 && y <= col)

{

if (mine[x][y] == '1')

{

printf("你被炸死了,游戏结束\n");

DisplayBoard(mine, ROW, COL);

break;

}

else

{

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

show[x][y] = count + '0';

DisplayBoard(show, ROW, COL);

win++;

}

}

else

{

printf("坐标非法,请重新输入!");

}

}

if (win == row*col - EASY_COUNT)

{

printf("恭喜你,排雷成功!\n");

}

}

game.h


#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

#include<windows.h>

 

#define ROW 9

#define COL 9

 

#define ROWS ROW+2

#define COLS COL+2

 

#define EASY_COUNT 10

void InitBoard(char board[ROWS][COLS], int rows, int cols, char back);

void DisplayBoard(char board[ROWS][COLS], int row, int col);

void SetMine(char board[ROWS][COLS], int row, int col);

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

C语言开发入门到实战--C语言实现扫雷

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程