鱼C论坛

 找回密码
 立即注册
查看: 4889|回复: 13

新手求助,简单扫雷代码,地图画出来了,如何排雷的代码不会写

[复制链接]
发表于 2016-12-22 17:54:38 | 显示全部楼层 |阅读模式
30鱼币
直接入主题,能把扫雷地图画出来,但如何排雷却不知道咋整的了,求助
#include <iostream>
#include <graphics.h>
#include <time.h>
using namespace std;
const int N = 10;
int map[N + 2][N + 2] = { 0 };
void mailei();  //埋地雷
int Ret_Lei();//计算地雷的个数
int main()
{
        int i, j;
        mailei();
        Ret_Lei();
        for (int i = 1; i < 10; i++)
        {
                for (int j = 0; j < 10; j++)
                {
                        cout << map[i][j] << "\t";
                }
                cout << endl;
        }
        return 0;
}
void mailei()    //埋雷
{
        srand((unsigned)time(NULL));
        int x, y;  //x,y坐标埋雷  9格宫
        int i, j, k, l;// i  j 是地图的行和列 k是地雷的个数
        for (int k = 0; k < 10;)
        {
                x = rand() % 9 + 1;//产生1-9随机数字
                y = rand() % 9 + 1;
                if (map[x][y] != -1)  //-1表示地雷 如果此坐标不是地雷,那么就埋个雷
                {
                        map[x][y] = -1;
                        k++;
                }
        }
}
int Ret_Lei()   //计算雷的个数
{
        for (int i = 1; i <= 10; i++)
        {
                for (int j = 1; j <= 10; j++)
                {
                        if (map[i][j] != -1)
                        {
                                for (int x = i - 1; x < i + 1; x++)
                                {
                                        for (int y = j - 1; y < j + 1; y++)
                                        {
                                                if (map[x][y] == -1)
                                                {
                                                        map[i][j]++;
                                                }
                                        }
                                }
                        }
                }
        }
        return 0;
}

扫雷.png

最佳答案

查看完整内容

不知道为啥,源码不能放上来,我给你弄了个压缩文件,把sweep,h sweep.cpp main.cpp 打包到一起了,你建空项目,加进去编译运行,应该没问题,还有,你的源码想实现那个效果,会有点难,所以我自己谢了一份
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-22 17:54:39 | 显示全部楼层
不知道为啥,源码不能放上来,我给你弄了个压缩文件,把sweep,h  sweep.cpp  main.cpp 打包到一起了,你建空项目,加进去编译运行,应该没问题,还有,你的源码想实现那个效果,会有点难,所以我自己谢了一份
捕获.PNG

扫雷.zip

1.71 KB, 下载次数: 32

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-22 21:24:24 | 显示全部楼层
排雷的话,你可以在绘制完雷阵后加一个while循环,接受用户输入两个数,行和列,然后判断【行】【列】是否为-1,是的话,失败,不是的话将值置为-2,然后判断雷阵的值==-2 && 值 == -1,是的话,排雷成功退出循环,不是的话继续循环,要我写就这么写,仅供参考
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-22 21:59:32 | 显示全部楼层
宫志强 发表于 2016-12-22 21:24
排雷的话,你可以在绘制完雷阵后加一个while循环,接受用户输入两个数,行和列,然后判断【行】【列】是否 ...

现在的问题是地图能显示出来,但这个地图是显式的,能看得到雷的布局,通过什么样的让地图开始都是显示*****号,然后输入行 列,如果这个行 列对应*号下面是-1  就扫雷失败,如果不是就继续输入,指导雷扫完了,思路就是这样,可是这个代码我不会写了,蛋疼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-22 22:04:23 | 显示全部楼层
寒风001 发表于 2016-12-22 21:59
现在的问题是地图能显示出来,但这个地图是显式的,能看得到雷的布局,通过什么样的让地图开始都是显示** ...

是这样啊,我一下写一份代码,明天写完发给你吧,宿舍快熄灯了

评分

参与人数 1荣誉 +3 鱼币 +1 贡献 +3 收起 理由
寒风001 + 3 + 1 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-22 22:10:04 | 显示全部楼层
宫志强 发表于 2016-12-22 22:04
是这样啊,我一下写一份代码,明天写完发给你吧,宿舍快熄灯了

谢谢啊,在我这个代码基础上吧,谢谢,最简洁的那种
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 11:28:52 | 显示全部楼层
寒风001 发表于 2016-12-22 22:10
谢谢啊,在我这个代码基础上吧,谢谢,最简洁的那种

等下的,我把代码发出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 11:29:26 | 显示全部楼层
sweep.h
#pragma once
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
class sweep
{
public:
        sweep(int num, int x = 10, int y = 10);
        ~sweep();
        void InitMap(int * map);
        void DrawMap(int * map);
        int UserInput();
        int judge_map(int *map);
private:
        int map_x;
        int map_y;
        int  *m_map;                //地图数组
        int mine_num;
        int  *m_user_map;        //地图属性数组,保存对应的格子,是否已被查看,被查看,值为1,未被查看,值为0
};

评分

参与人数 1荣誉 +2 鱼币 +1 收起 理由
寒风001 + 2 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-23 11:40:13 | 显示全部楼层

还没有学到类,能否不用类,用最原始的基础的c语言来写这个排雷过程,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 14:01:28 | 显示全部楼层
寒风001 发表于 2016-12-23 11:40
还没有学到类,能否不用类,用最原始的基础的c语言来写这个排雷过程,谢谢啦

能倒是能,我弄一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-23 15:18:46 | 显示全部楼层
宫志强 发表于 2016-12-23 14:01
能倒是能,我弄一下

谢谢了,我就是需要那种最简洁的那种
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-23 18:38:03 | 显示全部楼层
这种的算吗
QQ截图20161223183717.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-25 07:27:20 | 显示全部楼层

算啊,代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-8 13:00:28 | 显示全部楼层
可用vs单步执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 22:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表