返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么使用C语言代码实现扫雷小游戏
  • 510
分享到

怎么使用C语言代码实现扫雷小游戏

2023-07-04 11:07:37 510人浏览 泡泡鱼
摘要

本篇内容主要讲解“怎么使用C语言代码实现扫雷小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C语言代码实现扫雷小游戏”吧!一、扫雷扫雷小游戏主要是利用字符数组、循环语句和函数实现。设

本篇内容主要讲解“怎么使用C语言代码实现扫雷小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C语言代码实现扫雷小游戏”吧!

一、扫雷

扫雷小游戏主要是利用字符数组、循环语句和函数实现。

设计思路:雷盘大小为9*9,但是为了后续能更好的统计出雷的个数在定义数组的时候定义大小为11*11,先定义两个字符数组,一个用来记录雷的位置,另一个用来展现给玩家,初始化雷盘,将两个字符数组分别全部赋值为字符0和字符*,打印棋盘,随机设置雷所在位置,根据玩家输入的坐标排查上下左右8个格子中的雷,并判断输入坐标处是否有雷。

玩法:玩家选择开始游戏之后,输入坐标,如果坐标处有雷,输入坐标处标记为$,并打印出来游戏结束重新选择;如果坐标处没有雷,统计出附近8个格子中雷的个数并在输入坐标处展现出来;如果输入坐标已经被排查过了,则提示已排查过。

1.演示效果

为了更好的演示,将雷的个数设置为79个,同时将显示出雷的位置的雷盘也展现出来。

具体效果如下:

怎么使用C语言代码实现扫雷小游戏

2.完整代码

#include <stdio.h>#include <time.h>#include <stdlib.h>#define ROW 9//展现出来的行#define COL 9//展现出来的列#define ROWS ROW+2//全部的行#define COLS COL+2//全部的列#define MINE 79//雷的个数void Init_board(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;}}}//打印雷盘void Print_board(char board[ROWS][COLS], int row, int col){int i = 0;int j = 0;for (j = 0; j <= col; j++){printf("%d ", j);//打印出来列号}printf("\n");for (i = 1; i <= row; i++){printf("%d ",i);//打印出来行号for (j = 1; j <= row; j++){printf("%c ", board[i][j]);}printf("\n");}}void Set_mine(char mine[ROWS][COLS], int row, int col){int count = MINE;while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}}int Get_mine(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 + 1][y + 1] +mine[x][y + 1] +mine[x - 1][y + 1] - 8 * '0');}void Find_mine(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-MINE){printf("请输入坐标>:");scanf("%d%d",&x,&y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (show[x][y] == '*'){if (mine[x][y] == '1'){printf("你被炸死了,通关失败!\n");show[x][y] = '$';//炸死时用符号$代表所输入的坐标Print_board(show, row, col);break;}else{int count = Get_mine(mine, x, y) + '0';show[x][y] = count;Print_board(show, row, col);win++;}}else{printf("输入的坐标已被排查过,请重新输入!\n");}}else{printf("输入的坐标非法,请重新输入!\n");}}if (win == row * col - MINE){printf("恭喜你,成功通关!\n");Print_board(show, row, col);}}void game(){//定义两个数组,mine用来记录雷的位置,show展现给玩家char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };//初始化雷盘//全部初始化为字符0和字符*Init_board(mine, ROWS, COLS,'0');Init_board(show, ROWS, COLS, '*');//打印雷盘//Print_board(mine, ROW, COL);Print_board(show, ROW, COL);//布置雷Set_mine(mine, ROW, COL);Print_board(mine, ROW, COL);//排雷Find_mine(mine, show, ROW, COL);}void menu(){printf("************************\n");printf("****  1.开始游戏    ****\n");printf("****  0.结束游戏    ****\n");printf("************************\n");}int main(){int input = 0;srand((unsigned int)time(NULL));do {menu();printf("请选择>:");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("游戏结束!\n");break;default:printf("选择错误,请重新选择!\n");break;}} while (input);}

二、代码解析

1.初始化雷盘

//初始化雷盘void Init_board(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;}}}

char set是用来接收传过来的字符。

2.打印雷盘

//打印雷盘void Print_board(char board[ROWS][COLS], int row, int col){    int i = 0;    int j = 0;    for (j = 0; j <= col; j++)    {        printf("%d ", j);//打印出来列号    }    printf("\n");    for (i = 1; i <= row; i++)    {        printf("%d ", i);//打印出来行号        for (j = 1; j <= row; j++)        {            printf("%c ", board[i][j]);        }        printf("\n");    }}

