背景
本系列文章,使用Python3一步步記錄Tetris遊戲的編寫全過程,遊戲功能包括手動遊戲、遊戲回放(資料庫操作)、自動遊戲(AI機器人)、強化學習、最佳化AI機器人。已經完成C++版本,Qt5之QGraphicsItem編寫Tetris俄羅斯方塊遊戲。
規劃
- 專案結構
- 介面設計
- block類,最小方塊定義
- tetris類,俄羅斯方塊定義
- tetris方塊的移動與旋轉
- game類,遊戲流程控制
- 多執行緒改造
- 遊戲暫停功能
- 設計通用資料庫操作封裝,基於sqlite3
- 設計ORM實現自動查詢
- 儲存歷史資料,實現遊戲回放
- 簡單AI
- 記憶體洩漏修正
- 強化學習
- 加強版AI
設計思路
該遊戲儘量不使用第三方庫,主要注重演算法,因此介面庫選擇python內建的tkinter。設計思想也採用傳統的方式,用一個二維陣列來控制遊戲空間,類似迷宮的方式。選擇這種方式有一個好處是,遊戲的資料直觀存在,容易獲取。
效果圖
遊戲空間大小
10 x 20
得分設計:
- 消一層得一分
- 消二層得三分
- 消三層得七分
- 消四層得十分
控制鍵位
- 方向上鍵 : 旋轉
- 方向左鍵 : 左移
- 方向右鍵 : 右移
- 方向下鍵 : 下移
- 空格按鍵 : 下移到底
專案進度
已經完成手動遊戲、遊戲回放、簡單AI、手動自動隨時切換。
專案標籤(里程牌)
- v1.0.1(manual-play) - 手動遊戲功能 里程碑版
- v1.1(auto-play) - 自動遊戲功能 里程碑版,發現記憶體洩漏
- v1.2(less-block) - 解決記憶體洩漏
專案地址
https://gitee.com/zhoutk/ptetris
或
https://github.com/zhoutk/ptetris
執行方法
1. install python3, git
2. git clone https://gitee.com/zhoutk/ptetris (or download and unzip source code)
3. cd ptetris
4. python3 tetris
This project surpport windows, linux, macOs
on linux, you must install tkinter first, use this command:
sudo apt install python3-tk
相關專案
已經實現了C++版,專案地址:
https://gitee.com/zhoutk/qtetris