用checkIT(i,j,t)程序检测是否有玩家获胜。(即判断否至少有一个方向存在连续5个或以上的同色棋子)实际操作时我们根据当前点确定我们可以确定四条直线(实际上是四个列表),这里我们需要对四个直线逐一进行判断。
这四条直线分别是,水平方向,垂直方向和倾斜方向(45度和135度)。
参考下图中的四条蓝色的粗线。

on checkIT i,j,num
--水平方向:
--所在点横线扫描,扫描水平信息列表
scan(onlist[i])
--垂直方向
--所在点纵向扫描
tlist=[]
repeat with m=1 to 18
add tlist,onlist[m][j] --通过循环获取纵向信息列表
end repeat
scan(tlist) --进行扫描
--所在点斜率为1的直线扫描(y=x-b),即倾斜方向45度
b=i-j
tlist=[]
repeat with y=1 to 18
repeat with x=1 to 18
if x=y-b then add tlist,onlist[y][x] --通过循环获取有该点决定的斜率为1的直线信息列表
end repeat
end repeat
scan(tlist) --进行扫描
--所在点斜率为-1的直线扫描(y=-x+b),即倾斜方向135度
b=i+j
tlist=[]
repeat with y=1 to 18
repeat with x=1 to 18
if x=-y+b then add tlist,onlist[y][x] --通过循环获取有该点决定的斜率为-1的直线信息列表
end repeat
end repeat
scan(tlist) --进行扫描
setUser(num)
end
on scan(t) --扫描列表程序,看是否有一方以获胜(即累计数目等于5)
blackNum=0
whiteNum=0
repeat with n=1 to t.count
if t[n] <> 0 then
if t[n]=1 then
blackNum=blackNum+1
whiteNum=0
if blackNum=5 then --是否黑方获胜
win(1)
abort
end if
else
whiteNum=whiteNum+1
blackNum=0
if whiteNum=5 then --是否白方获胜
win(-1)
abort
end if
end if
else
blackNum=0
whiteNum=0
end if
end repeat
end
由以上我们就可以判断游戏胜负了。
三.棋子布置和后悔按钮的代码设计
1..介绍一下棋子的布置。
初始时舞台上没有棋子,我们通过puppetsprite 来动态的根据需要把棋子放在舞台上并激活移动用户使用,这样不必在舞台上拖大量的精灵,时游戏显得混乱。我们这里用41及41以后的通道来共摆放棋子。
具体运用时我们在电影脚本里面定义一个函数来完成这一需要多次用到的操作:
根据nowNum的值来设置,为1是设置为黑子用户走子,-1则为白子用户。
on setUser nowNum
if nowNum=1 then
nextname="black"