C语言实现扫雷小游戏(适合初学者)

扫雷小游戏作为初学c语言的小白有很大的帮助,其中用到了函数的定义,函数的声明,循环语句,数组思想等等知识,对于代码理解和设计代码思路有很大的帮助,本文就详细介绍了代码的各个步骤和运行结果。希望给到和我一样的小白一点帮助。

//game.h头文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9//定义了界面的长宽,可以直更改ROW,COL的值,避免了程序中数字重复出现
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define EASYCOUNT 10//定义了雷的个数,即游戏难度,也可以运用再测试时,比如在通关界面时,直接可以得到结果。
//初始化扫雷棋盘
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
void DispalyBoard(char board[ROWS][COLS], int row, int col);
void SetMine(char mine[ROWS][COLS], int row, int col);
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
//game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
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//set可以更改为各种字符,随你喜欢;
 }
 }
}
void DispalyBoard(char board[ROWS][COLS], int row, int col)//打印数组函数
{
 int i = 0;
 int j = 0;
 for ( i = 0; i <=row; i++)
 {
 printf("%-2d", i);
 }
 printf("\n");
 for (i = 1; i <= row; i++)
 {
 printf("%d", i);
 for (j = 1; j <= col; j++)
 {
 printf("%2c", board[i][j]);
 }
 printf("\n");
 }
}
void SetMine(char mine[ROWS][COLS], int row, int col)//布置雷的函数
{
 int count = EASYCOUNT//难度,可以在头文件中更改;
 while (count)
 {
 int x = rand() % row + 1;
 int y = rand() % col + 1;
 if (mine[x][y]=='0')
 {
 mine[x][y] = '1' ;
 count--;
 }
 }
}
int GetMineCount(char mine[ROWS][COLS], int x, int y)//返回值,即在玩家输入坐标时,判断该坐标有没有雷,如果没有返回周围一圈的雷数
{

 return (mine[x - 1][y] +
 mine[x - 1][y - 1] +
 mine[x][y - 1] +
 mine[x + 1][y - 1] +
 mine[x + 1][y] +
 mine[x][y + 1] +
 mine[x+1][y + 1] +
 mine[x - 1][y + 1] - 8 * '0');
}
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
 int x = 0;
 int y = 0;
 int win = 0;
 while (win-row*col-EASYCOUNT)
 {
 printf("请输入要排查的坐标:>");
 scanf("%d%d", &x, &y);
 if (x >= 1 && x <= row && y >= 1 && y <= col)
 {
 if (mine[x][y] == '1')
 {
 printf("很不幸,你被炸死了\n");
 DispalyBoard(mine, row, col);
 break;
 }
 else
 {
 int count = GetMineCount(mine,x,y);
 show[x][y] = count + '0';
 DispalyBoard(show, row, col);
 win++;
 }
 if (win == row*col - EASYCOUNT)
 {
 printf("恭喜你通关了!!!\n");
 DispalyBoard(mine, row, col);
 }
 }
 else
 {
 printf("注意输入范围,请重新输入:>\n");
 }
 }
}
//paly.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void menu()//菜单功能
{
 printf("********************\n");
 printf("**** 1.paly ****\n");
 printf("********************\n");
 printf("**** 0.out ****\n");
}
void game()
{
 //雷的信息储存
 //1.布置好的雷的信息:
 char mine[ROWS][COLS] = { 0 };
 //2.排查出的雷的信息:
 char show[ROWS][COLS] = { 0 };
 //初始化:
 InitBoard(mine, ROWS, COLS,'0');
 InitBoard(show, ROWS, COLS,'*');
 //打印棋盘:
 //DispalyBoard(mine, ROW, COL);
 //DispalyBoard(show, ROW, COL);
 //布置雷:
 SetMine(mine, ROW, COL);
 //打印布置好的雷
 //DispalyBoard(mine, ROW, COL);
 DispalyBoard(show, ROW, COL);
 //排查雷
 FindMine(mine,show, ROW, COL);
}
void test()
{
 srand((unsigned)time(NULL));
 int input = 0;
 do
 {
 menu();
 printf("请根据菜单选择:>\n");
 scanf("%d", &input);
 switch (input)
 {
 case 1:
 game();
 break;
 case 0:
 printf("退出游戏:>\n");
 break;
 default:
 printf("输入错误,请重新输入:>\n");
 break;
 }
 } while (input);
}
int main()
{
 test();
 return 0;
}

菜单界面:

运行时的扫雷界面(参考坐标为玩家提供方便):

假如踩雷,游戏失败界面:

排雷完毕游戏通关的界面:

