游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: xuxuejun2008

请教一个好玩的算法,小弟想了好久都没想出来!

[复制链接]

5

主题

23

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-11-8 14:20:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

我用过上面的递归算法,结果出现死锁啊!
      我是觉得好玩,想找个办法去判断他周围的棋子!
            如果四个方向都判断的话,那他相邻的棋子又会判断他自己,这样就会出现死锁状态,请帮我想个办法,不让他出现死锁!
            

7

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2006-11-8 14:59:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

   如果四个方向都判断的话,那他相邻的棋子又会判断他自己,这样就会出现死锁状态,请帮我想个办法,不让他出现死锁!


所以我写那个递归的时候在每次判断为真时都先清除了原来点的棋子,这要一来就不会在下面的检查当中,在检查到它本身的。

而且就是我递归下面介绍的那种方法,对于你说的这种情况,只需要在每次落下一子后检查它相邻四个的就可以了。



if(x,y点的相邻左方有和它相同颜色的点)
      {
          去除x,y点的棋子。//这里去除x,y点的棋子是为了不至于进入无限递归当中,上面定义的临时变量是用来和周围棋子作比较的。下同
          函数(x-1,y);
       }

这里去除x,y点的棋子就是为了避免无限递归出现的,你可以在这里把x,y点设置为false,那么在下面就不用检查这个店了


5

主题

23

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-11-8 15:06:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

这样的话会漏掉一些点的,因为四个方向不能同时判断,如果是按左上右下的顺序判断,那么他自己的上方或右方或下方的棋子被设置成false,这样就不跟它自己是同一种颜色了,就会少算了这几个方向的点!
      

7

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2006-11-8 17:37:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

这里定义一些临时变量,用来存储x,y点的信息

一开始定义的这个临时变量就是存放x,y点的信息的,以后比较的时候是那这个临时变量来和它相邻的四个点来比较的。

5

主题

23

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-11-9 09:47:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

谢谢了,我回去试验下,我总觉得有漏点情况!

4

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2006-11-10 11:28:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

我觉得还是用栈做比较好.

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2006-11-10 15:24:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

recursion

0

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-11-13 19:33:00 | 显示全部楼层

Re:请教一个好玩的算法,小弟想了好久都没想出来!

我觉得用种子染色法一切搞定,DFS

5

主题

23

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2006-11-16 10:09:00 | 显示全部楼层

Re: 请教一个好玩的算法,小弟想了好久都没想出来!

DFS,这位大哥,能不能详细点?谢谢了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 20:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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