麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > 媒體動畫 > 正文

Director實例剖析:五子棋游戲地繪制(1)

2024-09-08 19:27:04
字體:
供稿:網(wǎng)友
五子棋游戲的制作
    五子連珠,在民間俗稱”五子棋”,是一種流傳很廣的益智棋類游戲,游戲規(guī)則非常簡單,適合各個年齡段的朋友玩,相信大家以前也一定玩過此游戲,下面我們就來學(xué)習(xí)使用director來制作一個簡單的五子棋個游戲。

本文分為三個部分來介紹,界面比較簡單,主要是和大家討論一下制作的思路。

1.. 從游戲的玩法開始討論游戲的制作思路。

2.. lingo 代碼的設(shè)計,移子走棋,以及判斷游戲勝負(fù)后。

3.. lingo 代碼的設(shè)計,棋子布置和后悔按鈕的代碼設(shè)計。

一.游戲制作思路

我們這里介紹的的是一種最簡單的五子棋游戲,玩法很簡單,黑白雙方交替用鼠標(biāo)拖動棋子來下棋,看誰先擺好連續(xù)的五粒,包括水平方向,垂直方向和傾斜方向(45度和135度),但是不能有拐點,必須是一條直線,哪一方先連好,則勝利。畫面如圖:


之所以簡單是因為我們這里沒有涉及到人和電腦下,沒有人工智能(ai),如果要涉及到ai,算法就會麻煩一點,而沒有ai的話,主要就是掃描檢測了.

現(xiàn)在就和大家一起討論制作思路:

1..首先要有一個交叉點列表(loclist)棋盤上每個交叉點的坐標(biāo)值,我們這里為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


這段代碼讓我們得到并初始化了兩個關(guān)鍵的二維列表(兩個全局變量) loclist 和 onlist 分別記錄交叉點位置信息 和 棋子信息。

我們可以在message窗口中用put命令查看它們的內(nèi)容和規(guī)律,就會理解,這將為后面的走棋和判斷勝負(fù)做準(zhǔn)備。

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]]


二.移子走棋,以及判斷游戲勝負(fù)后


1..接下來介紹移動棋子代碼:

要實現(xiàn)的是,用戶用鼠標(biāo)按住來移動棋子,并當(dāng)用戶松開鼠標(biāo)后,對當(dāng)前棋子位置的判斷,看是否足夠靠近離其最近的一個可放點,如果是就會自動放置好。移動棋子的代碼相對簡單,這里就重點介紹是否足夠靠近離其最近的一個可放點:

定義相關(guān)屬性并初始化。

property pmousedown,sel,poldloc,moveenable,onlinepos
on beginsprite me
   sel= sprite ( me . spritenum ) --代表自身
   poldloc=sel. loc --棋子的原始位置
   pmousedown= 0 --是否鼠標(biāo)按下
   moveenable= 1 --是否可以移動
   onlinepos=[] --移動的歷史記錄:記錄我移動完成后的位置信息和我的棋子信息(黑棋還是白棋),
end


這里的判斷原則是掃描所有交叉點,找到一個距離適當(dāng)(與該點水平坐標(biāo)差和垂直坐標(biāo)差都要小于10),并沒有棋子(即onlist[i][j]=0)的點來放好棋子。

on ifcloseenough me
cursor - 1
--通過一個二重循環(huán)來遍歷二維列表中的每個坐標(biāo)點
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

--檢測是否有玩家獲勝(具體代碼稍后在講)
         check99v(i,j,t)

--找到點并放置好后就可以中止后面剩下的循環(huán)判斷操作了,否則一直掃描完
exit
end if
end repeat
end repeat

--在上面,如果沒有一個點靠得足夠近,就會回原位
   sel. loc =poldloc
end

2.. 判斷游戲勝負(fù):

用check99v(i,j,t)程序檢測是否有玩家獲勝。(即判斷否至少有一個方向存在連續(xù)5個或以上的同色棋子)實際操作時我們根據(jù)當(dāng)前點確定我們可以確定四條直線(實際上是四個列表),這里我們需要對四個直線逐一進(jìn)行判斷。

這四條直線分別是,水平方向,垂直方向和傾斜方向(45度和135度)。

參考下圖中的四條藍(lán)色的粗線。

[1] [2] 下一頁  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩中文字幕一区二区三区 | 国产精品久久久久久久久久东京 | 欧美日本国产精品 | 国产精品久久久久久久不卡 | 国产精品久久久久久久久粉嫩 | 久草热久 | 久久最新免费视频 | 中文字幕在线观看精品 | 久久99精品久久久久久小说 | 中文字幕22页 | 久草视频在线资源 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 91精品久久久久久久久 | xxxx18韩国护士hd老师 | 成人国产精品齐天大性 | 5xsq在线视频 | 龙的两根好大拔不出去h | 免费人成在线观看网站 | 欧美 videos粗暴 | 国产资源在线观看 | 国产精品91久久久 | 国产日韩一区二区三区在线观看 | 日韩视频1 | 免费a级黄色片 | 免费啪视频在线观看 | 国产成人高潮免费观看精品 | 国产一级一区二区三区 | 国产毛片在线看 | 片在线观看 | 国产流白浆高潮在线观看 | 成人不卡在线观看 | 午夜a狂野欧美一区二区 | 日本在线免费观看视频 | 少妇一级淫片免费放正片 | 性生活视频软件 | 国产午夜精品一区二区三区免费 | 成人午夜一区 | 日日鲁夜夜视频热线播放 | jizzzzxxxxx| 看免费一级毛片 | 污污黄|