更多C++精彩小游戏请点击专题:经典游戏 进行学习

小编还为大家准备了精彩的专题:javascript经典小游戏汇总

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

(0)

相关推荐

  • C语言实现简单扫雷游戏

    本文实例为大家分享了C语言实现简单扫雷游戏的具体代码,供大家参考,具体内容如下 步骤 1.首先打印游戏选择菜单 2.地图及初始化 1).展示给玩家的地图(show_map) 2).地雷的图(mine_map可知地雷的位置) 3.打印地图 4.用户输入坐标,并检查坐标的合理性 5.判断当前位置是否有地雷,没有则出现数字(表示周围格子中有几个地雷) 6.打印新的地图 7.重复3~6步骤,直到踩雷游戏结束,或胜利. 8重新继续游戏或退出! 代码 主函数及游戏选择菜单 #include<stdio.h>

  • C语言简易扫雷游戏

    本文实例为大家分享了C语言扫雷游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAX_ROW 9 #define MAX_COL 9 #define MINE_C0UNT 10 void menu() { printf("************************\n"); printf("***** 1.play *

  • C语言实现扫雷程序

    使用C语言实现简单的扫雷程序,主要是对二维数组的运用,我们需要一个头文件,两个源文件来实现. game.h //包含函数的声明,宏定义 test.c //包含主函数,函数调用 game.c //包含函数的定义 整体思路 1.要完成一个简单的扫雷程序,我们需要创建两个二维数组,一个保存我们随机生成的雷,另外一个向外界展示. //使用宏定义定义常量,方便之后对数组的使用 #define ROW 11 //雷 #define COL 11 #define ROWS 9 //棋盘 #define COL

  • C语言快速实现扫雷小游戏

    本文实例为大家分享了C语言扫雷小游戏的具体实现代码,供大家参考,具体内容如下 一.分析游戏步骤: 具体步骤如图: 二.代码实现: 游戏步骤想好之后,就是用代码把步骤一步一步的实现.具体代码如下: 1.游戏主要实现: game.c #define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void game() { char mine[ROW + 2][COL + 2]; //记录地雷的数组 char show[ROW + 2][COL + 2

  • C语言代码实现扫雷小游戏

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 主页面: 游戏页面: 虽然页面比较low,但我已经尽力了 具体代码实现: #include<stdio.h> #include<windows.h> #include<conio.h> #include<stdlib.h> #include<time.h> int n;//记录已经探索的区域数 int x,y;//光标的横纵坐标 int T;//判断游戏是否失败,T=1

  • C语言实现扫雷游戏

    本文将介绍如何用C语言多文件编程实现扫雷 该示例扫雷程序可实现以下几个功能: 自定义雷数 踩雷后会将所有雷显示出来 地图大小易修改 Mine_clearance.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 11 #define COL 11 #define 踩雷 0 #define 玩家胜利

  • C语言实现简易扫雷游戏

    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 扫雷 楔子: 扫雷游戏是我们小时候无聊时消磨时间的小玩意,虽然更新到Win10系统后经典的扫雷游戏不再了,不过它现在仍以一种抓虫子的游戏形式存在于Windows这个系统平台,不禁感慨游戏还是那个游戏,不过人已经不是那些人了啊. 其实扫雷游戏的实现也主要运用了数组和函数封装与调用的知识,具体请看程序. 以下为程序主体: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>

  • C语言扫雷游戏的实现代码

    这是一个用C语言实现的控制台扫雷小游戏,实现了随机布置炸弹.扫描炸弹.标记炸弹.百分百第一次不被炸死等功能. 编译器:vs2015 功能模块图 源代码 #include<stdio.h> #include<stdlib.h> #include<time.h> void show(int cbd[10][10],int u[10][10]) //界面输出函数 { int i, j; //for (i = 0; i < 10; i++) //输出全部炸弹信息(上帝视角

  • C语言代码实现扫雷游戏

    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 该游戏我们也是利用数组完成,设置俩个数组一个mine数组,一个show数组. mine数组存放雷,show数组显示棋盘并且显示该位置是否有雷或者显示该位置周围有几个雷. 数组大小有讲究,我们宏定义变量 ROW COL 为9 定义ROWS COLS为11,我们显示的是9X9的棋盘,也是将雷设置在9X9的位置内,但是我们设置数组是设置11X11,因为这样方便我们遍历9X9棋盘四边位置上某位置四周雷的数目,不然的话会发生越界错

  • C语言实现扫雷小游戏

    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 主函数:main.c #include "game.h" void Menu() { printf("##########################\n"); printf("##1.play 0.exit##########\n"); printf("##########################\n"); printf("##

随机推荐