C语言小项目 扫雷游戏
一.基本实现功能
1.建立一个游戏菜单
2.创建游戏盘,一个埋雷,一个显示。
3.打印游戏盘。
4.翻开坐标如若没踩到雷显示周围一圈8个有几个雷。
5.判断胜利 翻开的格子数等于没埋雷的个数。
二.源代码展示
1.头文件 minesweep.h
#pragma once
#include <stdio.h>
#include <Windows.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#define ROW 12
#define COL 12
#define NUM 10
#define BOOM '1'
void Game();
int Login();
2.游戏逻辑 game.c
#include "minesweep.h"
void Menu() {printf("*------------------*\n");printf("| 1.开始游戏 |\n");printf("| 2.退出游戏 |\n");printf("*------------------*\n");printf("请输入你的选择:");
}
int main()
{int flag = 0;int sclect = 0;srand((unsigned long)time(NULL));Menu();while (!flag) {scanf_s("%d", &sclect);switch (sclect) {case 1:Game();break;case 2:flag = 1;break;default:printf("你输入的数据不合法,请重新输入!");break;}}printf("下次再来玩吧!再见!");return 0;
}
3.实现函数 mysweep.c
#include "minesweep.h"
void SetBoom(char board[][COL],int row,int col) {//埋雷int i = 0;while (i < NUM) {int _x = rand() % 10 + 1; //我们的棋盘是10*10 那就模10+1 xy 对应放雷int _y = rand() % 10 + 1;if (board[_x][_y] == BOOM) { //可能随机是重复那就不放了continue;}board[_x][_y] = BOOM;i++;}
}void Showboard(char board[][COL], int row, int col) {//棋盘的打印printf(" ");for (int i = 1; i < col - 1; i++){printf("%d ", i);}printf("\n");for (int j = 1; j < row - 1; j++){printf("%2d ", j);printf("|");for (int k = 1; k < col - 1; k++){printf("%c|", board[j][k]);}printf("\n");}printf("\n");
}int CountSweeps(char board[][COL], int x, int y) { //我们存的是字符数组哦 return board[x - 1][y - 1] + board[x - 1][y] + \board[x - 1][y + 1] + board[x][y - 1] + \board[x][y + 1] + board[x + 1][y - 1] + \board[x + 1][y] + board[x + 1][y + 1] - 8 * '0';
}void Game() {char show_board[ROW][COL];char sweep_board[ROW][COL];int clear = 0;int sum = (ROW - 2) * (COL - 2) - NUM;memset(show_board, '*', sizeof(show_board));memset(sweep_board, '0', sizeof(sweep_board));SetBoom(sweep_board, ROW, COL);while (1) {int x = 0;int y = 0;system("cls");Showboard(show_board,ROW,COL);printf("请输入你要翻开的坐标:");scanf_s("%d %d", &x, &y);if (!(x >= 1 && x <= ROW - 2 && y >= 1 && y <= COL - 2)) {printf("你输入的数据不合法!请重新输入!");}if (show_board[x][y] != '*') {printf("扫雷的位置已经被排除!\n");continue;}if (sweep_board[x][y] == '1') {printf("对不起,你被炸死了!\n");break;}else {int count = CountSweeps(sweep_board,x,y);//翻开没有被炸死而且合法那就根据判断胜利因数咱就空白++show_board[x][y] = count + '0';clear++;}if (clear >= sum) { //++=就是原本设置除雷剩下的刚好相等就胜利printf("恭喜你,你赢了!\n");break;}}
}
三.小结
这次的扫雷还是很初阶的没有图形操作界面 而且和我们老xp上面的扫雷不一样很多功能还没有实现比如插旗排雷 还有点开一个·周围还能展开很多格子,还是有待提高希望各路大神前来指证谢谢!!!
C语言小项目 扫雷游戏相关推荐
- C语言小项目 -- 扫雷游戏完整代码(递归展开 + 选择标记)
大家好,今天我们将一起用C语言实现一个经典小游戏 – 扫雷,Let is go ! 文章目录
- C语言入门项目——扫雷游戏(ege图形库+codeblocks)
扫雷游戏适合C练手,会C基本语法就可以尝试.需要导入ege图形库(文章后半部分写了ege如何导入codeblocks,以及我用到的ege函数) 一.先介绍如何将ege图形库导入codeblocks: ...
- c语言为什么要建项目,一个C语言小项目为什么都说牛逼
原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...
- C语言小项目——走迷宫
C语言小项目--走迷宫 设计方向: 1.定义二维字符数组作为迷宫 2.定义变量记录老鼠的位置 3.判定移动后位置的变化 4.记录游戏时长 5.判定到达终点的条件 总体设计: 1.用不同字符代表墙.老鼠 ...
- Java语言实现的扫雷游戏(一)
Java类库中提供了用于GUI的swing开发工具包,我们可以利用swing设计出一些简单的经典小游戏,如扫雷,推箱子,俄罗斯方块等.接下来我就简单分享一下用Java设计扫雷游戏的思路与过程. 首先, ...
- C语言小项目之“究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的”通讯录之*派小猩*作品
C语言小项目之"究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的"通讯录之派小猩作品 项目概述 基于C语言开发一个多功能的通讯录 功能目录 1.增加 2.删除 3.查找 4.修改 5.显示 6 ...
- c语言小项目(排雷游戏实现)
文章目录 1.了解项目搭建 2.了解扫雷游戏 3.游戏主逻辑 4.玩游戏实现逻辑 4.1 前提 4.1.1 棋盘越界问题的解决 4.1.2 置雷棋盘和排雷棋盘的设置 4.2 玩游戏主逻辑 4.3 游戏 ...
- 【C语言】实现扫雷游戏(详解篇)
大家好,我是Abert. 这篇文章将分享利用C语言实现扫雷的全过程及其讲解. 文章目录 1.进行程序环境的配置 2.各种功能的实现及逻辑关系的整理 2.1 创建游戏初始界面(进入\退出 游戏) 2.2 ...
- C语言实现简单扫雷游戏
前言: 相信大家对于扫雷都不陌生,但如果用C语言该如何实现呢? 原理介绍: 首先我们得了解扫雷游戏的原理,在一个格子数长宽相同的大正方形中随机布置雷,当我们点开一个小方格时如果此小格不是雷将显示以此方 ...
最新文章
- 如何用JavaScript手动实现一个栈
- SAP云平台上应用的HTTPS证书
- 习题1083字符转换
- bootstrap table无法服务器分页_layui分页的大坑,RequestPayload和FormData
- MongoDB 事务,复制和分片的关系
- postgresql基本使用(一)
- ArcGIS 导出点图层的中的XY坐标
- flutter initializing gradle终极解决方案
- html微数据,HTML5之 Microdata微数据
- 移动端向上滑动整个屏幕
- Win10 专业版激活!
- 用javascript实现一个打乱文字小程序
- Hexo添加Icarus主题
- 完整的OpenDDS的发布订阅编写及源码(Windows)
- 电脑现在找不到驱动器,设备管理器显示DVD/CD-ROM驱动器是黄色感叹号
- arctanx麦克劳林公式推导过程_实用反三角函数运算公式
- 京东购物车(html+css+js)
- 【R语言】dplyr包
- 单独使用elementui_Vue在单独引入js文件中使用ElementUI的组件
- 【视频分类】3D-ResNets-PyTorch复现
热门文章
- 暗黑修仙 页游 架设教程 单机 自玩 一键端
- 什么是Transformer
- Java中的对象类型像引用还是指针,谁是谁非?
- 国际电话区号--各国或地区电话国际区号对照表
- UVA 1455 Kingdom 线段树+并查集
- 东京工业大学 计算机 大学院,2020年东京工业大学计算机科学硕士申请条件
- 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业
- 微搭低代码入门教程01
- java继承链中方法调用优先级.顺序:this.show(object)super.show(object)this.show((super)object)super.show((super))
- ANSYS|workbench输出梁的剪力图和弯矩图