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

制作一款打飞机游戏63:自动保存

1.编辑器的自动保存实现

  • 目标‌:将自动保存功能扩展到所有编辑器,包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。
  • 实现方式‌:
    • 代码复制‌:将关卡编辑器中的自动保存代码复制到其他编辑器中。
    • 标记数据变更‌:在每个编辑器中,当数据发生变化时,将dirty变量设置为true,以触发自动保存。

2. 代码优化与错误修复

  • 优化‌:
    • 避免重复劳动‌:虽然可以通过全局搜索和替换来快速实现自动保存功能,但为了确保不同编辑器间的细微差别不会引发问题,选择手动编辑每个文件。
    • 未来改进‌:提到未来在创建新游戏模板时,将自动保存功能作为内置功能,以减少重复工作。
  • 错误修复‌:
    • 滚动条问题‌:修复了退出精灵编辑器后滚动条位置不正确的问题。
    • 屏幕外敌人处理‌:改进了敌人离开屏幕后的处理逻辑,确保敌人必须在屏幕上出现过才能被删除。

三、功能增强

1. 微调功能

  • 目的‌:为了方便微调精灵的属性值(如位置、大小等),添加了“微调”功能,允许用户通过左右箭头键来增减数值。

2. 复制功能

  • 目的‌:为了方便用户复制精灵,添加了“复制”按钮,允许用户快速创建精灵的副本。

四、代码重构与逻辑优化

  • 碰撞检测重构‌:
    • 问题‌:原有的碰撞检测逻辑使用数字索引来引用精灵数组,这限制了自定义碰撞对象的可能性。
    • 解决方案‌:将碰撞属性从数字索引改为对象引用,允许碰撞检测功能更加灵活,能够处理屏幕边界等自定义对象。

function export(auto)sortsched()local s=arrname.."=split2d\""for i=1,#data doif i>1 thens..="|"endfor j=1,#data[i] doif j>1 thens..=","ends..=data[i][j]endends..="\""printh(s,file,true)if auto thenadd(msg,{txt="autosave",t=60}) elseadd(msg,{txt="exported!",t=120})end--debug[1]="exported!"
end

相关文章:

制作一款打飞机游戏63:自动保存

1.编辑器的自动保存实现 ‌目标‌:将自动保存功能扩展到所有编辑器,包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。‌实现方式‌: ‌代码复制‌:将关卡编辑器中的自动保存代码复制到其他编辑器中。‌标记数据变更‌&a…...

使用animation.css库快速实现CSS3旋转动画效果

CSS3旋转动画效果实现(使用Animate.css) 下面我将展示如何使用Animate.css库快速实现各种CSS3旋转动画效果,同时提供一个直观的演示界面。 思路分析 引入Animate.css库创建不同旋转动画的展示区域添加控制面板自定义动画效果实现实时预览功…...

基于NetWork的类FNAF游戏DEMO框架

脑洞大开 想做个fnaf1并加入自己的设计.. 开干!!!! #include <stdio.h> #include <iostream> #include <random> #include <ctime>bool leftdoor true, rightdoor true, camddoor true; float power 900,fanusepower 0;typedef struct movement…...

湖北理元理律师事务所:债务优化中的生活保障实践

在债务压力与生活质量失衡的普遍困境中&#xff0c;法律服务的价值不仅在于解决债务问题&#xff0c;更在于帮助债务人重建生活秩序。湖北理元理律师事务所通过其债务优化服务&#xff0c;探索出一条“法律生活”的双轨路径。 债务规划的核心矛盾&#xff1a;还款能力与生存需…...

golang连接sm3认证加密(app)

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5 文档用途 golang连接安全版sm3认证加密数据库,驱动程序详见附件。 详细信息 1.下载Linux golang安装包 go1.17.3.linux-amd64.tar.gz 1.1. 解压安…...

【Zephyr 系列 2】用 Zephyr 玩转 Arduino UNO / MEGA,实现串口通信与 CLI 命令交互

🎯 本篇目标 在 Ubuntu 下将 Zephyr 运行在 Arduino UNO / MEGA 上 打通串口通信,实现通过串口发送命令与反馈 使用 Zephyr Shell 模块,实现 CLI 命令处理 🪧 为什么 Arduino + Zephyr? 虽然 Arduino 开发板通常用于简单的 C/C++ 开发,但 Zephyr 的支持范围远超 STM32…...

AIS常见问题解答(AIS知识补充)

AIS常见问题解答 什么是 AIS&#xff1f; AIS 是“自动识别系统”的缩写。AIS 是一种基于甚高频 (VHF) 的导航和防撞工具&#xff0c;可以实现船舶之间的信息交换。这些信息&#xff08;AIS 数据&#xff09;还会被丹麦海事局运营的岸基 AIS 系统收集。因此&#xff0c;在提及 …...

