日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言写的俄罗斯方块

發布時間:2025/7/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言写的俄罗斯方块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

源:C語言寫的俄羅斯方塊

?

2014年最后一天, 任天堂將風靡全球30年的經典游戲<<俄羅斯方塊>>下架. 作為全球最暢銷的游戲, 其移植版本遍布各個平臺. 下面這個是我去年在51平臺上實現的, 使用12864液晶做為顯示器, 用矩陣鍵盤操作. 大家都知道標準51只有幾百字節的RAM, 當時我用的那款單片機RAM只有512字節, 使用256字節做為顯示緩存, 還剩下256字節, 最后居然也夠用.

前段時間兄弟很好奇這個游戲是怎么運作的(他有C語言基礎), 想讓我給他講一下, 然后我就整理了一下代碼, 將其移植到PC平臺, 后來又將其移植到MSP430 Launchpad上, 使用超級終端(PuTTy)作為游戲界面.

代碼使用模塊化編寫, 簡單且易于移植. Windows平臺的控制臺程序和MSP430 Launchpad上的絕大部分代碼都是相同的, 只有UI模塊根據平臺進行了重寫. 所以, 如果你想要移植它到其它平臺, 或者使用其它顯示設備, 只要簡單的重寫UI模塊即可實現.

在游戲模塊中會將消行的行數返回, 而計分和升級全是獨立于模塊之外的, 故可使用自己的計分方法.

Windows控制臺版本中的dep文件夾中是依賴模塊, 用于改變控制臺字符顏色與其它一些屬性. 來自己第三方, 詳見文件開頭的聲明.

另外在Windos控制臺還實現了一個彩色版本, 接口與單色版本兼容. 在編譯參數中定義 TETRIS_USE_COLOR 宏即可編譯為彩色版. Windows控制臺版本由GCC編譯, 詳細見對應目錄下的builder.bat批處理文件.

MSP430 Launchpad版本使用PuTTy做為顯示終端, 用IAR For MSP430進行編譯, 對應目錄下有建立好的工程文件可直接使用.

代碼位于Github, 主分支為單色版本, 彩色版本見 CTetris 分支.

原理說明(以單色版本為例, 彩色版略有區別):

游戲主要使用兩個表和一個緩存區來配合進行.

兩個表中一個為方塊(包括各個變形)的點陣數據表, 另外一個為方塊旋轉時的掩碼表.

在兩個表中每個數據為無符號16位整數, 每4個一組, 可以排列為一個4 * 4 的點陣, 方塊數據就記錄于此點陣中.? 旋轉掩碼表的結構相同, 是用于簡化方塊旋轉時沖突判斷, 里面記錄的是方塊旋轉時經過的所有路徑. 可以將某一類方塊數據和掩碼數據展開看一下就會很輕松明白了.

沖突檢測. 游戲的運行過程就是根據輸入不改變方塊的坐標, 判斷方塊移動情況, 采取相應的措施. 為了方便判斷方塊的旋轉, 故使用了旋轉掩碼表. 旋轉掩碼表中標為1的地方就是方塊旋轉到下一個變形所經過的路徑, 其對應的位置不可位于地圖外, 且不可被占用, 否則表示方塊不可旋轉, 詳見代碼.

消行. 經典的俄羅斯方塊地圖區是10 * 20大小的, 在單色模式下使用了一個uint16_t[20]的數組做為地圖, 方塊的每一步動作都在地圖中表現出來. 其中每一位表示地圖中的一個小方格, 數組的每一個元素實際上只用到10位(橫向), 所以當數據中某一個元素值大于2^10即1023時即表明此行已滿, 再進行消行處理即可.

另外其它一些相關信息可參考源代碼目錄下的readme.md.

查看位于Github的源代碼: https://github.com/ykaidong/Tetris

轉載于:https://www.cnblogs.com/LittleTiger/p/5378441.html

總結

以上是生活随笔為你收集整理的C语言写的俄罗斯方块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。