• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Scratch 制作井字棋游戲

      2021-09-13 05:57:12陳新龍
      電腦報 2021年34期
      關(guān)鍵詞:方塊棋盤方格

      陳新龍

      井字棋,英文名叫Tic-Tac-Toe,是一種在3×3格子上進行的連珠游戲,和五子棋類似,由于棋盤一般不畫邊框,格線排成井字故得名。游戲需要的工具僅為紙和筆,然后由分別代表O和X的兩個游戲者輪流在格子里留下標記(一般來說先手者為X),任意三個標記形成一條直線,則為獲勝。由于井子棋難度低,常用作兒童游戲。玩過這個游戲的人都會發(fā)現(xiàn),如果兩個玩家都做出最優(yōu)選擇,這個游戲一定會出現(xiàn)平局。別看這個游戲簡單,但用數(shù)學(xué)計算它整個過程卻復(fù)雜得多,從理論上講“井字棋”一共可能有19683種現(xiàn)象!今天就和大家一起用Scratch把“井字棋”游戲給做出來。這個游戲的代碼沒有大家想象的那么難,只要大家跟緊思路就沒有任何問題,讓我們一起開始吧(圖1)。

      首先我們創(chuàng)建需要的角色和背景。點擊舞臺背景在造型中繪制四條線作為棋盤,線條的間距稍微放寬一些,粗細也稍微加粗一些。再寫上X WIN和O WIN兩種結(jié)局的背景造型。

      完成三個背景造型之后,新建角色,這個角色的造型中需要添加四個不同的造型,分別是兩個正方形的方塊,方塊比棋盤格子稍微小一點。顏色為一白一灰用于遮擋和顯示鼠標焦點。當(dāng)鼠標移動到棋盤上的格子時,顏色切換成灰色,默認情況下顏色為白色。另外兩個角色是X和O用來表示棋子。準備好的背景和角色如圖2。

      一切就緒后,可以開始編寫代碼了,我們先為棋盤每個格子編號,左下角為1號位,右上角為9號位。使用兩個變量sign_num(用于標記每個方塊的編號)和toggle(用于標記每個方塊背后的X或者O)。

      將角色造型切換成白色方塊,移動到1號位(-115,-112)。套用雙重循環(huán),每次重復(fù)執(zhí)行3次,克隆自己,將X坐標增加115(X和Y的數(shù)值是根據(jù)棋盤與角色方塊的高寬實際情況計算出來的,可以自行調(diào)整)。同時將sign_num的值增加1,內(nèi)層循環(huán)結(jié)束。將X坐標重新設(shè)為-115,恢復(fù)到左邊格子的坐標,將Y坐標增加110,角色到了中間一行。3×3次循環(huán)結(jié)束之后,棋盤中的每個方格都有了一個克隆體(如圖3)。

      為了標記這些克隆體,我們新建一個列表cell、一個變量count,默認起始情況下刪除cell中的全部內(nèi)容,將變量count設(shè)置為10,重復(fù)執(zhí)行9次,將數(shù)字10-19添加到列表中,對應(yīng)9個位置的角色。列表有兩個作用,第一作為區(qū)分方格的數(shù)字編號,第二游戲時將X和O與列表中的數(shù)字進行替換用來記錄棋局,到此第一步結(jié)束(如圖4)。

      游戲開始后所有克隆體快速鋪滿棋盤后,初始狀態(tài)是所有的方格上都是白色的造型(造型編號=1)。我們移動鼠標開始游戲,當(dāng)碰到鼠標指針后切換成灰色造型(造型編號=2),之后分成兩種情況,點擊鼠標落子和沒有操作移開鼠標。

      當(dāng)按下鼠標且該位置沒有棋子時(造型編號=2)可以落子,按照井字棋游戲的規(guī)則,兩個玩家輪流按下鼠標打叉(X)和畫圈(O),我們可以通過toggle變量來控制X和O的次序,當(dāng)toggle為奇數(shù)時(toggle除以2的余數(shù)=1時說明toggle是奇數(shù)),切換成O的造型,當(dāng)toggle為偶數(shù)時,切換成X的造型,切換造型之后將列表中格子對應(yīng)的項替換成X或O。每次鼠標點擊,toggle數(shù)值增加1。

      當(dāng)沒有點擊操作,鼠標移開,就將灰色塊恢復(fù)成白色塊。

      到目前為止,游戲已經(jīng)可以操作了,只是還缺少了最重要的一部分判斷勝利,就是需要判斷是否產(chǎn)生了三連。井字棋不同于五子棋,獲取勝利的局面數(shù)量很少,才橫三條、豎三條、斜線兩條共八種可能。我們只需要將八種方式一一列舉出來就可以了,比如當(dāng)列表的第1項=等2項=第3項的時候,對應(yīng)方格中的1、2、3號位剛好橫向連成一條線。實際編程時使用“第1項=等2項與等2項=第3項”。再根據(jù)方格中的內(nèi)容來判斷到底是哪一方獲得了勝利。最后用廣播的方式傳遞勝利信息給背景顯示出來(如圖5)。

      到這里,我們的井字棋游戲也成功完成了,這里小陳老師留一個問題,在目前井字棋代碼中我只判斷了贏和輸,如果最終的結(jié)局是平局該怎么用代碼表示呢?剩下整個問題就交給大家了。一起動腦思考一下吧,期待你們的答案。

      猜你喜歡
      方塊棋盤方格
      方塊村(1)
      旋轉(zhuǎn)吧!方塊!
      有多少個方塊
      方格里填數(shù)
      不一樣的方塊橋
      方格里填數(shù)
      分方格
      分方格
      棋盤人生
      棋盤里的天文數(shù)字
      赤峰市| 勐海县| 伊春市| 天水市| 库车县| 石家庄市| 来凤县| 甘洛县| 时尚| 中方县| 七台河市| 贡山| 阿图什市| 顺昌县| 盐山县| 罗甸县| 资兴市| 永年县| 阿合奇县| 郸城县| 青冈县| 邮箱| 昆明市| 武强县| 兴化市| 开阳县| 平乡县| 循化| 神池县| 绥德县| 准格尔旗| 蓝山县| 广河县| 巴里| 彰武县| 天峨县| 昌宁县| 金川县| 新乐市| 化州市| 安仁县|