• 
    

    
    

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

      Scratch小游戲

      2021-06-24 04:52:32陳新龍
      電腦報 2021年3期
      關(guān)鍵詞:豎線五子棋交叉點

      陳新龍

      五子棋相信大家都玩過,當(dāng)黑子或者白子橫、豎、斜連成五子,游戲結(jié)束,獲得勝利,但是如何在編程中根據(jù)五子棋的規(guī)則實現(xiàn)勝負(fù)判定還是很難的,更別說實現(xiàn)與人機對戰(zhàn)功能了。作為初學(xué)者我們可以先實現(xiàn)一個小目標(biāo),等掌握更多編程知識后再向更高難度進(jìn)發(fā)。五子棋可以分為人機對戰(zhàn)和人人對戰(zhàn)兩種形式,人機對戰(zhàn)需要用到復(fù)雜的算法,我們就先嘗試制作人人對戰(zhàn),先完成棋盤的繪制,兩個玩家用黑子、白子交替落子。至于判斷哪一方的五子先連成一條直線也可以放在以后再來想辦法完成。

      目標(biāo)明確后,再來分析目標(biāo)明確需求。需要先完成五子棋盤的繪制,接下來完成黑(白)子跟隨鼠標(biāo)運動,棋子的圓心要落在棋盤的交叉點上,雙方交替落子,一個交叉點只能落一顆棋子,不能在棋盤外落子(圖1)。

      1. 繪制棋盤

      棋盤由黑色的豎線和橫線交叉組成。在舞臺上找到一個合適的起始點,畫一條豎線,通過循環(huán)次數(shù)控制線的數(shù)量,用繼續(xù)平移X坐標(biāo)的方法畫出剩下的線,畫橫線只需交換X和Y軸的變量即可完成。

      新建變量“畫筆坐標(biāo)”來控制繪制線條X軸或Y軸的起點,畫筆顏色設(shè)為黑色。根據(jù)舞臺大小設(shè)置兩條線相隔距離為20像素比較合適,這樣畫16條線就可以鋪滿舞臺。找一個合適的起始點(-198,-160),向上畫一條300長的豎線(20×15=300),將“畫筆坐標(biāo)”增加20,下一條線的起點就是在X軸方向平移20。循環(huán)16次,畫出全部豎線。橫線和豎線是一樣的畫法,只需要調(diào)換XY坐標(biāo)的變量。完成棋盤后廣播“黑子”,等待執(zhí)黑先行落子(圖2)。

      2. 棋子編程

      接下來解決黑子和白子的落子問題。在造型中繪制一黑一白兩個圓形棋子作為角色。我們使用畫筆的圖章功能實現(xiàn)落子,圖章功能與克隆不同點在于只在當(dāng)前位置畫下一個角色的圖形,而沒有繼承角色的代碼,且不像克隆體有數(shù)量上限。

      這部分的難點是落子的位置,落子需要在棋盤交叉點的中心,因為鼠標(biāo)不可能精準(zhǔn)地落在交叉點中心,所以需要把這個交叉點范圍內(nèi)的落子經(jīng)過數(shù)學(xué)計算處理。在繪制棋盤時已經(jīng)知道每個交叉點的坐標(biāo)都是20的整數(shù)倍,把兩個交叉點間距離平分則一個交叉點對應(yīng)半徑為10的圓形區(qū)域。這樣我們就將需求轉(zhuǎn)化成一個數(shù)學(xué)取整的問題了。

      假設(shè)交叉點坐標(biāo)為(X,Y),鼠標(biāo)的坐標(biāo)可能是(X+a,Y+b),且-10

      比如,假設(shè)交叉點為(40,80),鼠標(biāo)指針為(43,82)按照上述公式計算可以得出最后的落點位置是交叉點(40,80)。

      解決了落子問題,接下來有幾個問題需要大家去思考一下,如何保證落下的棋子不會落在棋盤外面呢?可以根據(jù)棋盤的坐標(biāo)范圍做一個判斷,超出不能啟動圖章功能(圖4)。

      最后不要忘記了還有最為關(guān)鍵的勝負(fù)判定,大家可以思考一下,通過什么方式可以實現(xiàn),這個知識以后我們再講。

      猜你喜歡
      豎線五子棋交叉點
      可自動消除NG豎線缺陷的Mura檢測機設(shè)計探究
      Sim Sim
      圍棋棋盤的交叉點
      TFT-LCD彩膜工藝宏觀缺陷自動化修補的探究
      象形文字走走看
      90后羅運生:五子棋是我生命的一部分
      金色年華(2016年8期)2016-02-28 01:40:31
      基于高中生命科學(xué)知識交叉點的教學(xué)方法研究
      象形文字走走看
      財政部長吳波的“五子棋局”
      區(qū)域重力異常值的交叉點平差實例分析
      保靖县| 清河县| 翼城县| 防城港市| 论坛| 乡宁县| 南投市| 镇赉县| 分宜县| 长兴县| 老河口市| 东方市| 双柏县| 天全县| 隆回县| 禄丰县| 沾化县| 宁德市| 淳安县| 抚松县| 鄂尔多斯市| 阜阳市| 双城市| 宝清县| 金湖县| 呼伦贝尔市| 喜德县| 衡阳市| 宜春市| 阳高县| 敦煌市| 桂阳县| 洪江市| 沾益县| 镇雄县| 海门市| 任丘市| 邹城市| 阿图什市| 仙桃市| 咸丰县|