简单扫雷游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(void)
{
// 随机产生雷的个数 (最多5个)
int numBom = -1;
srand(time(0));
numBom = rand() % 5 + 1;
// 产生雷的位置(5个雷的位置)
int arrayPos[5][2] = {0};
for(int i=0; i<numBom; i++){
int xPos = rand() % 5 + 1;
int yPos = rand() % 5 + 1;
// 避免产生相同位置的雷
for(int j=0; j<numBom; j++){
if(xPos == arrayPos[i][0] && yPos == arrayPos[i][1]){
i--;
continue;

}
}
arrayPos[i][0] = xPos;
arrayPos[i][1] = yPos;
}

// 定义地图数组和雷的位置数组
int arrayMap[7][7] = {0};
int arrayBom[7][7] = {0};
for(int i=0; i<numBom; i++){
int xPos = arrayPos[i][0];
int yPos = arrayPos[i][1];

arrayBom[xPos][yPos] = 1;
arrayMap[xPos][yPos] = -1;
}
for(int i=1; i<6; i++){
for(int j=1; j<6; j++){
if(arrayMap[i][j] == -1){
continue;
}
arrayMap[i][j] = arrayBom[i-1][j-1] + arrayBom[i-1][j] + arrayBom[i-1][j+1] +
arrayBom[i][j-1] + arrayBom[i][j+1] + arrayBom[i+1][j-1] + arrayBom[i+1][j] +
arrayBom[i+1][j+1];
}
}

// 输出地图和雷
int choise = -1;
int arrayMask[7][7] = {0};

int isExit = 0;

while(isExit == 0){

for(int i=1; i<6; i++){
for(int j=1; j<6; j++){
if(arrayMask[i][j] == 1){
printf("%d ",arrayMap[i][j]);
}else{
printf("* ");
}
}
printf("\n");
}

printf("1:挖雷 2:空地 3:退出游戏 \n");
scanf("%d",&choise);
int xPos = -1;
int yPos = -1;

if(choise == 3){
isExit = 1;
continue;
}
printf("请输入坐标(x,y)");
scanf("%d%d",&xPos,&yPos);

if(choise == 2 && arrayMap[xPos][yPos] == -1){
printf("你中雷了 \n");
isExit = 1;
for(int i=0; i<7; i++){
for(int j=0; j<7; j++){
printf("%3d",arrayMap[i][j]);
}
printf("\n");
}
}

arrayMask[xPos][yPos] = 1;

}

return 0;
}

时间: 2024-11-09 08:18:34

简单扫雷游戏的相关文章

C++实现简单的扫雷游戏(控制台版)

C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游戏时间.重新开一局等等的功能. 玩家输入坐标的方式来翻开方块只适用于小型的“雷区”,若“雷区”大了,用坐标会变得很不方便. 代码片段扫雷V1.1 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

java 简单的扫雷游戏

//扫雷游戏 package Bible001; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Mine extends MouseAdapter { private JFrame mainFrame; private int[][] data; private JButton[][] buttons; private JButton startJB; private Label l;

c++ 控制台版 扫雷游戏

白天看了一天书看累了,晚上瞅见扫雷游戏,就自己琢磨着做一个呗.想了一会,也没看别人怎么做的,大概1个多小时完成了这个简单版本的扫雷游戏,由于没怎么学过c#,界面的事情可能迟几天再做,明天要回家啦,哈哈! 先说思路,其实挺简单的. (1) 随机生成10个雷,标记到二维数组里,然后计算八个方向的雷的总数记录下来,这是预处理阶段. (2)输入要翻开的位置的坐标,如果是数字直接显示,是空白的话,这里采用bfs即宽度优先搜索解决,搜到最外层是数字(仅一层)时结束,具体详见代码. // 扫雷程序 #incl

2015扫雷游戏

题目描述 Description 扫雷游戏是一款十分经典的单机小游戏. 在 n 行 m 列的雷区中有一些格子含有地雷(称之为地雷格) ,其他格子不含地雷(称之为非地雷格) .玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格. 游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格.现在给出n行m列的雷区中的地雷分布, 要求计算出每个非地雷格周围的地雷格数.注:一个格子的周围格子包括其上.下.左.右.左上.右上.左下.右下八个方向上与之直接相邻的格子. 输入描述 

Java Swing扫雷游戏demo分享

好多年前写过简略的扫雷游戏,模拟windows的. 后来由于多次搬迁环境,弄丢了,遗憾不已啊. 于是趁着这两年还在编程的道路上,趁热再次编写了一次,同时也扩展了功能,更接近windows的扫雷. 此次重写是用Javaswing实现的(eclipse开发),考虑到各位看客可能大部分是Android岗位,于是我着重注意了功能结构化的处理,使游戏核心算法与UI分离,使用回调交互,便于迁移到android环境. 本人对swing不是很熟练,一直以来用swing做项目的人很少,学习资料也少,所有的这些都是

【Android】自己动手做个扫雷游戏

1. 游戏规则 扫雷是玩法极其简单的小游戏,点击玩家认为不存在雷的区域,标记出全部地雷所在的区域,即可获得胜利.当点击不包含雷的块的时候,可能它底下存在一个数,也可能是一个空白块.当点击中有数字的块时,游戏会展现当前点击块所包含的数字.当点击空白块时,地图会展开,形成一个大小和形状不规则的图形,该图形的边界是数字块,也可以想成展开的是一个被数字包围着的不规则图形. 1.1 数字生成规则 扫雷游戏中是通过数字来判断雷的位置的,那么,数字的生成规则是什么呢?假设游戏中只有一个雷,那么,他的将被1这个

编写扫雷游戏提高 Bash 技巧

那些令人怀念的经典游戏可是提高编程能力的好素材.今天就让我们仔细探索一番,怎么用 Bash 编写一个扫雷程序. 我在编程教学方面不是专家,但当我想更好掌握某一样东西时,会试着找出让自己乐在其中的方法.比方说,当我想在 shell 编程方面更进一步时,我决定用 Bash 编写一个扫雷游戏来加以练习. 如果你是一个有经验的 Bash 程序员,希望在提高技巧的同时乐在其中,那么请跟着我编写一个你的运行在终端中的扫雷游戏.完整代码可以在这个 GitHub 存储库中找到. 做好准备 在我编写任何代码之前,

洛谷P2670 扫雷游戏

题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字--提示周围格子中有多少个是地雷格.游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格. 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数. 注:一个格子的周围格子包括其上.下.左.右.左上.右上.左下.右下八个方向上与之直接相邻的格子. 输入输出格式 输入格式: 输入文件第一行是用一个

扫雷游戏

扫雷游戏 发布时间: 2017年8月15日 22:17   最后更新: 2017年8月15日 22:21   时间限制: 1000ms   内存限制: 128M 描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字--提示周围格子中有多少个是地雷格.游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格. 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的