基于Matlab实现指纹识别系统

【指纹识别系统基础概念】 指纹识别技术是一种生物特征识别技术&#xff0c;它利用人的指纹独一无二的特性进行个人身份的验证。指纹的细节特征&#xff0c;如脊、谷、分岔等&#xff0c;构成了指纹的唯一性&#xff0c;使得指纹识别在安全性、可靠性和便捷性上具有显著优势。…...

Windows10下搭建sftp服务器(附:详细搭建过程、CMD连接测试、连接失败问题分析解决等)

最终连接sftp效果 搭建sftp服务器 1、这里附上作者已找好的 freeSSHd安装包 ,使用它进行搭建sftp服务器。 2、打开freeSSHd安装包,进行安装 (1)、选择完全安装 (2)、安装完成后,对提示窗口选择关闭 (3)、安装完成后,提示是否安装私有密钥。我们选择"是" (4)、安…...

Vue3中Element-Plus中el-input及el-select 边框样式

如果不需要显示下边框&#xff0c;纯无边框直接将 【border-bottom: 1px solid #C0C4CC; 】注掉或去掉即可。 正常引用组件使用即可&#xff0c;无须自定义样式&#xff0c;最终效果CSS样式。 <style scoped> /* 输入框的样式 */ :deep(.el-input__wrapper) { box-sha…...

vue + ant-design + xlsx 实现Excel自定义模板导入功能

Vue Ant Design 扩展&#xff1a;实现Excel自定义模板导入功能 引言 在企业级应用场景中&#xff0c;除了数据导出&#xff0c;模板化导入是另一个核心需求。本文将深入讲解如何基于Vue3 Ant Design Vue xlsx技术栈&#xff0c;实现以下高级导入功能&#xff1a; 自定义模…...

SAP saml2 元数据 HTTP 错误

使⽤事务 SAML2 或 SAML2_IDP 在 ABAP 系统中配置 SAML 2.0 时&#xff0c; Web 页⾯返回 403 已禁⽌、 404 未找到 或 500 服务器内部错误。 在事务 SAML2 中下载元数据时&#xff0c; ⽹页返回 403 已禁⽌、 404 未找到或 500 服务器内部错误。 在事务 SAML2_IDP 中下载…...

知识课堂|sCMOS相机可编程快门模式解析

sCMOS相机凭借高灵敏度、高动态、低读出噪声特性&#xff0c;成为生命科学成像领域的核心设备。在光片荧光显微镜LSFM成像应用中&#xff0c;传统卷帘快门的时序限制可能引发运动伪影或光片照明不均匀问题。可编程快门模式通过精确控制传感器曝光时序&#xff0c;实现与激光扫描…...

数据结构之栈:原理与常用方法

1. 栈的定义 Stack是Vector的一个子类&#xff0c;它实现标准的后进先出堆栈。Stack只定义了创建空堆栈的默认构造方法。&#xff08;实际上是实现了List接口&#xff0c;因为Vector是List的子类&#xff09;。 Stack() // 创建一个空栈 2. 栈的基本操作 // 压栈操作 publi…...

在React框架中使用Braft Editor集成Table表格的详细教程

简介&#xff1a;Braft Editor是一款基于draft-js开发的React富文本编辑器&#xff0c;支持多媒体、自定义样式和扩展功能。其表格扩展模块允许用户插入、调整表格结构&#xff0c;适合需要数据展示的场景&#xff08;如CMS系统、报表工具&#xff09;。 1.安装依赖 yarn add…...

跳动的爱心

跳动的心形图案&#xff0c;通过字符打印和延时效果模拟跳动&#xff0c;心形在两种大小间交替跳动。 通过数学公式生成心形曲线 #include <stdio.h> #include <windows.h> // Windows 系统头文件&#xff08;用于延时和清屏&#xff09; void printHeart(int …...

gbase8s数据库+mybatis问题记录

在实际使用中一般都是mybatis数据库连接池组合使用&#xff0c;单独使用mybatis 连接数据库时&#xff0c;在循环使用PreparedStatement 时 会发生内存泄漏&#xff0c;PreparedStatement资源得不到释放 测试代码片段如下 drawMapper sqlsession.getMapper(DrawMapper.class…...

实现安卓端与苹果端互通的方案多种多样,以下是一些主要的方案

一、使用跨平台开发框架 1.React Native&#xff1a;通过React Native&#xff0c;开发者可以利用React.js的强大生态系统来构建原生移动应用。该框架允许使用相同的代码库在Android和iOS上开发应用&#xff0c;从而节省时间和成本。它支持热重载功能&#xff0c;使得开发者在…...

