Director五子棋游戏的制作

贾三少long

贾三少long

2016-03-18 15:52

想要天天向上,就要懂得享受学习。图老师为大家推荐Director五子棋游戏的制作,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!


五子连珠,在民间俗称”五子棋”,是一种流传很广的益智棋类游戏,游戏规则非常简单,适合各个年龄段的朋友玩,相信大家以前也一定玩过此游戏,下面我们就来学习使用Director来制作一个简单的五子棋个游戏。

本文分为三个部分来介绍,界面比较简单,主要是和大家讨论一下制作的思路。

1.. 从游戏的玩法开始讨论游戏的制作思路。

2.. lingo 代码的设计,移子走棋,以及判断游戏胜负后。

3.. lingo 代码的设计,棋子布置和后悔按钮的代码设计。

一.游戏制作思路

我们这里介绍的的是一种最简单的五子棋游戏,玩法很简单,黑白双方交替用鼠标拖动棋子来下棋,看谁先摆好连续的五粒,包括水平方向,垂直方向和倾斜方向(45度和135度),但是不能有拐点,必须是一条直线,哪一方先连好,则胜利。画面如图:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/shejiruanjian/)



之所以简单是因为我们这里没有涉及到人和电脑下,没有人工智能(AI),如果要涉及到AI,算法就会麻烦一点,而没有AI的话,主要就是扫描检测了.

现在就和大家一起讨论制作思路:

1..首先要有一个交叉点列表(loclist)棋盘上每个交叉点的坐标值,我们这里为18*18的棋盘(每个格子宽20个象素)完成记录。

2..由于需要游戏过程中判断该位置是否有棋子,所以还需要一个同样是二维的列表(onlist)来记录棋子信息,为了方便我们没有棋子的地方为0,黑子为1,白子为-1,初始化时全部为0。

上面的代码均在电影脚本中书写:

global loclist,onlist
on startMovIE
   loclist=[]
   onlist=[]
repeat with i= 1 to 18
     tlist=[]
     ttlist=[]
repeat with j= 1 to 18
add tlist, point ( 20 *j, 20 *i)
add ttlist, 0
end repeat
add loclist,tlist
add onlist,ttlist
end repeat
end


这段代码让我们得到并初始化了两个关键的二维列表(两个全局变量) loclist 和 onlist 分别记录交叉点位置信息 和 棋子信息。

我们可以在message窗口中用put命令查看它们的内容和规律,就会理解,这将为后面的走棋和判断胜负做准备。

put loclist
[[point(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 onlist
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], …… 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]


二.移子走棋,以及判断游戏胜负后


1..接下来介绍移动棋子代码:

要实现的是,用户用鼠标按住来移动棋子,并当用户松开鼠标后,对当前棋子位置的判断,看是否足够靠近离其最近的一个可放点,如果是就会自动放置好。移动棋子的代码相对简单,这里就重点介绍是否足够靠近离其最近的一个可放点:

定义相关属性并初始化。

property pmousedown,sel,poldloc,moveEnable,OnlinePos
on beginsprite me
   sel= sprite ( me . spritenum ) --代表自身
   poldloc=sel. loc --棋子的原始位置
   pmousedown= 0 --是否鼠标按下
   moveEnable= 1 --是否可以移动
   OnlinePos=[] --移动的历史记录:记录我移动完成后的位置信息和我的棋子信息(黑棋还是白棋),
End


这里的判断原则是扫描所有交叉点,找到一个距离适当(与该点水平坐标差和垂直坐标差都要小于10),并没有棋子(即onlist[i][j]=0)TuLaoShi.com的点来放好棋子。

on ifcloseenough me
cursor - 1
--通过一个二重循环来遍历二维列表中的每个坐标点
repeat with i = 1 to 18
repeat with j= 1 to 18

       myLoc=sel. loc
if abs (myLoc[ 1 ]-loclist[i][j][ 1 ]) 10 and abs (myLoc[ 2 ]-loclist[i][j][ 2 ]) 10 and onlist[i][j]= 0 then

--如果找到一个开放点,则放置到该位置上
         sel. loc =loclist[i][j]
--不能在被移动
         sel.moveEnable= 0

if sel. member . name = "white" then --棋子信息列表记录该点棋子信息
           t= 1
           onlist[i][j]=t
           OnlinePos=[i,j,t]
else
           t=- 1
           onlist[i][j]=t
           OnlinePos=[i,j,t]
end if

--检测是否有玩家获胜(具体代码稍后在讲)
         checkIT(i,j,t)

--找到点并放置好后就可以中止后面剩下的循环判断操作了,否则一直扫描完
exit
end123下一页

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/shejiruanjian/)
展开更多 50%)
分享

猜你喜欢

Director五子棋游戏的制作

设计软件 平面设计软件 广告设计软件
Director五子棋游戏的制作

五子棋

编程语言 网络编程
五子棋

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

五子棋算法探讨

编程语言 网络编程
五子棋算法探讨

五子棋技巧有哪些

生活常识
五子棋技巧有哪些

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

《机械迷城》五子棋走法

机械迷城
《机械迷城》五子棋走法

《机械迷城》五子棋13步走法

机械迷城
《机械迷城》五子棋13步走法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使用VBA创建应用程序教程

使用VBA创建应用程序教程

AutoCAD三维基础实例教程(1)教程

AutoCAD三维基础实例教程(1)教程
下拉加载更多内容 ↓