四格拼版是有自己的活動區域限制的,而且還有和其它的四格拼板的衝突問題。這其實就是我們所玩的俄羅斯方塊遊戲的規則問題。對於俄羅斯方塊遊戲,我們設定每乙個四格拼板的起始位置,也就是四格拼板的中心位置,是在遊戲區域的中上方位置,這沒有任何異議。
但是四格拼板是由四個小方格組成,並不是所有的四格拼板只占有一行位置,其中心位置在遊戲區域的中上方顯示出來之後,組成四格拼板的其它小方格由於在遊戲區域的二維陣列中佔有的是下標為負數的位置,哪個根據 python 列表的下標特性,其所呈現的結果並不是我們所想象的位置。如下圖:
四格拼板錯位
上圖所示是乙個倒 t 字型的四格拼板,在遊戲區域的中上方顯示出其中心位置做在的那一行的小方格之後,由於其中乙個小方格所在的二維陣列中的座標位置行數是 -1,根據列表的特性,是顯示在最後一行的位置,明顯不符合我們的預期。那麼我們就需要做乙個條件限制,來遮蔽座標為負數的小方格的顯示。
這個應該容易想象出來,就是我們在控制四格拼板左右移動的時候,四格拼板不能超出遊戲區域的範圍。這需要我們在設計程式的時候,要注意遊戲區域的二維陣列的邊界問題,不能讓組成四格拼板的小方格所對應的列位置有負數或超出列的最大值。
此處要注意一點,就是四格拼板在到達左右邊界之後是無法再或左或右運動了,但是其可以繼續自由滑落,並不是停止運動。
底部規則其實有三個細節要求:
四格拼板滑落到遊戲區域底部之後,要停止運動。
新的四格拼板要從初始位置繼續滑落。
舊有的已滑動到底部的四格拼板要一直顯示。
衝突規則要注意以下三個細節要求:
四格拼板遇到向下位置的四格拼版的時候,要停止運動。
遇到左邊或右邊位置的四格拼板的時候,無法再向左或向右,只能繼續滑落。
四格拼板的變形要遵守以上兩條規則。
不管是向下,向左,向右或變形,我們在設計程式的時候,不是要提前判斷其下一步動作是否衝突,而是等四格拼板事實佔據該位置之後,再判斷該位置上是否與其它四格拼板發生了衝突。
四格拼板在符合以上規則的時候,會繼續滑落,其實在程式設計當中就是將二維陣列中的橫座標,在每次迴圈加一即可。
四格拼板停止滑落,固定在遊戲區域中之後,如果滿行,將清空改行的小方格,改行位置以上的內容自動下滑一行。
**實現的思路,是將二維陣列反序排列,從行數較大的位置開始篩查,遇到滿行之後清空,並將行數較小位置向較大位置移動。
ccf之俄羅斯方塊
問題描述 俄羅斯方塊是俄羅斯人阿列克謝 帕基特諾夫發明的一款休閒遊戲。遊戲在乙個15行10列的方格圖上進行,方格圖上的每乙個格仔可能已經放置了方塊,或者沒有放置方塊。每一輪,都會有乙個新的由4個小方塊組成的板塊從方格圖的上方落下,玩家可以操作板塊左右移動放到合適的位置,當板塊中某乙個方塊的下邊緣與方...
Js實踐之俄羅斯方塊
前言 回顧下js部分的知識 學習理解俄羅斯方塊遊戲的具體實現思想 具體實現 實現看下具體的實現效果,實現效果如下 本次實現是簡易版的俄羅斯方塊包含基本俄羅斯方塊的基本功能,本次實現的俄羅斯方塊的基本功能有 形狀顯示 形狀變換 形狀累積 形狀顯示 本次實現是html css js,對於形狀的顯示實際上...
命令列之俄羅斯方塊
命令列之俄羅斯方塊 大一學了c 在網上看到了很多俄羅斯方塊的 大部分做的是圖形介面高階版的,沒學過mfc,用c 在命令列寫了乙個山寨版的俄羅斯方塊,斷斷續續差不多整了乙個月,功能包括上下左右移動,旋轉,沉底,暫停,計分,減速,退出,還算比較全面吧。下面貼上截圖和原始碼,vc上不能直接編譯通過,因為這...