相关文件
想学Python的小伙伴可以关注小编的 公众号【Python日志】
有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!!
需要源码的小伙伴在公众号里面回复: 迷宫小游戏
Python学习交流群:773162165
开发环境
Python版本:3.7.8
相关模块:
requests模块;
tqdm模块;
pyfreeproxy模块;
pyecharts模块;
以及一些python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
代码实现
首先肯定少不了的就是记录我们的一个”战绩”的环节,那就是记录我们的关卡数还有通过了多少关!很简单的代码实现!
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_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
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)
然后就是一些类的实现过程:
精灵类
'''定义hero'''
class Hero(pygame.sprite.Sprite):
def __init__(self, imagepath, coordinate, block_size, border_size, **kwargs):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(imagepath)
self.image = pygame.transform.scale(self.image, (block_size, block_size))
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = coordinate[0] * block_size + border_size[0], coordinate[1] * block_size + border_size[1]
self.coordinate = coordinate
self.block_size = block_size
self.border_size = border_size
'''移动'''
def move(self, direction, maze):
blocks_list = maze.blocks_list
if direction == 'up':
if blocks_list[self.coordinate[1]][self.coordinate[0]].has_walls[0]:
return False
else:
self.coordinate[1] = self.coordinate[1] - 1
return True
elif direction == 'down':
if blocks_list[self.coordinate[1]][self.coordinate[0]].has_walls[1]:
return False
else:
self.coordinate[1] = self.coordinate[1] + 1
return True
elif direction == 'left':
if blocks_list[self.coordinate[1]][self.coordinate[0]].has_walls[2]:
return False
else:
self.coordinate[0] = self.coordinate[0] - 1
return
Original: https://blog.csdn.net/Gtieguo/article/details/123234754
Author: 彳余大胆
Title: 今天手把手教你做一个Python版的迷宫小游戏
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/779841/
转载文章受原作者版权保护。转载请注明原作者出处!