用Python和Pygame做小遊戲2, 1024方塊

我們之前用PyQt5實現過1024方塊遊戲,現在換成pygame看看能不能簡化代碼。

遊戲本身邏輯代碼因爲是numpy寫的,基本上不用動。只是圖形界面和鍵盤綁定事件要做替換。我在替換底層框架的操作上一般是先把所有相關的引用都去掉,這樣python或者java就會出錯,只需要無腦替換代碼就好了。

在這裏,把Qt相關的import全部去掉, main方法也要替換成pygame的初始代碼


原來的MyApp 就不再需要繼承QWidget子類了,但裏面的初始化方塊列表需要保留。 還是需要建立一個4x4的矩陣,然後顯示到主界面上。同時還要在內存中建立一個對應numpy數組,做數據合併和旋轉計算。


Square方法也基本不用動



pygame有兩個重要的類,一個是surface,用來處理圖形操作。一個是rect,代表座標和長寬,給出初始值後就可以通過left, right拿到計算後的座標值,而不需要我們自己寫代碼計算,非常方便。

只需要把Qt的fillRect方法換成pygame.draw.rect , DISPLAYSURF是main方法裏建立的一個surface對象,相當於原來的qlabel。所有的圖像操作都由它來處理。

同時字體也用pygame.font替換掉了,font可以用get_rect()拿到rect , 用blit方法就可以象圖片的操作畫到DISPLAYSURF上面了。詳情可以參閱用Python和Pygame做小遊戲1

最後是鍵盤事件,跟Qt沒有很大區別,只不過鍵位需要替換成pygame的常量


總結
pygame 比PyQt更簡潔,不需要layout這樣的代碼,我們只需要擔心座標和更新界面就好了。下一次,我們就需要實現動畫效果了,敬請期待。
參考書目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章