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

设计模式_备忘录模式

备忘录模式

介绍

设计模式定义案例问题堆积在哪里解决办法
备忘录模式行为型模式,
保存了数据某一个时间点的状态
在需要的时候进行回档
单机游戏的角色
数据保存并且回档
保存和回档加一个状态管理类

类图

代码

MomentData

using UnityEngine;public class MomentData
{public string roleName;public int HP;public int MP;public Vector3 rolePos = Vector3.zero;MomentData() { }public MomentData(MomentData m){this.roleName = m.roleName;this.HP = m.HP;this.MP = m.MP;this.rolePos = m.rolePos;}public MomentData(string roleName, int HP, int MP, Vector3 rolePos){SetData(roleName, HP, MP, rolePos);}public void SetData(string roleName, int HP, int MP, Vector3 rolePos){this.roleName = roleName;this.HP = HP;this.MP = MP;this.rolePos = rolePos; }// 被攻击public void BeAttack(){HP--;}
}

Momento

using System.Collections.Generic;public class Momento
{// 保存数据集合Dictionary<string, MomentData> dic = new Dictionary<string, MomentData>();// 保存public void Save(string key, MomentData data){MomentData newdata = new MomentData(data);dic.Add(key, newdata);}// 加载public MomentData Load(string key, MomentData data){if (dic.ContainsKey(key)){MomentData old = dic[key];data.roleName  = old.roleName;data.HP        = old.HP;data.MP        = old.MP;data.rolePos   = old.rolePos;}return null;}
}

测试代码

