Project1

标题: 如何制作棋牌游戏(不是战棋的说) [打印本页]

作者: 1697665228    时间: 2014-7-22 19:34
标题: 如何制作棋牌游戏(不是战棋的说)
最近看秦时明月2夜尽天明里头有个“墨攻棋”。感觉很好的样子。
我想问下如何制作棋牌游戏,不用特别复杂,人物在一个格子上按Enter创建一个棋子事件,如果一个或一些棋子被敌方棋子包围住,则转换成敌方棋子,我方一样
话说纯事件能做出来我就不信了→、→。
作者: taroxd    时间: 2014-7-22 19:37
本帖最后由 taroxd 于 2014-7-22 19:41 编辑

这个纯事件应该没问题啊……准确的说用脚本也没什么优势吧。

老老实实填好每个事件,然后对于每一次下棋,设置好当前位置的棋子状态,调用公共事件「如果一个或一些棋子被敌方棋子包围住,则转换成敌方棋子」不就可以了吗?
你可以用一个变量对应一个位置的棋子,0表示无棋子,1表示黑,2表示白。8*8的棋盘就老老实实用64个变量。

至于包围的判断,你可以用“循环”来做:比如判断一个黑棋有没有被白棋包围,你可以从这个黑棋的位置一步步往上,遇到白棋则沿着白棋的“墙壁”走。走到地图边缘,说明没有被包围;如果绕了一圈回来,说明“被包围了”

不要小看事件啊啊啊啊啊啊
作者: 1697665228    时间: 2014-7-22 20:14
沿着白棋的墙壁?
这个怎么搞……
一步步向上又需要一个事件么……
作者: 1697665228    时间: 2014-7-22 20:18
我最想问的是(不知有木有连贴啊如果有sorry)敌方的系统要怎么破……
银工智能AI么……
作者: taroxd    时间: 2014-7-22 20:20
本帖最后由 taroxd 于 2014-7-22 20:22 编辑
1697665228 发表于 2014-7-22 20:14
沿着白棋的墙壁?
这个怎么搞……
一步步向上又需要一个事件么……


用一个变量记录当前的位置
我们假设8*8的棋盘

RUBY 代码复制
  1. # 防止吞空格
  2.   0 1 2 3 4 5 6 7
  3. 0
  4. 1
  5. 2
  6. 3
  7. 4
  8. 5
  9. 6
  10. 7


那么每个棋盘上的点(x, y)对应变量 x + y * 8 + C (C为一个常数,表示偏移量)

不妨设 C=1,那我们就用 1~64 这 64 个变量记录棋盘的位置

那么,如果当前的位置是 32
那么,这个位置往上走就是 32 - 8 = 24

我们获取变量24就可以获得棋盘上这个位置的状态(白棋?黑棋?没有棋子?)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1