60行Python PyGame代碼實(shí)現(xiàn)簡(jiǎn)單的迷宮游戲
迷宮
迷宮的邏輯很簡(jiǎn)單,就是用上下左右鍵控制方塊運(yùn)動(dòng),然后定義一下墻壁,指明方塊不能穿過(guò)墻壁即可。

當(dāng)然,還是老規(guī)矩,在具體實(shí)現(xiàn)之前,先設(shè)置一些常量
import pygame import sys # 定義顏色 GRAY = (205, 205, 205) WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) SIZE = 40
接下來(lái)設(shè)置一個(gè)按鍵字典,用于控制方塊運(yùn)動(dòng)
KEY_DCT = {
pygame.K_LEFT : [-1, 0],
pygame.K_RIGHT : [1, 0],
pygame.K_UP : [0, -1],
pygame.K_DOWN : [0, 1]
}
以左鍵為例,當(dāng)左鍵按左時(shí),方塊的縱坐標(biāo)不變,而橫坐標(biāo)減去1,顧對(duì)應(yīng)( − 1 , 0 ) (-1,0)(−1,0)。
迷宮表示以及初始化
考慮到更好的自定義迷宮的支持,采用字符列表作為迷宮的映射,以#, I, O分別表示墻壁、玩家位置以及出口位置。從而上面的迷宮可表示如下
maze = [
"############",
"#I # #",
"# ## ### #",
"# # #",
"# # #### #",
"# ## #",
"# ### # # #",
"# ## # #",
"# # # # #",
"## # ## #",
"# # #O# ###",
"############"
]
???????maze = [list(m) for m in maze]
之所以采用嵌套的字符列表,乃因字符串不支持類(lèi)似s[1]=2這種操作。
接下來(lái)要做的,就是定義一個(gè)繪圖函數(shù),可以將迷宮和玩家統(tǒng)一繪制出來(lái),實(shí)現(xiàn)如下。如果后續(xù)有升級(jí)的需求,在迷宮中放置一些不明物體,從而需要的字符種類(lèi)更多,那么可以考慮將繪圖邏輯封裝成字典。
# 繪制迷宮地圖
def init(strLst = maze):
# 第i行,第j列
for i,s in enumerate(strLst):
for j,ch in enumerate(s):
if ch not in "#IO":
continue
rect = (j*SIZE, i*SIZE, SIZE, SIZE)
if ch == "#":
pygame.draw.rect(win, GRAY, rect,5)
elif ch == "I":
player = [j, i]
pygame.draw.rect(win, RED, rect)
elif ch == "O":
pExit = [j, i]
pygame.draw.rect(win, GREEN, rect)
return player, pExit
游戲主循環(huán)
在實(shí)現(xiàn)主循環(huán)之前,需要對(duì)pygame進(jìn)行初始化,包括初始化窗口等
# 初始化pygame
pygame.init()
win = pygame.display.set_mode(
(len(maze[0]) * SIZE, len(maze) * SIZE))
pygame.display.set_caption("迷宮游戲")
running = True
其中,running為游戲結(jié)束的判定變量,其主循環(huán)內(nèi)容如下
到此這篇關(guān)于60行Python PyGame代碼實(shí)現(xiàn)簡(jiǎn)單的迷宮游戲的文章就介紹到這了,更多相關(guān)Python PyGame迷宮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django Docker容器化部署之Django-Docker本地部署
這篇文章主要介紹了Django Docker容器化部署之Django-Docker本地部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Python寫(xiě)出新冠狀病毒確診人數(shù)地圖的方法
在本篇文章里小編給大家分享的是關(guān)于Python做新冠狀病毒確診人數(shù)地圖的詳解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-02-02
Python利用PyPDF2庫(kù)處理PDF文件的基本操作
PyPDF2是一個(gè)Python庫(kù),用于處理PDF文件,包括合并、分割、旋轉(zhuǎn)和提取文本等操作,它是一個(gè)功能強(qiáng)大且靈活的工具,可用于自動(dòng)化處理PDF文件,適用于各種應(yīng)用,從文檔管理到數(shù)據(jù)分析,本文將深入介紹PyPDF2庫(kù),掌握如何利用它來(lái)處理PDF文件,需要的朋友可以參考下2023-11-11
NumPy中np.c_ 和 np.r_ 的區(qū)別小結(jié)
np.c_和?np.r_是NumPy庫(kù)中兩個(gè)非常有用的函數(shù),它們分別用于按列和按行拼接數(shù)組本文主要介紹了NumPy中np.c_ 和 np.r_ 的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
Python中l(wèi)azy property的兩種方法小結(jié)
本文介紹了Python中實(shí)現(xiàn)延遲屬性lazyproperty的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
利用Python進(jìn)行金融數(shù)據(jù)分析的全過(guò)程
金融數(shù)據(jù)分析在現(xiàn)代金融行業(yè)中扮演著至關(guān)重要的角色,通過(guò)使用Python編程語(yǔ)言,我們可以對(duì)大量金融數(shù)據(jù)進(jìn)行處理、分析和可視化,從而獲得有價(jià)值的洞察,本篇文章將介紹如何使用Python進(jìn)行金融數(shù)據(jù)分析,需要的朋友可以參考下2024-08-08