打印雷盘时将其所在的序列号也打印了出来。

3.布置雷

void Set_mine(char mine[ROWS][COLS], int row, int col){    int count = MINE;    while (count)    {        int x = rand() % row + 1;        int y = rand() % col + 1;        if (mine[x][y] == '0')        {            mine[x][y] = '1';            count--;        }    }}

通过用rand函数和srand函数生成随机坐标布置雷的位置,一共布置count个雷。

4.排雷

int Get_mine(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 + 1][y + 1] +        mine[x][y + 1] +        mine[x - 1][y + 1] - 8 * '0');}void Find_mine(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 - MINE)    {        printf("请输入坐标>:");        scanf("%d%d", &x, &y);        if (x >= 1 && x <= row && y >= 1 && y <= col)        {            if (show[x][y] == '*')            {                if (mine[x][y] == '1')                {                    printf("你被炸死了,通关失败!\n");                    show[x][y] = '$';//炸死时用符号$代表所输入的坐标                    Print_board(show, row, col);                    break;                }                else                {                    int count = Get_mine(mine, x, y) + '0';                    show[x][y] = count;                    Print_board(show, row, col);                    win++;                }            }            else            {                printf("输入的坐标已被排查过,请重新输入!\n");            }        }        else        {            printf("输入的坐标非法,请重新输入!\n");        }    }    if (win == row * col - MINE)    {        printf("恭喜你,成功通关!\n");        Print_board(show, row, col);    }}

Get_mine函数用来计算输入坐标附近的雷的个数,通过附近字符1相加之后减去8个字符0计算出来,减去字符0是因为字符1和字符0的ASCII码值相差1,利用这个规则将字符转化为数字。Find_mine函数通过输入的坐标,判断坐标处是否为雷或展现出附近雷的个数亦或者结束游戏。

5.游戏函数主体

void game(){//定义两个数组,mine用来记录雷的位置,show展现给玩家char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };//初始化雷盘//全部初始化为字符0和字符*Init_board(mine, ROWS, COLS, '0');Init_board(show, ROWS, COLS, '*');//打印雷盘//Print_board(mine, ROW, COL);Print_board(show, ROW, COL);//布置雷Set_mine(mine, ROW, COL);Print_board(mine, ROW, COL);//排雷Find_mine(mine, show, ROW, COL);}

6.菜单函数

void menu(){    printf("************************\n");    printf("****  1.开始游戏    ****\n");    printf("****  0.结束游戏    ****\n");    printf("************************\n");}

7.头文件、宏定义及主函数

#include <stdio.h>#include <time.h>#include <stdlib.h>#define ROW 9//展现出来的行#define COL 9//展现出来的列#define ROWS ROW+2//全部的行#define COLS COL+2//全部的列#define MINE 79//雷的个数int main(){int input = 0;srand((unsigned int)time(NULL));do {menu();printf("请选择>:");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("游戏结束!\n");break;default:printf("选择错误,请重新选择!\n");break;}} while (input);}

到此,相信大家对“怎么使用C语言代码实现扫雷小游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么使用C语言代码实现扫雷小游戏

本文链接: https://lsjlt.com/news/344704.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用C语言代码实现扫雷小游戏
    本篇内容主要讲解“怎么使用C语言代码实现扫雷小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C语言代码实现扫雷小游戏”吧!一、扫雷扫雷小游戏主要是利用字符数组、循环语句和函数实现。设...
    99+
    2023-07-04
  • 用C语言实现扫雷小游戏实例代码
    本篇内容主要讲解“用C语言实现扫雷小游戏实例代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用C语言实现扫雷小游戏实例代码”吧!本文实例为大家分享了C语言版扫雷小游戏的具体代码,供大家参考,具...
    99+
    2023-06-20
  • 使用C语言实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 游戏规则 在一个9*9的地图上一共有十个雷,翻开所有不是雷的位置 游戏即为胜利, 如果踩到雷,游戏结束 ...
    99+
    2024-04-02
  • c语言扫雷小游戏源代码
    这期内容当中小编将会给大家带来有关c语言扫雷小游戏源代码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。说明:该游戏的实现需要建立三个文件test2.c:整个游戏,开始游戏/退出游戏的大体执行流程game2...
    99+
    2023-06-06
  • C语言实现扫雷小游戏详细代码
    前言 扫雷是一款很经典的电脑小游戏,扫雷就是要把所有非地雷的格子找出即为胜利,输入到地雷格子就算失败。游戏主区域由很多个方格组成,输入一个方格坐标,方格即被打开并显示出方格中的数字,...
    99+
    2024-04-02
  • C语言怎么实现扫雷小游戏
    本篇内容介绍了“C语言怎么实现扫雷小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供...
    99+
    2023-06-20
  • 怎么用C语言实现扫雷小游戏
    这篇文章主要讲解了“怎么用C语言实现扫雷小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C语言实现扫雷小游戏”吧!具体内容如下经典扫雷游戏规则:当玩家点击游戏区域,该处周围的八个位...
    99+
    2023-06-25
  • 用C语言实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 1. 规则 随便点一个格子,会有一块,上面的数字就代表数字周围八个格子会有几个雷,是1他周围就只有1个雷...
    99+
    2024-04-02
  • 怎么用c++代码实现扫雷小游戏
    这篇文章主要介绍了怎么用c++代码实现扫雷小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用c++代码实现扫雷小游戏文章都会有所收获,下面我们一起来看看吧。分成两个源文件和一个头文件注意:这串代码并不完...
    99+
    2023-06-29
  • C语言代码实现简单的扫雷小游戏
    C语言+EASYX实现扫雷,供大家参考,具体内容如下 主要思路就是通过一个二维数组存储不同的数来代表0到8等具体的图片,再配合鼠标的位置和点击情况,来改变数组某一项的值,而显示不同的...
    99+
    2024-04-02
  • C语言实现扫雷小游戏的示例代码
    目录一、扫雷1.演示效果2.完整代码二、代码解析1.初始化雷盘2.打印雷盘3.布置雷4.排雷5.游戏函数主体6.菜单函数7.头文件、宏定义及主函数一、扫雷 扫雷小游戏主要是利用字符数...
    99+
    2022-11-13
    C语言扫雷游戏 C语言 扫雷 C语言 游戏
  • 如何使用C语言代码实现扫雷游戏
    本篇内容主要讲解“如何使用C语言代码实现扫雷游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用C语言代码实现扫雷游戏”吧!概述扫雷是一款大众类的益智小游戏。游戏目标是根据点击格子出现的数...
    99+
    2023-06-08
  • 使用C语言实现扫雷游戏
    目录一、游戏介绍二、实现模块三、实现原理四、实现逻辑五、全部代码六、运行结果本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 一、游戏介绍 扫雷游戏是在一个...
    99+
    2022-11-13
    C语言 扫雷
  • 用C语言实现扫雷游戏
    用C语言实现扫雷游戏,因为代码会比较多,所以采用多文件的方式,使代码看起来更好。 一.main.c 在主调函数中首先要提供一个给用户选择的界面,在这里我们假定选择1为开始游戏,0为退...
    99+
    2024-04-02
  • C语言扫雷排雷小游戏实现全程
    目录test.cgame.hgame.c详解游戏代码的实现1初化扫雷区2打印扫雷区3 设置雷4 排雷4.1展开一片的功能4.2雷标记功能的实现游戏过程test.c 在这个文件中,我们...
    99+
    2024-04-02
  • 用C语言简单实现扫雷小游戏
    本文实例为大家分享了C语言简单实现扫雷小游戏的具体代码,供大家参考,具体内容如下 设计思路 1. 定义两个二维数组,一个存放炸弹信息,一个隐藏信息后向玩家展示。 2. 玩家每一次选择...
    99+
    2024-04-02
  • 用C语言实现简单扫雷小游戏
    前言 今天学习了制作简易扫雷游戏,代码如下 提示:以下是本篇文章正文内容,下面案例可供参考 一、函数头文件(函数声明) 代码如下(示例): #pragma once #defin...
    99+
    2024-04-02
  • 用C语言实现一个扫雷小游戏
    本文实例为大家分享了C语言实现一个扫雷小游戏的具体代码,供大家参考,具体内容如下 一、全部源码 //棋盘大小 #define ROW 9 #define COL 9 //棋盘加边...
    99+
    2024-04-02
  • C语言实现扫雷小游戏详解
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏。当用户选择退出时,程序运行结束,当用户选择玩游戏时,将...
    99+
    2024-04-02
  • 基于C语言实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 game.h 设置头文件 #include<stdio.h> #include<s...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作