当前位置: 首页 > 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)

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

尾语

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

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

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

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

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

相关文章:

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

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 走迷宫,是一项充满智慧的挑战~ 作为经常刷短视频的我们,见识过不少迷宫小游戏 当然印象深刻的当然是小动物走迷宫 这里有几组挑战走迷宫的小可爱。先来看看吧! (1&#xff…...

springboot整合tio-websocket方案实现简易聊天

写在最前: 常用的http协议是无状态的,且不能主动响应到客户端。最初想实现状态动态跟踪只能用轮询或者其他效率低下的方式,所以引入了websocket协议,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务…...

《TCP IP网络编程》第十三章

第 13 章 多种 I/O 函数 13.1 send & recv 函数 Linux 中的 send & recv&#xff1a; send 函数定义&#xff1a; #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags); /* 成功时返回发送的字节数&#xff0c;失败…...

驱动开发 day8 (设备树驱动,按键中断实现led亮灭)

//编译驱动 (注意Makefile的编译到移植到开发板的内核) make archarm //清除编译生成文件 make clean ****************************************** //安装驱动 insmod mycdev.ko //卸载驱动 rmmod mycdev 需要在<内核路径>/arch/arm/boot/dts/ 修改 stm32mp157a-fsm…...

DataX将MySQL数据同步到HDFS中时,空值不处理可以吗

DataX将MySQL数据同步到HDFS中时&#xff0c;空值存到HDFS中时&#xff0c;默认是存储为\N&#xff0c;这样会有两个缺点&#xff1a; 会产生歧义&#xff0c;如果MySQL业务数据中有\N数据&#xff0c;那么存储到HDFS上是\N&#xff0c;null值存储也是\N&#xff0c;当用Hive查…...

P3373 【模板】线段树 2(乘法与加法)(内附封面)

【模板】线段树 2 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面三种操作&#xff1a; 将某区间每一个数乘上 x x x&#xff1b;将某区间每一个数加上 x x x&#xff1b;求出某区间每一个数的和。 输入格式 第一行包含三个整数 n , q , m n,q,m n,…...

实现langchain-ChatGLM API调用客户端(及未解决的问题)

langchain-ChatGLM是一个基于本地知识库的LLM对话库。其基于text2vec-large-Chinese为Embedding模型&#xff0c;ChatGLM-6B为对话大模型。原项目地址&#xff1a;https://github.com/chatchat-space/langchain-ChatGLM 对于如何本地部署ChatGLM模型&#xff0c;可以参考我之前…...

【AltWalker】模型驱动:轻松实现自动化测试用例的生成和组织执行

目录 模型驱动的自动化测试 优势 操作步骤 什么是AltWalker&#xff1f; 安装AltWalker 检查是否安装了正确的版本 牛刀小试 创建一个测试项目 运行测试 运行效果 在线模型编辑器 VScode扩展 本地部署 包含登录、选择产品、支付、退出登录的模型编写 模型效果 1…...

大数据课程E3——Flume的Sink

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Sink的HDFS Sink; ⚪ 掌握Sink的Logger Sink; ⚪ 掌握Sink的File Roll Sink; ⚪ 掌握Sink的Null Sink; ⚪ 掌握Sink的AVRO Sink; ⚪ 掌握Sink的Custom Sink; 一、HDFS Sink …...

如何快速做单元测试?

首先写unit test之前&#xff0c;要确认自己的测试遵循两个原则&#xff1a; 1、尽量不要干涉原来的代码。从阅读代码的体验来说&#xff0c;不要让你的测试&#xff08;哪怕是一小段if..else...的代码&#xff09;出现在你准备测试的代码中。 2、代码要只是测试某个class里面…...

不同对象的集合转换

https://blog.csdn.net/qq_42483473/article/details/128984514 import com.alibaba.fastjson.JSON;import java.util.ArrayList; import java.util.List;/*** author */ public class ObjectConversion {/*** 从List<A> copy到List<B>* param list List<B>…...

【机器学习】Gradient Descent

Gradient Descent for Linear Regression 1、梯度下降2、梯度下降算法的实现(1) 计算梯度(2) 梯度下降(3) 梯度下降的cost与迭代次数(4) 预测 3、绘图4、学习率 首先导入所需的库&#xff1a; import math, copy import numpy as np import matplotlib.pyplot as plt plt.styl…...

直播读弹幕机器人:直播弹幕采集+文字转语音(附完整代码)

目录 前言代码实现请求数据解析数据文字转语音完整代码 高级点的tk界面版 前言 直播读弹幕机器人是指能够实时读取直播平台上观众发送的弹幕&#xff0c;并将其转化为语音进行播放的机器人。这种机器人通常会使用文字转语音技术&#xff0c;将接收到的弹幕文本转为语音&#x…...

K3s vs K8s:轻量级对决 - 探索替代方案

在当今云原生应用的领域中&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;已经成为了无可争议的领导者。然而&#xff0c;随着应用规模的不断增长&#xff0c;一些开发者和运维人员开始感受到了K8s的重量级特性所带来的挑战。为了解决这一问题&#xff0c;一个名为K3s的…...

dev控件gridControl,gridview中添加合计

需求&#xff1a;在合并结账查询中&#xff0c;双击每一条结账出现这次结账对应的结算明细&#xff1a; 弹出的页面包括&#xff1a;结算日期&#xff0c;ID&#xff0c;姓名&#xff0c;费别&#xff0c;预交金收入&#xff0c;结算金额&#xff0c;收据号&#xff0c;合计&a…...

SpringBoot基础认识

创建SpringBoot模块 首先需要引设置maven并引用maven环境 1.打开项目结构&#xff0c;new module&#xff0c;选择Spring Initializr&#xff0c;URL选默认&#xff1a; group填写分组如com.kdy &#xff0c; Artifact起个模块名如springboot_quickstart&#xff0c;Type选择M…...

二十三种设计模式第十九篇--命令模式

命令模式是一种行为设计模式&#xff0c;它将请求封装成一个独立的对象&#xff0c;从而允许您以参数化的方式将客户端代码与具体实现解耦。在命令模式中&#xff0c;命令对象充当调用者和接收者之间的中介。这使您能够根据需要将请求排队、记录请求日志、撤销操作等。 命令模…...

STM32基础入门学习笔记:基础知识和理论 开发环境建立

文件目录&#xff1a; 一&#xff1a;基础知识和理论 1.ARM简介 2.STM32简介 3.STM32命名规范 4.STM32内部功能* 5.STM32接口定义 二&#xff1a;开发环境建立 1.开发板简介 2.ISP程序下载 3.最小系统电路 4.KEIL的安装 5.工程简介与调试流程 6.固件库的安装 7.编…...

Qt应用开发(基础篇)——数值微调输入框QAbstractSpinBox、QSpinBox、QDoubleSpinBox

目录 一、前言 二、QAbstractSpinBox类 1、accelerated 2、acceptableInput 3、alignment 4、buttonSymbols 5、correctionMode 6、frame 7、keyboardTracking 8、readOnly 9、showGroupSeparator 10、specialValueText 11、text 12、wrapping 13、信号 二、Q…...

html | 无js二级菜单

1. 效果图 2. 代码 <meta charset"utf-8"><style> .hiddentitle{display:none;}nav ul{list-style-type: none;background-color: #001f3f;overflow:hidden; /* 父标签加这个&#xff0c;防止有浮动子元素时&#xff0c;该标签失去高度*/margin: 0;padd…...

华硕笔记本终极性能优化方案:G-Helper轻量级控制工具完全指南

华硕笔记本终极性能优化方案&#xff1a;G-Helper轻量级控制工具完全指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...

口腔诊所装修性价比提升指南

口腔诊所进行装修时&#xff0c;提升性价比的核心在于 “精准投入” &#xff0c;即在确保医疗功能、患者体验和卫生合规的前提下&#xff0c;实现成本的最优化。1、 规划先行&#xff1a;奠定性价比基石 功能布局优先&#xff1a; 明确划分接待、候诊、诊疗、消毒等功能区&…...

clawPDF脚本自动化:如何用Python和PowerShell批量处理PDF文档的终极指南

clawPDF脚本自动化&#xff1a;如何用Python和PowerShell批量处理PDF文档的终极指南 【免费下载链接】clawPDF Open Source Virtual (Network) Printer for Windows that allows you to create PDFs, OCR text, and print images, with advanced features usually available on…...

课堂教室学生行为识别分割数据集labelme格式1420张4类别

注意数据集中有增强图片主要是亮度对比度增强&#xff0c;此外图片并不是十分清晰&#xff0c;具体看图片数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数)&#xff1a;1420标注数量(json文件个数)&#x…...

巴洛克光影建模失败率高达83%?用这7个构图锚点+12组权威艺术史关键词立即逆转

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;巴洛克光影建模的危机本质与历史断层 “巴洛克光影建模”并非真实存在的技术流派&#xff0c;而是对20世纪末至21世纪初三维渲染实践中一种高度装饰化、过度依赖手工打光与物理不一致材质叠加现象的隐喻性指称…...

OpCore-Simplify技术解构:自动化OpenCore EFI配置引擎的架构剖析

OpCore-Simplify技术解构&#xff1a;自动化OpenCore EFI配置引擎的架构剖析 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在开源系统定制领域&…...

如何为Hermes Agent配置Taotoken作为自定义模型供应商并写入环境变量

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何为Hermes Agent配置Taotoken作为自定义模型供应商并写入环境变量 基础教程类&#xff0c;详细说明在Hermes Agent中配置Taotok…...

在Node.js服务中集成Taotoken实现统一的多模型调用网关

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Node.js服务中集成Taotoken实现统一的多模型调用网关 对于构建在Node.js上的后端服务&#xff0c;直接对接多个大模型供应商的AP…...

B站视频下载终极指南:如何一键获取无水印高清视频

B站视频下载终极指南&#xff1a;如何一键获取无水印高清视频 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload 你是否曾为下载B站视频而烦恼&#xff1f;想要保存喜欢的视频却找不到合适的工具&#xff1f;B…...

如何将Scrapeless MCP服务器集成到ZeroClaw中:逐步指南

关键要点&#xff1a; 一个TOML块将云浏览器连接到本地Rust代理。 ZeroClaw是一个单一二进制AI代理运行时&#xff0c;它与LLM提供者通信&#xff0c;监听30多个频道&#xff0c;并通过工具进行操作。只需在~/.zeroclaw/config.toml中添加四行[mcp]块即可添加Scrapeless MCP服…...