兄弟們,爬蟲爬多了,對身體不好,也要考慮勞逸結合,偶爾換換口味。
今天來感受一下用python來開發一款益智游戲,來吃夠!
軟件環境,咱們還是用python和pycharm即可。
模塊的話,沒有安裝的安裝一下 cfg 和 pygame 模塊。
win+r 打開運行框輸入 cmd 按回車彈出命令提示符窗口,輸入pip install 模塊名,如 pip install pygame 然后按回車即可安裝成功。
這一步我真的寫了太多次了,就是怕有零基礎的老鐵不會,每次都寫,害。
然后咱們直接來吧展示
模塊導入
import cfg import pygame from modules.misc import * from modules.mazes import * from modules.Sprites import * # Python學習交流群:815624229
主函數
初始化
pygame.init() pygame.mixer.init() pygame.font.init() pygame.mixer.music.load(cfg.BGMPATH) pygame.mixer.music.play(-1, 0.0) screen = pygame.display.set_mode(cfg.SCREENSIZE) pygame.display.set_caption('迷宮益智小游戲') font = pygame.font.SysFont('Consolas', 15)
開始界面
Interface(screen, cfg, 'game_start')
記錄關卡數
num_levels = 0
記錄最少用了多少步通關
best_scores = 'None'
關卡循環切換
while True: num_levels += 1 clock = pygame.time.Clock() screen = pygame.display.set_mode(cfg.SCREENSIZE)
隨機生成關卡地圖
maze_now = RandomMaze(cfg.MAZESIZE, cfg.BLOCKSIZE, cfg.BORDERSIZE)
生成hero
hero_now = Hero(cfg.HEROPICPATH, [0, 0], cfg.BLOCKSIZE, cfg.BORDERSIZE)
統計步數
num_steps = 0
關卡內主循環
while True: dt = clock.tick(cfg.FPS) screen.fill((255, 255, 255)) is_move = False
↑↓←→控制hero
for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit(-1) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: is_move = hero_now.move('up', maze_now) elif event.key == pygame.K_DOWN: is_move = hero_now.move('down', maze_now) elif event.key == pygame.K_LEFT: is_move = hero_now.move('left', maze_now) elif event.key == pygame.K_RIGHT: is_move = hero_now.move('right', maze_now) num_steps += int(is_move) hero_now.draw(screen) maze_now.draw(screen)
顯示一些信息
showText(screen, font, 'LEVELDONE: %d' % num_levels, (255, 0, 0), (10, 10)) showText(screen, font, 'BESTSCORE: %s' % best_scores, (255, 0, 0), (210, 10)) showText(screen, font, 'USEDSTEPS: %s' % num_steps, (255, 0, 0), (410, 10)) showText(screen, font, 'S: your starting point D: your destination', (255, 0, 0), (10, 600))
判斷游戲是否勝利
if (hero_now.coordinate[0] == cfg.MAZESIZE[1] - 1) and (hero_now.coordinate[1] == cfg.MAZESIZE[0] - 1): break pygame.display.update()
更新最優成績
if best_scores == 'None': best_scores = num_steps else: if best_scores > num_steps: best_scores = num_steps
關卡切換
Interface(screen, cfg, mode='game_switch')
run
if __name__ == '__main__': main(cfg)
截個圖算了,視頻我就不錄了
然后這個游戲的話,需要一些素材文件,大家在導入模塊那部分可以領到
記得點贊收藏哈