<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
哈嘍!哈嘍我是栗子,每日更新來啦——
“玩迷宮遊戲長大的我們,欣慰地看到,下一代仍熱愛著這個經典遊戲。
如果你的孩子也愛玩迷宮,那真要恭喜你了。”
之前給大家更新過一款《走迷宮》的小遊戲大家還記得嘛?!後面有小夥伴兒讓我做一款ai版本的,讓自動兒,今天,讓我們發揮想象力,一起用程式碼做一款AI版本的迷宮吧!還可以鍛鍊腦力一直玩兒啦~
本文小程式用遞迴的方法解決迷宮問題,加入了可以自動生成迷宮,但有些問題還不是很明白生成迷宮用了很笨的方法,在生成20行、列以上的迷宮時會很慢啦~
就簡單的研究一下,之後有更好的會繼續學了給大家更新滴!
程式碼共主要有三塊,太多了所以這裡只展示主程式的程式碼
import random import pygame FPS = 60 ROW = 10 COL = 10 BLOCK = 20 BORDER = 20 SCREEN_WIDTH = COL * BLOCK + BORDER * 2 SCREEN_HEIGHT = ROW * BLOCK + BORDER * 2 IMPOSSIBLE_COLOR = (128, 128, 128) POSSIBLE_COLOR = (76, 141, 174) ROUTE_COLOR = (12, 137, 24) # noinspection PyPep8Naming class DrawMaze(object): def __init__(self): self.screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) # 建立螢幕物件 pygame.display.set_caption('{}*{} Maze'.format(ROW, COL)) # 視窗標題 self.clock = pygame.time.Clock() self.color = POSSIBLE_COLOR # 首先設定路徑塊與可能塊的顏色相同 self.maze = MakeMaze().create(ROW, COL) self.no_route = True def display(self): """ 在視窗中顯示迷宮,按任意鍵顯示路徑 """ while True: self.screen.fill((0, 0, 0)) for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if event.type == pygame.MOUSEBUTTONDOWN: # 按滑鼠顯示路徑,再按取消顯示 if self.no_route: self.color = ROUTE_COLOR self.no_route = False else: self.color = POSSIBLE_COLOR self.no_route = True if event.type == pygame.KEYDOWN: # 按任意鍵重新生成迷宮 self.maze = MakeMaze().create(ROW, COL) self.drawBlock(self.color) self.clock.tick(FPS) pygame.display.update() def drawBlock(self, color): """ 用遍歷取出迷宮資料並在視窗中畫顏色塊 """ for i, line in enumerate(self.maze): for j, value in enumerate(line): rect = (j * BLOCK + BORDER, i * BLOCK + BORDER, BLOCK, BLOCK) if value == 0: pygame.draw.rect(self.screen, IMPOSSIBLE_COLOR, rect, 0) elif value == 1: pygame.draw.rect(self.screen, POSSIBLE_COLOR, rect, 0) else: pygame.draw.rect(self.screen, color, rect, 0) # noinspection PyPep8Naming class MakeMaze(object): def __init__(self): self.route_list = [] # 初始化路線列表 # noinspection PyUnusedLocal def create(self, x, y): """ 生成迷宮 """ route_list = [] # 初始化路線列表 while True: maze = [[random.choice([0, 1]) for j in range(y)] for i in range(x)] maze[0][0] = 1 if self.walk(maze, 0, 0): return maze def walk(self, maze, x, y): """ 如果位置是迷宮的出口,說明成功走出迷宮 依次向下、右、左、上進行探測,走的通就返回True,然後繼續探測,走不通就返回False """ if x == len(maze) - 1 and y == len(maze[0]) - 1: maze[x][y] = 2 # 將出口位置做標記 return True if self.validPos(maze, x, y): # 遞迴主體實現 self.route_list.append((x, y)) # 將位置加入路線列表中 maze[x][y] = 2 # 做標記,防止折回 if self.walk(maze, x + 1, y) or self.walk(maze, x, y + 1) or self.walk(maze, x, y - 1) or self.walk(maze, x - 1, y): return True else: maze[x][y] = 1 # 沒走通把上一步位置標記取消,以便能夠退回 self.route_list.pop() # 在位置列表中刪除位置,即最後一個元素 return False return False @staticmethod def pprint(maze): """ 列印迷宮 """ [print(n) for n in maze] @staticmethod def validPos(maze, x, y): """ 判斷座標的有效性,如果超出陣列邊界或是不滿足值為1的條件,說明該點無效返回False,否則返回True """ if len(maze) > x >= 0 and len(maze[0]) > y >= 0 and maze[x][y] == 1: return True else: return False def main(): drawer = DrawMaze() # 用迷宮生成畫圖物件 drawer.display() # 顯示迷宮 if __name__ == '__main__': main()
以上就是Pygame實戰之迷宮遊戲的實現的詳細內容,更多關於Pygame迷宮的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45