项目-坦克大战笔记-子弹的生成

news/2024/10/4 12:15:07 标签: 笔记, 学习, c#

子弹的生成就像人机的生成一样,只不过没那么多种类的图片对象,而且不用设置初始方向,但是需要对子弹进行分类成wanjia和renji,在创建子弹的时候将方向传参就行了

首先在zidan类写一个枚举类型定义子弹的标签

enum zidanen
{
    wanjia, renji

}

然后在zidan类写一个构造函数

 public zidan(int x, int y, int speed, zidanen zid, fangxiang fx)//构造函数
 {
     this.x = x;
     this.y = y;
     this.speed = speed;//速度
     
     BitmapUp = Resources.BulletUp;//设置对应方向图片
     BitmapDown = Resources.BulletDown;
     BitmapLeft = Resources.BulletLeft;
     BitmapRight = Resources.BulletDown;
     Fangxiang = fx;
     this.x -= kuan / 2;//将中心点设置为坦克的生成点好确定位置
     this.y -= gao  / 2;

 }

在物体位置设置类创建方法实例化以及归类子弹

 public static void zidan(int x,int y,zidanen zid,fangxiang fx)//控制子弹的生成
 {
     zidan zd=new zidan(x,y,5,zid,fx);//实例化子弹
     zidanlist.Add(zd);//将实例化的子弹放入列表
 }

创建一个子弹列表在调用生成子弹函数的时候就将生成的子弹放入列表

将子弹列表遍历后绘制

foreach(zidan zid in zidanlist)
{
    zid.update();
}

在wanjia类型中设置按下Q键调用生成子弹方法

在按下事件方法中设置

case Keys.Q://发射子弹
    zidanshengcheng();
    break; 

我们发现创建出来的子弹位置有些歪,因为创建出来的时候子弹的中心点我们是在坦克创建是的point点位,要想子弹刚好在炮口位置上,我们需要创建一个临时的x和y根据方向的不同将修改后的位置放入

private void zidanshengcheng()//子弹生成
{
    int x=this.x;//设置临时point
    int y=this.y;
    switch(Fangxiang)//检测当前坦克方向
    {
        case fangxiang.Up:
            x += kuan / 2;//修改子弹生成位置
            break;
            case fangxiang.Down:
            x += kuan / 2;
            y += gao;
            break;
            case fangxiang.Left:
            y += gao / 2;
            break;
            case fangxiang.Right:
            y += gao / 2;
            x += kuan;
            break;
    }
    duixiangweizhi.zidan(x, y, zidanen.wanjia, Fangxiang);//传入修改后的point实例化子弹
}

这样子再次运行程序发射子弹就会发现位置刚刚好了

下节再说怎么让子弹动起来以及子弹超出边界的销毁


http://www.niftyadmin.cn/n/5689921.html

相关文章

React Fiber 详解

why Fiber React Fiber的引入主要基于以下几个方面的考虑: 性能提升: 传统React的更新过程是同步的,一旦开始更新就会阻塞浏览器的主线程,直到整个组件树更新完成。这在处理大型组件树或高频用户交互时,可能会导致界…

SpringCloud入门(十一)路由过滤器和路由断言工厂

一、路由过滤器 路由过滤器( GatewayFilter )是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理: 如图:网关路由过滤器: 路由过滤器的作用是: 1.对路由的请求或响应做加…

【Windows】 C++实现 Socket 通讯

【Windows】 C实现 Socket 通讯 一&#xff1a;头文件与套接字实例 &#xff08;1&#xff09;Windows 系统下所需头文件 &#xff1a; #include<WinSock2.h>  &#xff08;2&#xff09;我们使用 SOCKET 来作为套接字的实例&#xff1a;通过查看源码得知其是一个无符号…

1.2.1 计算机网络分层结构(上)

体系结构可分层使得不同的层次承担不同的功能。 知识点&#xff1a; 1.不同类型的节点&#xff0c;实现的功能层次可能不一样。 2.分层结构的设计并不唯一&#xff0c;可以根据实际需求增加或减少层次。 3.一个功能可以放在不同的层次反复出现。 根据分层结构不同可以分为&…

华三资源

华三华三官方网站华三公司官网新华三 - 融绘数字未来&#xff0c;共享美好生活华三华三文档中心华三文档资源文档中心-新华三集团-H3C华三华三 ICT百科华三 ICT知识百科H3C ICT知识百科-新华三集团-H3C华三华三文档高级查找高级文档搜索新华三 - 融绘数字未来&#xff0c;共享美…

Qt 5开发步骤及实例

目录 界面设计编写相应的计算圆面积代码 界面设计 创建桌面应用程序 得到这样一个树形视图 双击界面文件中的dialog.ui 直接双击控件label改名&#xff0c;然后修改最后一个label的属性 修改这个标签的样式&#xff0c;把frameshape改成Panel&#xff0c;frameshadow改…

FBX福币历史重演,ETH可能会在第四季度出现熊市

知名加密货币分析师Benjamin Cowen警告称&#xff0c;以太坊(ETH)可能在今年最后三个月突然转为看跌。FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 考恩告诉他在社交媒体平台十、上的861500名粉丝表示&#xff0c;ETH可…

Elasticsearch——数据聚合、数据同步与集群搭建

目录 1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket 聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric 聚合语法1.2.5.小结 1.3.RestAPI 实现聚合1.3.1.API 语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.…