找回密码
 点一下
查看: 742|回复: 10

怎么做走格子的战棋游戏?我会A星寻路算法

[复制链接]
发表于 2016-11-29 11:55:13 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2016-11-29 22:10:43 | 显示全部楼层
本帖最后由 yxxiaobin 于 2016-11-29 22:11 编辑

如果是用对话框做,那么可以使用图片控件来做。
如果是直接在游戏世界中做,则可以使用单位。把格子单位关掉选择,打开点击。

如果你是问如何形成网络,那么看你的棋盘是什么结构了,如果是不规则结构,我推荐使用2未数组,每个格子的最大连接格子作为数组的一维最大下标,而最大格子数作为另一维最大下标。比如一共有50个格子,每个格子最多连接4个格子,那么就定义一个数组A[49][3],这样A[5][2]就代表第6个格子的第3个连接点。如果是规则结构(比如7行8列这样的),可以使用上述方案,也可以使用一维数组,使用时再计算行列(算法不熟悉的不推荐,因为比较绕)。

寻路算法按楼主所说会A*的话应该都能搞定了,不过如果你的棋盘两个格子之间存在连接就算1步的话,则没必要搞这么复杂,可以简化一下,至少可以去掉步长系数。而且在棋盘不是特别巨大,规则也不是特别复杂的情况下,直接搜索就好,连启发都免了。
回复

使用道具 举报

发表于 2016-11-29 22:13:22 | 显示全部楼层
我发布过一个塔防图,用到了寻路,你可以参考下。当然,我那个就是最简单粗暴的广度优先搜索了。
回复 1 0

使用道具 举报

 楼主| 发表于 2016-11-30 08:56:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2016-11-30 20:55:34 | 显示全部楼层
jfnnay 发表于 2016-11-30 08:56
我就是需要矩形棋格,,,而且有星际十几个屏幕那么大吧。实话说我打算用2d的来搞了,,3d的虽然酷炫,, ...

是否复杂,和棋盘的面积无关,和节点数量和组网方式有关。
作为矩形棋格,如果允许斜走,而且认为斜走路程更长(实际上绝大多数棋不这么认为),那么你需要考虑每步的步长系数,这个稍微费事。如果不认为斜路更长(比如象棋),那么可以简单地认为每格都有8个格和它相连,这些格子没有本质不同(除了边缘的格子,但是我们可以直接将边缘的格子部分临格设为空值就行,不必单独弄个算法出来)。如果不允许斜走,则可以认为每格格子只有4个相邻的格子,算法上与允许斜走且不考虑步长差异时没什么不同。当然,部分棋子可能有特别的走法,比如象棋,车无论走几格,只要是一条直线且无障碍,就认为是一步,这种算法就更复杂了,不能用一种寻路算法来制作出所有棋子的寻路。

我个人认为,比起寻路来,怎么做AI反倒是最难的,对于大多数棋来讲,家用电脑上的AI通常赢不了会玩的人类,一个原因是受限于性能,另一个原因就是高效AI算法是比较难的。只有很容易使用穷举算法的棋类才能做出几乎无敌的AI,但这种棋往往可玩性不是很高,做成游戏的价值也不大(比如碗棋,冲棋等)。
回复

使用道具 举报

发表于 2016-11-30 20:59:10 | 显示全部楼层
另外我认为3d世界实际是更容易实现,因为除了触发器,还可以使用其他系统来进行辅助,比如演算体,比如效果树等等。2D的话,基本上就是使用触发器系统来进行编程了,所有的行为几乎都需要你进行定义,这工作量会变得很大,而且对于没有专门受过这方面训练的人来讲,也很难做的功能强大又漂亮。
回复

使用道具 举报

 楼主| 发表于 2016-12-1 09:44:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-1 17:25 , Processed in 0.071401 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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