【算法】五子棋游戏的制作.doc
《【算法】五子棋游戏的制作.doc》由会员分享,可在线阅读,更多相关《【算法】五子棋游戏的制作.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、五子棋游戏的制作五子连珠,在民间俗称”五子棋”,是一种流传很广的益智棋类游戏,游戏规则非常简单,适合各个年龄段的朋友玩,相信大家以前也一定玩过此游戏,下面我们就来学习使用Director来制作一个简单的五子棋个游戏。本文分为三个部分来介绍,界面比较简单,主要是和大家讨论一下制作的思路。1. 从游戏的玩法开始讨论游戏的制作思路。2. lingo 代码的设计,移子走棋,以及判断游戏胜负后。3. lingo 代码的设计,棋子布置和后悔按钮的代码设计。一游戏制作思路我们这里介绍的的是一种最简单的五子棋游戏,玩法很简单,黑白双方交替用鼠标拖动棋子来下棋,看谁先摆好连续的五粒,包括水平方向,垂直方向和倾斜
2、方向(45度和135度),但是不能有拐点,必须是一条直线,哪一方先连好,则胜利。画面如图:之所以简单是因为我们这里没有涉及到人和电脑下,没有人工智能(AI),如果要涉及到AI,算法就会麻烦一点,而没有AI的话,主要就是扫描检测了.现在就和大家一起讨论制作思路: 1.首先要有一个交叉点列表(loclist)棋盘上每个交叉点的坐标值,我们这里为18*18的棋盘(每个格子宽20个象素)完成记录。2.由于需要游戏过程中判断该位置是否有棋子,所以还需要一个同样是二维的列表(onlist)来记录棋子信息,为了方便我们没有棋子的地方为0,黑子为1,白子为-1,初始化时全部为0。上面的代码均在电影脚本中书写:
3、global loclist,onlist on startMovie loclist=onlist=repeat with i=1 to 18tlist=ttlist=repeat with j=1 to 18add tlist,point(20*j,20*i)add ttlist,0end repeatadd loclist,tlistadd onlist,ttlistend repeat end这段代码让我们得到并初始化了两个关键的二维列表(两个全局变量) loclist 和 onlist 分别记录交叉点位置信息 和 棋子信息。我们可以在message窗口中用put命令查看它们的内容和规
4、律,就会理解,这将为后面的走棋和判断胜负做准备。put loclistpoint(20, 20), point(40, 20), point(60, 20), point(80, 20), point(100, 20), point(120, 20), point(140, 20), point(160, 20), point(180, 20), point(200, 20), point(340, 360), point(360, 360)put onlist0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5、, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0二.移子走棋,以及判断游戏胜负后1.接下来介绍移动棋子代码:要实现的是,用户用鼠标按住来移动棋子,并当用户松开鼠标后,对当前棋子位置的判断,看是否足够靠近离其最近的一个可放点,如果是就会自动放置好。移动棋子的代码相对简单,这里就重点介绍是否足够靠近离其最近的一个可放点:定义相关属性并初始化。property pmousedown,sel,poldloc,moveEnable,OnlinePoson beginsprite mesel=sprite(me.spritenum) -代表自身poldloc=sel.loc -棋子的原始
6、位置pmousedown=0 -是否鼠标按下moveEnable=1 -是否可以移动OnlinePos= -移动的历史记录:记录我移动完成后的位置信息和我的棋子信息(黑棋还是白棋),End这里的判断原则是扫描所有交叉点,找到一个距离适当(与该点水平坐标差和垂直坐标差都要小于10),并没有棋子(即onlistij=0)的点来放好棋子。on ifcloseenough me cursor -1 -通过一个二重循环来遍历二维列表中的每个坐标点repeat with i =1 to 18repeat with j=1 to 18myLoc=sel.loc if abs(myLoc1-loclistij
7、1)10 and abs(myLoc2-loclistij2)10 and onlistij=0 then -如果找到一个开放点,则放置到该位置上sel.loc=loclistij-不能在被移动sel.moveEnable=0 if sel.member.name = white then -棋子信息列表记录该点棋子信息t=1onlistij=tOnlinePos=i,j,t elset=-1onlistij=tOnlinePos=i,j,tend if -检测是否有玩家获胜(具体代码稍后在讲)checkIT(i,j,t) -找到点并放置好后就可以中止后面剩下的循环判断操作了,否则一直扫描完
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 五子棋 游戏 制作
限制150内