SpringBoot开发——Spring Boot异常处理全攻略:五大方案实战对比

文章目录 一、血泪教训:异常处理的代价二、五大异常处理方案详解2.1 全局异常处理(推荐方案)2.2 控制器级处理2.3 HTTP状态码注解2.4 ResponseEntity精细控制2.5 自定义异常体系(企业级方案)三、五大方案对比决策表四、四大避坑指南4.1 异常吞噬陷阱4.2 循环依赖问题4.3 异…...

React-props

文章目录 前言✅ 一、什么是 props&#xff1f;✅ 二、props 的特点✅ 三、props 的核心细节 & 常见问题1. **props 是新对象还是引用&#xff1f;**2. **函数作为 props&#xff1a;闭包陷阱**3. **默认值 & 解构默认值**4. **props.children 是什么&#xff1f;**5. …...

【C++篇】list模拟实现

实现接口&#xff1a; list的无参构造、n个val构造、拷贝构造 operator重载 实现迭代器 push_back() push_front() erase() insert() 头尾删 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace liu {//定义list节点temp…...

Oracle exist

Oracle中的EXISTS是用于检查子查询结果是否为空的逻辑运算符&#xff0c;其核心特点和用法如下&#xff1a; ‌基础语法‌ SELECT columns FROM table1 WHERE EXISTS (SELECT 1 FROM table2 WHERE condition); 当子查询返回至少一行时返回TRUE&#xff0c;否则返回FALSE。 ‌执…...

带sdf 的post sim 小结

1.SDF文件主要内容 Delays&#xff08;module&#xff0c;device&#xff0c;interconnect&#xff0c;port&#xff09; Timing checks&#xff08;setup&#xff0c;hold&#xff0c;setuphold&#xff0c;recovery&#xff0c;removal&#xff0c;recrem&#xff09; Timing…...

【面试】喜茶Java面试题目

1、自我介绍、项目介绍&#xff1b; 2、equals 和 的区别&#xff1f;如何重写equals方法&#xff1f; 3、Java中的异常体系&#xff1f;运行时异常和非运行时异常的区别&#xff1f; 4、HashMap的底层数据结构&#xff1f;JDK1.7和1.8的区别&#xff1f; 5、线程池的核心…...

深入浅出:Spring IOCDI

什么是IOC IOC IOC(Inversion of Control)&#xff0c;是一种设计思想&#xff0c;在之前的SpringMVC里就在类上添加RestController和Controller注解就是使用了IOC&#xff0c;这两个注解就是在Spring中创建一个对象&#xff0c;并将注解下的类交给Spring管理&#xff0c;Spr…...

PlankAssembly 笔记 DeepWiki 正交视图三维重建

manycore-research/PlankAssembly | DeepWiki PlankAssembly项目原理 这个项目是一个基于深度学习的3D重建系统&#xff0c;其核心原理是从三个正交视图的工程图纸中重建出3D形状的结构化程序表示。 核心技术原理 1. 问题定义 PlankAssembly旨在从三个正交视图的工程图纸中…...

某验4无感探针-js逆向

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、总体概述二、请求分析1.分析请求流程三、逆向分析四、执行验证总结一、总体概述 本文主要实现用协议过某验4无感探针,相关的链接:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2ludmlzaWJsZS1…...

js中common.js和ECMAScript.js区别

以下是关于 CommonJS 和 ECMAScript Modules&#xff08;ESM&#xff09;的详细对比分析&#xff0c;包含底层原理和示例说明&#xff1a; &#x1f9e9; 核心差异对比表 特性CommonJSES Modules来源Node.js 社区规范ECMAScript 语言标准加载方式动态加载&#xff08;运行时解…...

C语言操作Kafka

Kafka服务 Kafka的快速入门 文档很详细&#xff0c;基本上几步就可以搭建一个Kafka测试环境。 下载Kafka的二进制包&#xff0c;然后解压。 wget https://www.apache.org/dyn/closer.cgi?path/kafka/4.0.0/kafka_2.13-4.0.0.tgz tar -xzf kafka_2.13-4.0.0.tgz cd kafka_2.…...

STM32架构解析

在嵌入式开发领域,STM32作为广泛应用的Cortex-M系列微控制器,常常被问及一个基础而深刻的问题:STM32是哈佛结构,还是冯诺依曼结构?这个问题看似简单,却涉及到计算机架构发展的历史、理论与现实的融合。 一、计算体系结构基础:冯诺依曼 vs 哈佛 1.1 冯诺依曼结构的特性…...