c#编写扫雷游戏的 雷 随机分布。

huchuan90 2012-08-19 04:36:34
一直搞不懂 扫雷游戏中 雷 随机分布怎么弄。希望各位能帮帮我这新手。
...全文
318 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2012-08-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

这个 能打印出来吗 ?
[/Quote]什么? 自己研究去吧 扫雷没有什么难的 就是涉及一些简单算法扫雷下载地址
huchuan90 2012-08-19
  • 打赏
  • 举报
回复
这个 能打印出来吗 ?
huchuan90 2012-08-19
  • 打赏
  • 举报
回复
太感谢你们了 !
newtee 2012-08-19
  • 打赏
  • 举报
回复
mines是布雷数, state[x, y]为雷区的状态 为1时表示有雷 为0时表示无雷 根据布雷的位置计算非雷区地方的数字大小
newtee 2012-08-19
  • 打赏
  • 举报
回复
找对人了 去我资源下载吧
//布雷且计算非雷点的数字
Random r = new Random();
int[,] mm = new int[width, height];
for (int i = 0; i < mines; i++)
{
int m = r.Next() % width;
int n = r.Next() % height;
if (mm[m, n] != 1)
mm[m, n] = 1;
else
i--;
}
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
if (mm[x, y] == 1)
state[x, y] = -1;
else
state[x, y] = 0;
}
}


int[,] b = new int[width + 2, height + 2];
for (int x = 0; x < width + 2; x++)
{
for (int y = 0; y < height + 2; y++)
{
if (x == 0 || y == 0 || x == width + 1 || y == height + 1)
b[x, y] = 0;
else
b[x, y] = -state[x - 1, y - 1];
}
}
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
if (b[x + 1, y + 1] == 0)
{
state[x, y] = b[x, y] + b[x, y + 1] + b[x, y + 2] + b[x + 1, y] + b[x + 1, y + 2] + b[x + 2, y] + b[x + 2, y + 1] + b[x + 2, y + 2];
}
}
}
  • 打赏
  • 举报
回复
后台定义一个二维数组,随机生成雷。然后遍历二维数组,查找周边雷数的总数并记录到数组中。

在玩家点击雷之后,如果雷数为0,也就是空白,就点开一大片空白。至少windows的扫雷是这样的。
算法:深(广)度优先遍历就行。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