项目-坦克大战学习-子弹的移动与销毁

子弹的移动可以参照人机的移动方式,在创建出来的时候就将yidong设置为true然后给一个速度就行了,子弹的销毁代码可以借用坦克的超出检测代码,将检测到超出后执行的程序修改成销毁程序就行

对于子弹的销毁我们可以在列表中让那个超出边界的对象清除掉,下一次绘制地图就没有他了

但是我们不可以直接在检测超出的位置设置子弹的销毁,因为检测超出的时候列表还在运行,而销毁的方法是将子弹在列表中抹除,在列表运行时修改列表会出bug,所以我们换一种方式,给超出界限的子弹打上标记,然后在列表实例化完后在运行一个方法将打上标记的子弹销毁,这样就不会在列表运行期间对列表进行更改了

所以我们需要给子弹添加一个bool用来检测子弹是否超出

public bool xiaohui{ get; set; } //是否需要销毁默认否

如果子弹超出就在检测超出方法中修改bool值

if (Fangxiang == fangxiang.Up)//检测子弹目前朝向

{

if (y - speed < 0)//如果在前进一帧会大于地图边界

{

xiaohui=true; return;//标记为超出

}

}

然后在对象位置类遍历列表将检测出来超出的对象放入新的列表

foreach(zidan zid in zidanlist)//遍历zidan列表查找需要销毁的对象

{

if(zid.xiaohui==true)//符合条件

{

zd.Add(zid);//放入销毁检测列表

}

}

在运行销毁检测列表时将检测到的对象在子弹列表中销毁

foreach (zidan zidan in zd)

{

zidanlist.Remove(zidan);//将列表中所有对象销毁

}

这样就不会资源冲突了

相关推荐
非凡ghost4 分钟前
ArchiveMaster(文件归档大师)
windows·学习·软件需求
wdfk_prog11 分钟前
[Linux]学习笔记系列 -- [drivers][clk]clk-bulk
linux·笔记·学习
charlie11451419116 分钟前
机器学习概论:一门教计算机如何“不确定地正确”的学问
人工智能·笔记·机器学习·工程实践
四谎真好看29 分钟前
JavaWeb学习笔记(Day10)
笔记·学习·学习笔记·javaweb
该学习了咕咕30 分钟前
单纯实验记录(寿命实验)
学习·学习方法·秀丽线虫·寿命实验
ooo-p35 分钟前
FPGA学习篇——Verilog学习之“有限状态机FSM”
学习·fpga开发
A_nanda42 分钟前
vue快速学习框架
前端·javascript·vue.js·学习·c#
WTCLLB1 小时前
取消文件隐藏属性,找到winre.wim和boot.sdi
windows·学习
其美杰布-富贵-李1 小时前
门控模型与Mixture of Experts (MOE) 学习笔记
笔记·学习·moe·门控神经网络
求真求知的糖葫芦1 小时前
RF and Microwave Coupled-Line Circuits射频微波耦合线电路4.3 均匀非对称耦合线学习笔记(上)(自用)
笔记·学习·射频工程