我对DX11的理解和简化框架与快速游戏制作(续7)

前面已经具备设计一个2D游戏和UI元素的所有的基础设备。

下面将丰富它的内容。hold on.首先要有一个管理大量资源的类,以后可以利用它来分拣、增加、删除、计数其中的元素。C++提供了一些基础的类型如vector之类的而且在说明中称这是由很聪明的人设计的算法,不需要改进,聪明人设计那么愚蠢的命名方式和用法!我fuck 死它!C#中有个最常用的类List虽然和c++比起来剧慢但勉强可以应付以上的要求,我现在就来设计个简单的能满足目前需要的c++->List:新建个"List.h"的文件:

template<typename TYPE>
struct List
{
 List(){ Count =0; obj=0;} 
 TYPE &operator [] (const int index) const { return obj[index]; }//提取元素if (index>Count)那就找块豆腐撞死吧
 int Add(const TYPE object)//添加
 {
  if(Count>0)
  { 
   TYPE* newobj=new TYPE[Count+1];//由于大小未知所以不能memcpy
            for(int i=0;i<Count;i++)   newobj[i]=obj[i];
   newobj[Count]=object;
   obj=newobj;
  }
  else{ obj=new TYPE[1];obj[0]=object; }
  return Count++;
 }

 void Remove(const int index)//删除
 {  
  obj[index]=obj[Count-1];
   Count--; 
 }
 void Clear(){ delete obj; Count = 0;}
 int Count;//计数
 TYPE* obj;
};

我的list所有的命名方式和用法与C#的LIst完全相同。

后面游戏中会大量使用它包括在每祯之间不停的更新列表。

C++的优势在与通过使用指针来直接访问内存地址来达到高性能而危险性也极高,可以用来烧毁硬件。很多人沉迷与设计个自己以为很聪明的数学循环而放弃内存地址的直接利用这才是弱智的表现,巧妙利用memset memcpy 可以完成各种列表的复制转移同时还可以给分类复杂的变量赋值,但也有局限就是你必须确定转移对象的字节大小。我的List 暂时回避了这个问题。

 以下是UI的示例

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值