当前位置:网站首页>C language games - minesweeping
C language games - minesweeping
2022-07-06 20:32:00 【farewell12345】
The game passes 3 Source file implementation
1. The header file game.h
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS ROW + 2
#define COLS COL + 2
// The number of rows on the chessboard
#define ROW 9
// The number of rows on the chessboard
#define COL 9
// Number of Mines arranged
#define EASY_COUNT 10
// Initialize array
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
// Print array
void DisplayBoard(char board[ROWS][COLS], int row, int col);
// Arrange thunder
void SetMine(char board[ROWS][COLS], int row, int col);
// Check the thunder
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
2. The game logic test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void game()
{
// Create two two-dimensional arrays , A record of the location of the mine , A message used to display thunder
// Record the location of the mine
char mine[ROWS][COLS] = { 0 };
// Show Ray's information
char show[ROWS][COLS] = { 0 };
// Initialize array
InitBoard(mine, ROWS, COLS, '0');
InitBoard(show, ROWS, COLS, '*');
// Print array
//DisplayBoard(mine, ROW, COL);
DisplayBoard(show, ROW, COL);
// Arrange thunder
SetMine(mine, ROW, COL);
//DisplayBoard(mine, ROW, COL);
// Check the thunder
FindMine(mine, show, ROW, COL);
}
void menu()
{
printf("*************************\n");
printf("******** 1. Mine clearance *******\n");
printf("******** 0. sign out *******\n");
printf("*************************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf(" Please enter :");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf(" sign out \n");
break;
default:
printf(" Input error , Please re-enter \n");
break;
}
} while (input);
return 0;
}3. The subject of the game game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
// Initialize array
void InitBoard(char board[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++)
{
board[i][j] = set;
}
}
}
// Print array
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
int i = 0;
int j = 0;
// Print the number of checkerboard columns
for (i = 0; i <= row; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 1; i <= row; i++)
{
// Print checkerboard lines
printf("%d ", i);
for (j = 1; j <= col; j++)
{
// Print chessboard information
printf("%c ", board[i][j]);
}
printf("\n");
}
}
// Arrange thunder
void SetMine(char board[ROWS][COLS], int row, int col)
{
int count = EASY_COUNT;
while(count > 0)
{
int i = rand() % row + 1;
int j = rand() % col + 1;
if (board[i][j] == '0')
{
board[i][j] = '1';
count--;
}
}
}
// Calculate the information of surrounding mines
int get_mine_count(char mine[ROWS][COLS], int x, int y)
{
//1+'0'='1' 2+'0'='2' …………
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';
}
// Expand ray
void ExpandMine(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y)
{
// Recursive constraints
if (x == 0 || y == 0 || x == ROWS - 1 || y == COLS - 1)
{
return;
}
// Judge whether the coordinates have been calculated
if (show[x][y] != '*')
{
return;
}
int count = get_mine_count(mine, x, y);
if (count != 0)
{
show[x][y] = count + '0';
}
else
{
show[x][y] = ' ';
ExpandMine(mine, show, x - 1, y - 1);
ExpandMine(mine, show, x - 1, y);
ExpandMine(mine, show, x - 1, y + 1);
ExpandMine(mine, show, x, y - 1);
ExpandMine(mine, show, x, y + 1);
ExpandMine(mine, show, x + 1, y - 1);
ExpandMine(mine, show, x + 1, y);
ExpandMine(mine, show, x + 1, y + 1);
}
}
// Check the thunder
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
int x = 0;
int y = 0;
//win Used to judge whether all mines have been discharged
int win = row * col - EASY_COUNT;
do
{
printf(" Please enter the coordinates :");
scanf("%d %d", &x, &y);
// Judge the legitimacy of the input coordinates
if (x > 0 && x <= row && y > 0 && y <= col)
{
if (mine[x][y] == '1')
{
printf(" The game failed \n");
DisplayBoard(mine, ROW, COL);
break;
}
else
{
// Calculate the information of surrounding mines
ExpandMine(mine, show, x, y);
DisplayBoard(show, ROW, COL);
//win--;
}
}
else
{
printf(" Illegal input coordinates , Please re-enter \n");
}
} while (win);
if (win == 0)
{
printf(" congratulations , Mine clearance is successful \n");
}
}边栏推荐
- Crawler (14) - scrape redis distributed crawler (1) | detailed explanation
- Oceanbase Community Edition OBD mode deployment mode stand-alone installation
- 【每周一坑】信息加密 +【解答】正整数分解质因数
- Rhcsa Road
- Introduction of Xia Zhigang
- Review questions of anatomy and physiology · VIII blood system
- In line elements are transformed into block level elements, and display transformation and implicit transformation
- 深度学习分类网络 -- ZFNet
- How does kubernetes support stateful applications through statefulset? (07)
- How to select several hard coded SQL rows- How to select several hardcoded SQL rows?
猜你喜欢

【DSP】【第一篇】开始DSP学习
![[network planning] Chapter 3 data link layer (3) channel division medium access control](/img/df/dd84508dfa2449c31d72c808c50dc0.png)
[network planning] Chapter 3 data link layer (3) channel division medium access control

RT thread I2C tutorial

【DSP】【第二篇】了解C6678和创建工程

Rhcsa Road

JMeter server resource indicator monitoring (CPU, memory, etc.)
![[weekly pit] information encryption + [answer] positive integer factorization prime factor](/img/d8/a367c26b51d9dbaf53bf4fe2a13917.png)
[weekly pit] information encryption + [answer] positive integer factorization prime factor

Application layer of tcp/ip protocol cluster

深度学习分类网络 -- ZFNet

OLED屏幕的使用
随机推荐
What programming do children learn?
Discussion on beegfs high availability mode
5. Nano - Net in wireless body: Top 10 "is it possible?" Questions
BUUCTF---Reverse---easyre
Use of OLED screen
Web security - payload
[cloud lesson] EI lesson 47 Mrs offline data analysis - processing OBS data through Flink
动态切换数据源
Tencent cloud database public cloud market ranks top 2!
SSO single sign on
APS taps home appliance industry into new growth points
(工作记录)2020年3月11日至2021年3月15日
In line elements are transformed into block level elements, and display transformation and implicit transformation
Problems encountered in using RT thread component fish
Special topic of rotor position estimation of permanent magnet synchronous motor -- Summary of position estimation of fundamental wave model
Node.js: express + MySQL实现注册登录,身份认证
Groovy基础语法整理
Database - how to get familiar with hundreds of tables of the project -navicat these unique skills, have you got it? (exclusive experience)
recyclerview gridlayout 平分中间空白区域
How to select several hard coded SQL rows- How to select several hardcoded SQL rows?