自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 项目实训-克隆门

子弹克隆门

2022-06-02 21:25:01 119 1

原创 项目实训-杨桃

本次完成植物 杨桃的制作该植物和射手类似,不同点是一次能射出五发子弹,而且方向各不相同代码杨桃using System.Collections;using System.Collections.Generic;using UnityEngine;public class Star : PlantBase{ public override float MaxHp { get { return 580;

2022-04-28 00:15:00 118

原创 项目实训-伽雷斯

本次完成伽雷斯的制作,强度较高,属于半个BOSS型代码using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;//加雷斯 高血量高攻击,且最多可以召唤两次僵尸,每次召唤在上下左右各召唤一只僵尸,属于小BOSS型僵尸public class JLS : ZombieBase{ protected override int MaxHP =&

2022-04-26 12:30:00 129

原创 项目实训-幽灵僵尸

幽灵僵尸,该僵尸可以无视地形,但是没有攻击代码using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;//该僵尸可以无视地形阻挡public class Ghost : ZombieBase{ protected override int MaxHP => 270; protected override float

2022-04-26 00:00:00 169

原创 项目实训-祭祀僵尸

本次完成祭祀僵尸的制作代码该僵尸被攻击的次数达到一定数值时,会自杀献祭自己,周围僵尸的速度一定时间获得提高,克制高频低伤害植物,被低频高伤害克制using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class SacrificeZombie : ZombieBase{ //该僵尸被攻击的次数达到一定数值时,会自杀献祭自己

2022-04-25 00:00:00 83

原创 项目实训-寒冰射手

寒冰射手攻击逻辑和普通射手类似,主要多了一个减速功能代码寒冰射手using System.Collections;using System.Collections.Generic;using UnityEngine;//该植物可以减速除了冰车僵尸以外的僵尸,速度变为原来一半,但是减速效果会被火焰豌豆和火草抵消.//可以克制高移速僵尸,但是与火焰系植物互斥public class SnowPea : PlantBase{ public override float MaxHp

2022-04-24 17:00:00 193

原创 项目实训-盒子僵尸

本次完成盒子僵尸的制作,其特点是该僵尸生命值低于某值的瞬间,有一定几率爆炸,将周围植物和自己炸死.代码盒子僵尸using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class BoxZombie : ZombieBase{ //该僵尸生命值低于某值的瞬间,有一定几率爆炸,将周围植物和自己炸死. protected

2022-04-24 00:00:00 243

原创 项目实训-不死僵尸

本次加入了不死僵尸,只有被樱桃炸弹、火爆辣椒等一次性植物才能杀死,不然尸体会在短时间后复活using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class UnDieZombie : ZombieBase{ //该僵尸死亡后尸体在短时间后复活,只有食人花或者樱桃炸弹火爆辣椒才能彻底杀死该僵尸 protected ov

2022-04-23 23:30:00 218

原创 项目实训-火爆辣椒

火爆辣椒的逻辑和樱桃炸弹类似,其不同的是攻击范围是一整行,而且可以破坏雪橇车僵尸产生的冰代码火爆辣椒using System.Collections;using System.Collections.Generic;using UnityEngine;public class Pepper : PlantBase{ public override float MaxHp =>300; protected override int attackValue => 1

2022-04-23 00:15:00 114

原创 项目实训-小鬼僵尸

本次完成了小鬼僵尸,逻辑和普通僵尸比较像代码using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class SmallZombie : ZombieBase{ protected override int MaxHP => 200; protected override float speed =>

2022-04-22 22:30:00 67

原创 项目实训-读报僵尸

本次加入了读报僵尸,首先导入读报僵尸素材,共有9种动画创建预制体,并为每个预制体创建动画和脚本预制体包括读报僵尸和读报僵尸的头、读报僵尸的身体三部分,分别加上动画和脚本。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class PaperZombie : ZombieBase{ protected overrid

2022-04-22 00:15:00 214

原创 项目实训2022-4-21(雪橇车僵尸)

本次完成雪橇车僵尸导入素材,创建三个预制体分别为雪橇车僵尸、雪橇车爆炸,雪橇车僵尸的冰,然后创建动画代码:雪橇车僵尸using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class IceZombie : ZombieBase{ protected override int MaxHP => 800; p

2022-04-21 00:30:00 103

原创 项目实训2022-4-21(火焰草)

本次完成原创植物火焰草(周围范围僵尸附加高频的低伤害)植物代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class FireGrass : PlantBase{ public override float MaxHp { get { return 100; } }

2022-04-21 00:15:00 70

原创 项目实训2022-4-20食人花

食人花的创建食人花代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class Chomper : PlantBase{ public override float MaxHp { get { return 300; } } protected override fl

2022-04-20 00:15:00 208

原创 项目实训2022-4-19

栅栏僵尸创建文件夹并导入素材复制已有的预制体,将复制的预制体命名为ScreenDoorZombie给新的预制体加入动画

2022-04-19 00:15:00 69

原创 项目实训2022-4-17

僵尸基类using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public enum ZombieState{ Idel, Walk, Attack, Dead}public abstract class ZombieBase : MonoBehaviour{ // 我的状态 protecte

2022-04-17 00:15:00 126

原创 项目实训2022-4-15

加入新版植物,火焰豌豆,伤害为基础植物两倍并带有溅射伤害素材寻找贴吧找到的火焰豌豆素材和火焰弹素材,不过是gif图,裁剪到合适比例,通过工具转换成帧图片,并且将击中僵尸的音频素材导入到项目资源中。设置预制体创建预制体火焰弹和豌豆,加入动画代码using System.Collections;using System.Collections.Generic;using UnityEngine;public class BlazeBullet : MonoBehaviour{ pr

2022-04-15 00:15:00 340

原创 项目实训2022-4-13

小喷菇和小喷菇的子弹创建子弹using System.Collections;using System.Collections.Generic;using UnityEngine;public class ShroomBullet : MonoBehaviour{ private Rigidbody2D rigidbody; private SpriteRenderer spriteRenderer; // 攻击力 private int attackValue

2022-04-13 08:30:00 99

原创 项目实训2022-4-11

编写植物,双发豌豆和机枪豌豆双发using System.Collections;using System.Collections.Generic;using UnityEngine;public class Repeater : PlantBase{ public override float MaxHp { get { return 300; } } protected overri

2022-04-11 20:16:12 117

原创 项目实训2022-4-7

本次将要加入黑夜场景和阳光菇导入黑夜背景和阳光菇设置卡片和遮罩的名称和图片为阳光菇在PlantManager加入代码public enum PlantType{ // 太阳花 SunFlower, // 豌豆射手 Peashooter, //阳光菇 SunShroom} public GameObject GetPlantByType(PlantType type) { switch (type)

2022-04-07 10:18:25 2681

原创 项目实训2022-4-4

铲子的开发导入素材脚本using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class Shovel : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler{

2022-04-04 21:24:32 76

原创 项目实训2022-3-23

僵尸生成和排序僵尸的基本逻辑前面已经实现,本次要实现僵尸的生成排序等问题,防止出现僵尸重叠模型的闪烁问题创建预制体 [Header("僵尸")] [Tooltip("僵尸头")] public GameObject Zombie_Head; [Tooltip("普通僵尸")] public GameObject Zombie; public void Init(int lineNum,int orderNum) { InitAnima

2022-03-23 12:45:00 102

原创 项目实训2022-3-20

实现僵尸被攻击的死亡效果前面只是实现了僵尸的移动和豌豆射手的攻击,但是并没有将讲两者联系在一起,本次将实现射手对僵尸的攻击效果实现大体效果Zombie类的修改 private int hp = 270; public int Hp { get => hp; set { hp = value; if (hp <= 0) { State =

2022-03-20 22:45:37 365

原创 项目实训2022-3-17

添加僵尸管理器,获取僵尸在Zombie类添加代码 void Start() { GetGirdByVerticalNum(0); animator = GetComponentInChildren<Animator>(); ZombieManager.Instance.AddZombie(this); }ZombieManager类using System.Collections;using System

2022-03-17 12:30:00 95

原创 项目实训2022-3-15

子弹射出完成僵尸的攻击逻辑后,本次目的是完成豌豆射手子弹的的效果,以便后续实现僵尸的受击效果加入碰撞和刚体效果给子弹选择collider 2D和rigidbody 2D,同理僵尸也加入碰撞。实现子弹的旋转和移动public class Bullet : MonoBehaviour{ private Rigidbody2D rigidbody; // Start is called before the first frame update void Start()

2022-03-15 13:40:52 284

原创 项目实训2022-3-13

僵尸攻击完善上次只是简单实现了攻击植物,这次将会完善僵尸攻击时的植物闪烁效果以及僵尸攻击逻辑优化和完善。闪烁效果//被攻击时调用变色函数 public void Hurt(float hurtValue) { hp -= hurtValue; StartCoroutine(ColorEF(0.2f,new Color(0.5f,0.5f,0.5f),0.05f,null)); if(hp <=0) {

2022-03-13 09:00:00 78

原创 项目实训2022-3-10

僵尸攻击植物此次将在上次僵尸行走的基础上加入攻击机制加入攻击动画攻击动画代码实现 private bool isAttackState; private void Move() { if (currGrid == null) return; if (isAttackState) return; currGrid = GridManager.Instance.GetGridByWorldPos(transfor

2022-03-07 23:23:30 65

原创 项目实训2022-3-7

僵尸的行走此次任务是完成僵尸的行走1:导入僵尸素材并形成动画在网上寻找僵尸行走的素材,加入unity的assets中选中所有图片,拖入Hierarchy中形成动画2:调整坐标,使得僵尸和植物坐标重合时出现如图身位,即僵尸啃食植物时,使僵尸的坐标等于植物的坐标,便于后续实现啃食植物功能3:僵尸移动脚本using System.Collections;using System.Collections.Generic;using UnityEngine;public class zom

2022-03-07 21:05:38 3117 1

原创 Zab协议(12)-数据恢复后的源码分析

2021SC@SDUSC目录回顾源码分析总结回顾上次分析到了初始化一个leader对象,表示leader 节点的请求处理服务。源码分析开启线程用于接收 follower 的连接请求如果超过半数的节点 follower 发送了ack;此时说明过半的 follower 节点已经完成数据同步使用startZkServer()方法开启zookeeper void lead() throws IOException, InterruptedException { self.end

2021-12-22 22:19:24 1477

原创 Zab协议(11)-数据恢复阶段总结

2021SC@SDUSC目录什么是数据恢复什么时候会进入数据恢复模式数据恢复需要解决的问题流程什么是数据恢复当Leader出现故障或者重启时,所有节点都会使用崩溃恢复协议来使彼此达到一个一致的状态。什么时候会进入数据恢复模式1、当服务器刚刚启动时2、当leader出现网络中断,崩溃或者重启的情况3、当集群中已经不存在过半的服务器与Leader服务器保持正常通信。数据恢复需要解决的问题确保已经被leader提交的proposal必须最终被所有的follower服务器提交。确保没有被处理p

2021-12-18 18:51:14 265

原创 Zab协议(10)-选举算法阶段总结

2021SC@SDUSC目录选举同步广播选举最新的版本里的选举算法只有一个 ,即FastLeaderElection方法。选举:通过特定的选举算法选出leader,第一步:当系统刚启动时,3 个服务器当前投票均为第一轮投票。此时每个服务器都推选自己,并将选票信息广播出去。第二步:根据判断规则,先比较数据zxid,数据zxid大者胜出;其次再判断id, 大者胜出;然后再将自身最新的选举结果发送出去。第三步:选出的主节点计算得票数,如果超过集群中节点半数,则该节点被选举为leader同步Le

2021-12-12 22:03:06 1411

原创 Zab协议(9)-数据恢复源码分析(4)

2021SC@SDUSC目录回顾源码分析回顾上一篇分析到了 queuedPackets.add(new QuorumPacket(Leader.UPTODATE, -1, null, null));继续分析源码分析 while (true) { qp = new QuorumPacket(); ia.readRecord(qp, "packet"); long traceMa

2021-12-05 23:34:19 1784

原创 Zab协议(8)-数据恢复源码分析(3)

2021SC@SDUSC目录回顾源码分析回顾本次继续syncWithLeader的分析源码分析 ack.setZxid(ZxidUtils.makeZxid(newEpoch, 0)); writePacket(ack, true); sock.setSoTimeout(self.tickTime * self.syncLimit); zk.startup();follower发送给leader 一个ack

2021-11-28 22:00:17 1311

原创 Zab协议(7)-数据恢复源码解析(2)

2021SC@SDUSC目录回顾源码分析回顾前面分析完了zk的选举过程,但这些都是zk正常情况下运行的过程,这次分析一下zk出现故障时的数据恢复源码分析首先定位到Learner类,因为syncWithLeader方法的代码实在是太长,一步步分析。QuorumPacket ack = new QuorumPacket(Leader.ACK, 0, null, null); QuorumPacket qp = new QuorumPacket(); long newE

2021-11-21 22:02:50 902

原创 汽车停车问题

题目解法L = [1,0,0,1,1,1,0,0,1,1,1]def Road_AfterTstep(L,n): for u in range(n): i=0 flag=0 #定义一个标志,如果为0,表示最后一个位置的汽车没有开到第一个位置,如果为1,则开到了, if L[-1]==1 and L[0]==0: #如果最后一个位置是1,而且第一个位置是0,则汽车

2021-11-16 23:13:23 88

原创 输入n个同学的姓名和年龄,将年龄从大到小排序,当年龄相同时按照姓名字典序排序

题目输入n个同学的姓名和年龄,将年龄从大到小排序,当年龄相同时按照姓名字典序排序输入第一行一个整数n第二行到n+1行,每行一个同学的信息。姓名和年龄用空格隔开输出n行,排序结果样例输入4yrgA 21yrgB 21zcSmart 22zcHandsome 22样例输出zcHandsome 22zcSmart 22yrgA 21yrgB 21解法length = int(input())dic = {}i = 0while i < length:

2021-11-16 23:08:15 1572

原创 Zab协议(6)-数据恢复源码分析(1)

2021SC@SDUSC目录回顾源码分析回顾前面分析完了zk的选举过程,但这些都是zk正常情况下运行的过程,这次分析一下zk出现故障时的数据恢复源码分析loadDataBase方法是用来从本地文件中读取日志文件来恢复数据 private void loadDataBase() { File updating = new File(getTxnFactory().getSnapDir(), UPDATING_EP

2021-11-14 21:48:06 1900

原创 Zab协议(5)-选举算法选举阶段源码解析(4)

2021SC@SDUSC目录回顾源码分析回顾上一环节讲了一下选举过程中最核心代码的LOOKING状态,这篇文章分析一下选举过程中的网络通信。源码分析 case OBSERVING: try { LOG.info("OBSERVING"); setObserver(makeObserver(logFactory));

2021-11-07 22:09:46 1254

原创 Zab协议(4)-选举算法选举阶段源码解析(3)

2021SC@SDUSC目录背景介绍回顾源码分析背景介绍该部分是选举过程最核心的代码。正式选举过程中需要知道以下两个个名词。(2)zxid:服务器在运行时产生的数据id,zxid越大,表示数据越新。(3)epoch:选举的轮数,即逻辑时钟。随着选举的轮数增加回顾 while (running) { switch (getPeerState()) { case LOOKING:

2021-10-31 22:31:16 192

原创 Zab协议(3)-选举算法选举阶段源码解析(2)

2021SC@SDUSC目录回顾QuorumPeer介绍源码分析回顾上一节分析了投票阶段的数据传输和投票的一部分过程,其中经常用到QuorumPeer类,本节分析一下QuorumPeer代码QuorumPeer介绍该类zookeeper的Leader选举的启动类,负责创建选举算法,zk数据恢复,启动leader选举。源码分析 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; }首

2021-10-24 21:34:42 99

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除