using UnityEngine;public class TestBWL : MonoBehaviour
{void Start(){Momento m = new Momento();MomentData data = new MomentData("王者", 100, 80, Vector3.zero);// 打boss前保存m.Save("打boss前", data);// 被攻击for (int i = 0; i < 99; i++){data.BeAttack();}Debug.Log(data.roleName + " 当前血量: " + data.HP);// 使用回档技能m.Load("打boss前", data);Debug.Log(data.roleName + " 回档后血量: " + data.HP);}
}

结果

总结

这个模式比较简单 ,做个容器保存“状态数据”,然后再包一层方便使用。

相关文章:

设计模式_备忘录模式

备忘录模式 介绍 设计模式定义案例问题堆积在哪里解决办法备忘录模式行为型模式&#xff0c; 保存了数据某一个时间点的状态 在需要的时候进行回档单机游戏的角色 数据保存并且回档保存和回档加一个状态管理类 类图 代码 MomentData using UnityEngine;public class MomentD…...

双势阱模型

双势阱模型 原子钟 传统的原子钟利用氨分子 由于隧道效应&#xff0c;上顶点的氮原子可以贯穿三个氢原子形成的势垒&#xff0c;到达下顶点对体系注入微波能量后&#xff0c;氮原子在上下定点之间振荡&#xff0c;体系的能量在两个稳定态之间交替变换&#xff0c;其振荡频率决…...

文献阅读:The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A”

文献阅读&#xff1a;The Reversal Curse: LLMs trained on “A is B” fail to learn “B is A” 1. 文章简介2. 实验 & 结果考察 1. finetune实验2. 真实知识问答 3. 结论 & 思考 文献链接&#xff1a;https://arxiv.org/abs/2309.12288 1. 文章简介 这篇文章是前…...

真实感受:是智能家居在选择合适的技术!

科技从来都是为了让我们的生活更加的简单、舒适&#xff0c;而智能家居的智能&#xff0c;体现在如何更更更方便的使用我需要控制的家居。 例如&#xff1a;下班躺在床上想休息&#xff0c;房间和大厅的灯还开着&#xff0c;这时你会选择什么产品躺着解决问题&#xff1f; 红外…...

前端 TS 快速入门之二:接口

1. 接口有什么用 通过 interface 定义接口。 检测对象的属性&#xff0c;不会去检查属性的顺序&#xff0c;只要相应的属性存在并且类型也是对的就可以。 interface IPerson {name: string;age: number; } function say(person: IPerson): void {console.log(my name is ${pers…...

论文生成器(论文、文献综述、开题报告……),Java、Python、C++

“让论文生成器为您省时省力&#xff0c;轻松写出高质量的论文&#xff01;” 2022年&#xff0c;腾讯全球数字生态大会腾讯云智能专场发布。 链接&#xff1a;http://xiezuo.saiertewl.cn/tb/xrWQed?dCodeh1xDrXmuhZbKPKgI&couponCodexiaoweilunwen...

【Java基础面试三十六】、遇到过异常吗,如何处理?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;遇到过异常吗&#xff0…...

DASCTF-CBCTF-2023 Crypto部分复现

文章目录 EzRSACB backpack 这次比赛没打&#xff0c;记错时间了&#xff0c;看了一下&#xff0c;如果去做的话大概也只能做出那两道简单的题&#xff0c;还是太菜啦 EzRSA 题目描述&#xff1a; from Crypto.Util.number import * import random from gmpy2 import * from …...

为什么要做字节对齐 alignment?

下面这段 C 代码的输出是什么&#xff1f;定义的 Type 占用的字节数&#xff08;下面简称为字节数&#xff09;是多少呢&#xff1f; #include <iostream>struct Type {char a;int b; };int main(void) {std::cout << sizeof(Type) << \n; }经过编译运行&am…...

(零基础学习)Neo4j+Spring boot 自行定义属性

前置知识 1.Neo4j :属性 节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成&#xff0c;键名是字符串。属性值是要么是原始值&#xff0c;要么是原始值类型的一个数组。比如String&#xff0c;int和iint[]都是合法的。 注意 null不是一个合法的属性值。 Nulls能…...

【JavaEE】Java的文件IO

文件IO操作 Linux 下的文件操作讲解Java中的文件操作 -- 对文件的增删改查Java中对文件内容的操作 -- 读写操作使用案例 Linux 下的文件操作讲解 在我的Linux栏目下有, 如有需要, 点击下面进行跳转: 内存级文件系统语言级别的文教操作磁盘文件 Java中的文件操作 – 对文件的…...

域名解析与记录

域名解析是将域名转换为IP的过程&#xff0c;使得人们能够直接通过域名访问网站&#xff0c;而不用记繁琐的IP地址信息。而在域名解析中&#xff0c;CNAME记录和A记录是两个不同的记录类型。 A记录&#xff08;Address Record&#xff0c;地址记录&#xff09;是指将一个域名解…...

Android 13.0 第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法

1.概述 在13.0的系统产品中,对于内置第三方低版本app时,会有某些权限的冲突,导致在启动app时,崩溃掉,在查询相关日志发现是报权限的问题,所以就需要在安装解析app的时候,授予权限 2.第三方无源码apk授予QUERY_ALL_PACKAGES等其他权限的方法的核心类 /frameworks/base…...

【CSS】gird 网格

网格&#xff08;Grid&#xff09;是一种基于列数的布局系统&#xff0c;它可以帮助开发者创建具有水平和垂直分隔的页面布局。在CSS中&#xff0c;Grid是一种非常强大的布局工具&#xff0c;可以轻松地创建复杂的布局结构。Grid的主要属性包括&#xff1a; grid-template-col…...

(未完待续)【Netty专题】Netty实战与核心组件详解

目录 前言阅读对象阅读导航前置知识课程内容一、Netty简介1.1 Netty是什么1.2 Netty有什么优势 二、第一个Netty程序2.1 Netty简单使用示例2.2 代码解读2.3 Netty的特性2.3.1 Netty的事件 2.4 Netty线程模型 三、Netty核心组件详解&#xff08;未完待续&#xff09;3.1 EventLo…...

“第四十五天” 数据结构基本概念

目前看的有关数据结构的课&#xff0c;估计这周就看完了&#xff0c;但感觉差很多&#xff0c;还是和c一样&#xff0c;这样过一下吧。但可能比较急&#xff0c;目前是打算争取寒假回家之前把四大件都先大致过一遍。 数据结构里面有很多新的定义和概念&#xff0c;学到现在&am…...

《java 桌面软件开发》swing 以鼠标为中心放大缩小移动图片

swing 使用Graphic2D 绘制图片&#xff0c;要实现对图片进行缩放和自由拖动。 1.以鼠标所在的位置为中心&#xff0c;滚轮控制缩放 2.缩放后再支持鼠标拖动。 基本原理&#xff1a; 利用scale() 函数。进行缩放。但是要注意的地方是&#xff0c;如果是在 public void paintCom…...

浅析人脸活体检测技术的功能及几种分类

在日常生活工作中&#xff0c;出现了人脸验证、人脸支付、人脸乘梯、人脸门禁等等常见的应用场景。这说明人脸识别技术已经在门禁安防、金融行业、教育医疗等领域被广泛地应用&#xff0c;人脸识别技术的高速发展与应用同时也出现不少质疑。其中之一就是人脸识别很容易被照片、…...

【Java基础面试三十五】、谈谈你对面向接口编程的理解

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;谈谈你对面向接口编程的…...

利用TreeMap来达成离散化的目的

假如有一些奶牛&#xff0c;他们有种类的区别&#xff0c;我们设黑色奶牛的id为1000010000&#xff0c;白色为1&#xff0c;诸如此类以此类推还有红色等各种颜色&#xff0c;接下来给你一群奶牛的颜色id让你统计每种颜色的奶牛有几头。 如过我们使用数组显然1000010000会爆空间…...

AGI验证不是“加个测试集”那么简单:基于27个真实事故案例的12项反模式清单

第一章&#xff1a;AGI验证的本质挑战与范式跃迁 2026奇点智能技术大会(https://ml-summit.org) AGI验证远非传统软件测试或模型评估的简单延伸&#xff0c;其核心困境在于&#xff1a;验证对象本身缺乏稳定定义、可穷举行为边界与可判定终止条件。当系统具备跨域元认知、自主…...

别再手动算板块强弱了!用Tushare+Flask快速搭建一个历史板块分析查询工具

从脚本到服务&#xff1a;用TushareFlask构建板块分析工具的工程实践 每次打开行情软件手动统计板块涨跌幅时&#xff0c;那些重复的点击操作总让我想起学生时代抄写课文的场景。作为量化爱好者&#xff0c;我们完全可以用代码解放双手——但问题在于&#xff0c;大多数数据分析…...

次元画室Windows安装详解:从Git克隆到Web界面启动全流程

次元画室Windows安装详解&#xff1a;从Git克隆到Web界面启动全流程 想在自己的Windows电脑上搭建一个专属的二次元角色设计工具"次元画室"&#xff0c;却不知道从何下手&#xff1f;这篇文章将带你从零开始&#xff0c;一步步完成从代码获取到Web界面启动的全过程。…...

Abel逆变换在等离子体诊断中的应用:如何用Python处理轴对称光谱数据

Abel逆变换在等离子体诊断中的Python实战&#xff1a;从原理到光谱重建 等离子体诊断中轴对称数据的处理一直是实验物理学家面临的挑战。想象一下&#xff0c;当你通过激光诱导击穿光谱(LIBS)获得等离子体发射的光谱数据时&#xff0c;这些二维投影数据实际上包含了三维空间分布…...

别再死记硬背了!用H模型和Π模型,手把手教你搞定三极管高频电路设计

别再死记硬背了&#xff01;用H模型和Π模型&#xff0c;手把手教你搞定三极管高频电路设计 记得第一次设计高频放大器时&#xff0c;我盯着三极管手册上的参数发呆了半小时——rbb、Cob、fT这些字母组合像天书一样。更让人崩溃的是&#xff0c;教材里H模型和Π模型的推导过程密…...

单例管理化技术中的单例计划单例实施单例验证

单例管理化技术&#xff1a;计划、实施与验证的闭环实践 在软件开发中&#xff0c;单例模式因其全局唯一性和资源高效管理的特点被广泛应用。如何系统化地管理单例的生命周期&#xff0c;确保其正确性与稳定性&#xff1f;单例管理化技术通过“单例计划”“单例实施”“单例验…...

别再只插USB了!树莓派Pico的VSYS、3V3、VBUS引脚详解与实战供电方案

树莓派Pico电源系统深度解析&#xff1a;从锂电池到太阳能供电的实战指南 树莓派Pico作为一款性价比极高的微控制器开发板&#xff0c;其电源系统的灵活性和多样性常常被开发者低估。大多数用户习惯性地通过USB接口供电&#xff0c;却忽略了Pico内置的电源管理架构其实支持从2…...

STC15F2K60S2项目实战:用结构体封装IO配置就像STM32一样优雅

STC15F2K60S2项目实战&#xff1a;用结构体封装IO配置就像STM32一样优雅 在嵌入式开发领域&#xff0c;代码的可维护性和可读性往往决定了项目的长期成败。当我们从STM32这样的ARM架构MCU转向STC15这类8051内核单片机时&#xff0c;常常会怀念STM32标准库那种清晰优雅的编程风格…...

别再搞混了!LP/mm、Cycles/pixel这些分辨率单位到底怎么用?附换算表

分辨率单位全解析&#xff1a;从LP/mm到Cycles/pixel的实战指南 每次看到镜头参数表里那些LP/mm、Cycles/pixel之类的术语&#xff0c;是不是感觉像在读天书&#xff1f;上周我帮朋友选工业相机时&#xff0c;发现不同厂商用不同单位标注分辨率&#xff0c;结果差点买错设备。今…...

YimMenu:GTA V 终极安全增强菜单的完整指南

YimMenu&#xff1a;GTA V 终极安全增强菜单的完整指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu Y…...