猫史档案馆


【Python作品分享】啊 【作业帖】

用户:神奇代码岛func王清林神奇代码岛func王清林查看:0 回复:0 评论:0 创建时间:2022-10-30T21:35:52


【作品展示】

center_image

 

【作品介绍】

1

 

【作品源代码】

'''配置文件'''
from modules import *
import pygame
import sys
import cfg
import os
  

'''屏幕大小'''
SCREENSIZE = (800, 625)
'''游戏素材'''
BGMPATH = os.path.join(os.getcwd(), 'resources/audios/bgm.mp3')
HEROPI喵ATH = os.path.join(os.getcwd(), 'resources/images/hero.png')
'''FPS'''
FPS = 20
'''块大小'''
BLOCKSIZE = 15
MAZESIZE = (35, 50)  # num_rows * num_cols
BORDERSIZE = (25, 50)  # 25 * 2 + 50 * 15 = 800, 50 * 2 + 35 * 15 = 625


'''主函数'''


def main(cfg):
 # 初始化
 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('Maze —— 九歌')
 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.HEROPI喵ATH, [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)

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页