找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2391|回復(fù): 0
收起左側(cè)

俄羅斯方塊游戲算法

[復(fù)制鏈接]
ID:226953 發(fā)表于 2021-5-16 17:52 | 顯示全部樓層 |閱讀模式
這個游戲設(shè)計,本質(zhì)上就是用一個線程或者定時器產(chǎn)生重繪事件,用線程和用戶輸入改變游戲狀態(tài)。這個游戲也不例外,啟動游戲后,就立即生成一個重繪線程,該線程每隔50ms繪制一次屏幕。當(dāng)然,重繪時有一些優(yōu)化措施,并不是屏幕上所有的像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的下墜物(下墜物一共有7種,由4個小磚塊組成,每種下墜物顏色固定,可以上下左右旋轉(zhuǎn))就不需重繪。游戲畫布是一個命令接受者,可以接受用戶鍵盤命令,控制下墜物的左移,右移,下移,旋轉(zhuǎn)動作。整個游戲的流程控制體現(xiàn)在游戲畫布對象的paint()方法里。paint()根據(jù)當(dāng)前的游戲狀態(tài),繪制出當(dāng)時的游戲畫面。歡迎畫面和Game Over畫面的繪制相當(dāng)簡單。游戲暫停畫面的繪制也相當(dāng)容易,就是設(shè)立標(biāo)志,讓paint()執(zhí)行的時候無需真正執(zhí)行重繪動作。對于游戲處于運行狀態(tài)的畫面的繪制,則需要在下墜物的當(dāng)前位置,繪制下墜物。在繪制下墜物之前,判斷下墜物是否還能下墜,如果能下墜的話,就讓它下落一格,再進(jìn)行繪制,如果下墜物已無法下墜,則判斷游戲是否處于Game Over狀態(tài),如果是處于Game Over狀態(tài)的話,則設(shè)置游戲狀態(tài)為Game over狀態(tài),這樣畫布在下一次重繪時就繪出Game Over的畫面.如果游戲不是處于Game Over狀態(tài),則把下墜物固定下來,同時檢查游戲畫布上下墜物當(dāng)前行下面的所有行,看是否需要進(jìn)行行刪除動作,如果需要行刪除,則清除游戲地圖上被刪行的數(shù)據(jù),再把被刪行繪制成背景色。然后初始化一個新的下墜物,繪制這個新的下墜物。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表