游戏程序设计 - 威客中国.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 游戏程序设计 - 威客中国

游戏程序设计 FLY TO SKY本来是个玩家操纵自己的飞机在空中躲避敌人以及子弹的一个动作类游戏,只是游戏中玩家过于被动,因此有了给飞机加上武器系统的设想。 为了实现这个功能,主要有几个代码增加: 子弹类的设计代码。 子弹容器的代码(游戏里本来是用vector来管理精灵,因此为了方便这里也用vector。) 便利子弹碰撞检测的代码 为了实现这些功能,首先设计子弹的类。对于类中的各种成员进行分析: class Bullet { public: Bullet(void); Bullet(HINSTANCE hInst, int mode, int vx, int vy,int n, bool protect = false); //构造函数, void CreateBullet(HINSTANCE hInst, int mode, int ex, int ey, int vx, int vy); void Explode(HINSTANCE hInst); ~Bullet(void); void Shoot(HDC hdc); int bulletx; //子弹的X坐标 int bullety; //子弹的Y 坐标 BITMAP bmp; int mode;//子弹的方向 bool hero; bool protect; bool jz; bool live; //子弹是否存在 int power; int vx;//在X轴上的速度分量 int vy;//在Y轴上的速度分量 unsigned char *px; private: int tempv; int temp; int temp10; int ftp; //动画中的帧数 HBITMAP bitmap; }; Bullet::Bullet(HINSTANCE hInst,int mode,int vx, int vy,int n, bool protect);这个函数主要是取得HINSTANCE,从中取出图像,根据mode(方向、类型信息) 初始化子弹的坐标,速度,杀伤力;具体可以参考代码; void Bullet::Explode(HINSTANCE hInst) { DeleteObject(bitmap);//删除原来的子弹图像 bitmap = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BULLET_BZ),IMAGE_BITMAP,0,0,LR_DEFAULTSIZE | LR_DEFAULTCOLOR);//图像变更为新的爆炸图像 jz = true; ///状态机中进入爆炸状态 ftp = 0;//爆炸第一帧 GetObject(bitmap,sizeof(bmp),bmp);//bmp包含了图片的 大小,色深等信息 } void Bullet::Shoot(HDC hdc) { HDC mdc = CreateCompatibleDC(hdc); SelectObject(mdc,bitmap); /////////////////////////如果没有进入爆炸状态那么子弹还在飞行,对于他的位子利用速度进行计算。TransparentBlt是 贴图函数。 if(!jz) { if(this-hero) { switch(mode) { case 0: TransparentBlt(hdc,bulletx,bullety,16,16,mdc,0,0,16,16,RGB(255,0,255)); bulletx += vx; bullety += vy; break; case 1: TransparentBlt(hdc,bulletx,bullety,16,16,mdc,16,0,16,16,RGB(255,0,255)); bulletx += vx; bullety += vy; break; case 2: TransparentBlt(hdc,bulletx,bullety,16,16,mdc,32,0,16,16,RGB(255,0,255)); bulletx += vx; bullety += vy; break; case 3: TransparentBlt(hdc,bulletx,bullety,10,27,mdc,0,0,10,27,RGB(255,0,255)); bulletx += vx; bullety += vy;

文档评论(0)

abqr88 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档