当前位置: 首页 > news >正文

python制作超高难度走迷宫游戏,你要来挑战嘛~(赶紧收藏)

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

走迷宫,是一项充满智慧的挑战~

作为经常刷短视频的我们,见识过不少迷宫小游戏

当然印象深刻的当然是小动物走迷宫

这里有几组挑战走迷宫的小可爱。先来看看吧!

(1)毛茸茸的小仓鼠,大家还记得这视频嘛?过关斩将,走完了6层迷宫。

让小动物走迷宫,显然不是仓鼠党的专利。

仓鼠热门事件之后更多的小动物大军参与了进来:萌宠猫咪。

​人类对“迷宫”的热爱,是有很长的历史的,奇门遁甲八卦里面也经常有迷宫的效果。

今天小编的话就带着大伙儿一起制作一款走迷宫小游戏

代码展示

首先定义一个可以移动的素材(这里大家可修改成自己喜欢的小人物):

‘’‘配置文件’‘’

SCREENSIZE = (800, 625)
BGMPATH = 'resources/audios/bgm.mp3'
HEROPICPATH = 'resources/images/hero.png'
FPS = 20
BLOCKSIZE = 15
MAZESIZE = (35, 50) # num_rows * num_cols
BORDERSIZE = (25, 50) # 25 * 2 + 50 * 15 = 800, 50 * 2 + 35 * 15 = 625

‘’‘主要运行程序’‘’

导入模块

import cfg
import pygame
from modules.misc import *
from modules.mazes import *
from modules.Sprites import *

主函数

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 - 完整源码+V:qian97378免费获取')font = pygame.font.SysFont('Consolas', 15)

开始界面

	Interface(screen, cfg, 'game_start')

记录关卡数

	num_levels = 0

记录最少用了多少步通关

	best_scores = 'None'

关卡循环切换

	while True:num_levels += 1clock = 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):breakpygame.display.update()

更新最优成绩

		if best_scores == 'None':best_scores = num_stepselse:if best_scores > num_steps:best_scores = num_steps

关卡切换

		Interface(screen, cfg, mode='game_switch')

‘’‘run’‘’

if __name__ == '__main__':main(cfg)

好啦!这迷宫有点儿庞大哈,走不走的出来就看你自己了!

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

生一场也犹如走迷宫,靠努力,也靠运气。努力多一点,成功近一点儿!

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

http://www.lryc.cn/news/105715.html

相关文章:

  • springboot整合tio-websocket方案实现简易聊天
  • 《TCP IP网络编程》第十三章
  • 驱动开发 day8 (设备树驱动,按键中断实现led亮灭)
  • DataX将MySQL数据同步到HDFS中时,空值不处理可以吗
  • P3373 【模板】线段树 2(乘法与加法)(内附封面)
  • 实现langchain-ChatGLM API调用客户端(及未解决的问题)
  • 【AltWalker】模型驱动:轻松实现自动化测试用例的生成和组织执行
  • 大数据课程E3——Flume的Sink
  • 如何快速做单元测试?
  • 不同对象的集合转换
  • 【机器学习】Gradient Descent
  • 直播读弹幕机器人:直播弹幕采集+文字转语音(附完整代码)
  • K3s vs K8s:轻量级对决 - 探索替代方案
  • dev控件gridControl,gridview中添加合计
  • SpringBoot基础认识
  • 二十三种设计模式第十九篇--命令模式
  • STM32基础入门学习笔记:基础知识和理论 开发环境建立
  • Qt应用开发(基础篇)——数值微调输入框QAbstractSpinBox、QSpinBox、QDoubleSpinBox
  • html | 无js二级菜单
  • appium的基本使用
  • Dockerfile构建nginx镜像(编译安装)
  • 手机屏幕视窗机器视觉定位软硬件-康耐德
  • Databend 开源周报第 104 期
  • 用于医学图像分类的双引导的扩散网络
  • 8.2day03 Redis入门+解决员工模块
  • 通过案例实战详解elasticsearch自定义打分function_score的使用
  • SpringBoot第28讲:SpringBoot集成MySQL - MyBatis-Plus方式
  • AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解
  • Docker 命令没有提示信息
  • springboot第33集:nacos图