atk

简说设计模式——备忘录模式

ε祈祈猫儿з 提交于 2019-12-01 07:45:51
一.备忘录模式 备忘录这个词汇大家应该都不陌生,我就经常使用备忘录来记录一些比较重要的或者容易遗忘的信息,与之相关的最常见的应用有许多,比如游戏存档,我们玩游戏的时候肯定有存档功能,旨在下一次登录游戏时可以从上次退出的地方继续游戏,或者对复活点进行存档,如果挂掉了则可以读取复活点的存档信息重新开始。与之相类似的就是数据库的事务回滚,或者重做日志redo log等。 备忘录模式(Memento) ,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存着这个状态。这样以后就可将该对象恢复到原先保存的状态。UML结构图如下:   其中,Originator是发起人,负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态;Memento是备忘录,负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento;Caretaker是管理者,负责保存好备忘录的Memento,不能对备忘录的内容进行操作或检查。  1. 发起人角色   记录当前时刻的内部状态,并负责创建和恢复备忘录数据,允许访问返回到先前状态所需的所有数据。 1 public class Originator { 2 3 private String state; 4 5 public String getState() { 6

第十九天作业

自闭症网瘾萝莉.ら 提交于 2019-11-30 23:15:45
今日作业 1.什么是对象?什么是类? 对象是一系列特征和技能的结合体,类是一系列相同特征和技能的对象的结合体 2.绑定方法的有什么特点 绑定方法是定义在类内部的函数,这个函数自带一个self参数,这个self参数是用来接收对象的,当类直接调用这个函数时,它就只是一个普通函数,需要给这个self传值,当对象来调用这个函数时,这个函数就是绑定方法,这个self会自动接收到对象(哪个对象调用,接收的就是哪个对象),也就不需要给self传值 3.基于面向对象设计一个对战游戏 class hero: def __init__(self,name,atk,life,defence ): self.name = name self.atk = atk self.life = life self.defence = defence def attack(self,enemy): damage = self.atk - enemy.defence enemy.life -= damage print(f'{self.name}对{enemy.name}造成了{damage}点伤害') # class hero2: # def __init__(self,atk = 100,life = 2200,defence = 100): # self.atk = atk # self.life = life

大领主打狗

情到浓时终转凉″ 提交于 2019-11-30 22:18:13
''' 对象人: 特征: name='paladin' aggr=8000-10000 health_point=343846 mastered='37%' 技能: def judge():divine def templars_verdict():divine def crusader_strike():physic def divine_storm():divine 对象狗 特征 name='prince' aggr=5000-6000 health_point=365154 mastered='57%' 技能 def kill_command(): def bite(): def craw(): ''' import random import time judged=[] class human: def __init__(self, name, aggr, health, mast): self.name = name self.aggr = aggr self.hp = health self.mastered = mast def judge(self,dog): if dog.hp <= 0: return True if self.hp>0: atk=self.aggr*(2+self.mastered) dog.hp-=atk print(f''' [{self

Arduino+ESP8266透传方式实现POST访问

℡╲_俬逩灬. 提交于 2019-11-30 14:25:11
摘要:对ESP8266以透传方式访问网络的过程中遇到的大大小小的坑,以及解决办法进行了记录和说明,并以Arduino作为主控板进行POST方式访问OneNET平台。 硬件: Alientek的ATK-ESP8266模块,带UART-WiFi,官方固件带AT指令,波特率默认115200(8位数据位,1位停止位,无校验) Arduino UNO PC机 USB转TTL模块 杜邦线若干 软件: 串口软件:xcomV2.0或USR-TCP232-Test,前者能保存多条AT命令但无网络功能,后者只能发送单条AT命令但有网络功能 ArduinoIDEv1.8.0 一、使用USB转TTL模块连接ATK-ESP8266和PC机进行调试(非必须) 这个步骤可以使用串口工具下发AT指令对ESP8266进行手工配置,或进行调试以验证模块功能是否正常。 ATK-ESP8266模块是这样的,有6个引脚,使用其中的4个:VCC(3.3V~5V),GND,TXD,RXD 连接方式如下表,注意:其他厂家的ESP8266模块可能接USB-TTL的3.3V才能正常,否则会出现乱码或其他异常错误,这个供电问题值得注意。 USB-TTL ESP8266 5V VCC GND GND RX TX TX RX 然后将USB-TTL插入PC机USB,部分PC机(主要指win10以下)需要安装CH340驱动才能识别该串口工具。

[NOI2018]屠龙勇士

丶灬走出姿态 提交于 2019-11-29 22:15:46
[NOI2018]屠龙勇士 显然每一只龙被哪只剑砍是确定的,我们可以通过 \(multiset\) 做出来.不妨令 \(atk_i\) 表示攻击第 \(i\) 只龙的剑的攻击值. 那么接下来我们将题目意思简化,相当于是求: \[ \begin{cases} atk_1*x\equiv a_1(mod\ p_1)\\ atk_2*x\equiv a_2(mod\ p_2)\\ ...\\ atk_n*x\equiv a_n(mod\ p_n) \end{cases} \] emmm,这不难让我们想到 \(excrt\) 对吧. 考虑一种比较奇妙的做法: 现在我们知道了 \(excrt\) 中的 \(ans,M\) , \(ans\) 表示答案, \(M\) 表示 \(lcm\) ,那么是不是有我们要求 \(x\) : \[ atk_i*(ans+M*x)\equiv a_i(mod\ p_i) \] 这个时候把式子划开就是 \[ atk_i*M*x\equiv a_i-atk_i*ans(mod\ p_i) \] 所以此时直接 \(exgcd\) 求即可. 然后注意 \(exgcd\) 无解就是对应题目无解. 但是这个时候我们只考虑了 \(a_i \le p_i\) 的情况,不难发现剩下的都有 \(\forall i,p_i=1\) 直接求 \(\max_{i=1}^n\lceil{

Python学习日记(二十二) 初识面向对象

笑着哭i 提交于 2019-11-29 06:40:26
引子 假设我们要开发一个关于飞机大战的游戏,那么游戏的里面就会有两个角色,分别是属于玩家操控的战机和敌方的战机,并且两个战机都有不同的技能或攻击方式,现在我们用自己目前所学的去写出下面的这些代码: def Fighter(name,atk,hp,speed): fighter = { 'name' : name, #战机的名字 'atk' : atk, #战机的攻击力 'hp' : hp, #战机的血量 'speed' : speed #战机的速度 } return fighter def EnemyFighter(name,atk,hp,speed,kind): enemyfighter = { 'name' : name, #敌机的名字 'atk' : atk, #敌机的攻击力 'hp' : hp, #敌机的血量 'speed' : speed, #敌机的速度 'kind' : kind #敌机的种类 } return enemyfighter 我们在写好了这些属性之后就可以生成敌方的战机和玩家的战机: playerFighter1 = Fighter('Player1',200,1500,300) playerFighter2 = Fighter('Player2',150,2000,280) Boss1 = EnemyFighter('lazerBoss',1000

P4774 [NOI2018]屠龙勇士

流过昼夜 提交于 2019-11-29 04:26:21
昨天晚上快走时看了这题:不是exgcd+excrt吗? 旁边张大佬默默看了我一眼(觉得我会死) 然后于是我今天中午才调出来Orz 思路:exgcd+excrt 提交:5次 错因:龟速乘传进去了负数,并且用的int;之前写过的excrt的板子有问题 题解: 先要特判一种情况:若 \(p[i]=1\) ,答案显然就是 \(\max(\lceil\frac{a[i]}{stk[i]}\rceil)\) ,只需要把龙打成负血他就死了。 先是这样的一些方程:设 \(atk[i]\) 表示对于第 \(i\) 只龙使用攻击力为 \(atk[i]\) 的剑 \[atk[i]*x_i \equiv a[i] \mod p[i] \] 好的这样我们可以 exgcd 解出 \(X_i=x_i*\frac{a[i]}{gcd(atk[i],p[i])}\) 我们知道,对于上面的方程来说, \(X_i+k*\frac{p[i]}{gcd(atk[i],p[i])},k\in Z\) 设 \(b[i]=\frac{p[i]}{gcd(atk[i],p[i])}\) ,所以对于最终答案 \(ans\) 有: \[ans\equiv X_i \mod b[i]\] 这个 \(ans\) 是可以用 excrt 合并的。 代码: #include<bits/stdc++.h> #define ll long long

Python之浅谈面向对象

荒凉一梦 提交于 2019-11-28 16:02:58
目录 面向对象和面向过程 类与对象 产生对象 一切皆对象 人狗大战小游戏 面向对象和面向过程 面向过程 概念:将需要做的事流程化,并得到结果 优点:复杂问题流程化,进而简单化 缺点:可扩展性差 面向对象 概念:通过定义一个个对象,让对象去做需要做的事,最终得到结果 优点:可扩展性高 缺点:编写复杂 类与对象 定义类 在现实世界中:先有对象,再有类 世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,如人类、动物类、植物类等概念 也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在 在程序中,务必保证:先定义(类),后使用(产生对象) 这与函数的使用是类似的,先定义函数,后调用函数,类也是一样的,在程序中需要先定义类,后调用类 不一样的是,调用函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象 class关键字 类名: pass 产生对象 对象=类名() 类 获取类的属性和方法 类.__dict__ 类来调用属性和方法 通过dict来取(复杂,不用) 类名.属性/函数 对象 1.对象获取属性和方法 对象.__dict__ 2.对象来调用属性和方法 对象.属性/方法 产生对象 属性查找顺序 -先从对象自身找------>类中找----->报错 对象赋属性 1.方式一: stu1=Student()