资源描述:
《游戏程序设计 - 威客中国》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、游戏程序设计FLYTOSKY本来是个玩家操纵自己的飞机在空中躲避敌人以及子弹的一个动作类游戏,只是游戏中玩家过于被动,因此有了给飞机加上武器系统的设想。为了实现这个功能,主要有几个代码增加:一.子弹类的设计代码。二.子弹容器的代码(游戏里本来是用vector来管理精灵,因此为了方便这里也用vector。)三.便利子弹碰撞检测的代码为了实现这些功能,首先设计子弹的类。对于类中的各种成员进行分析:classBullet{public:Bullet(void);Bullet(HINSTANCEhInst,intmode,intvx,intvy,intn,boolprotect=f
2、alse);//构造函数,voidCreateBullet(HINSTANCEhInst,intmode,intex,intey,intvx,intvy);voidExplode(HINSTANCEhInst);~Bullet(void);voidShoot(HDChdc);intbulletx;//子弹的X坐标intbullety;//子弹的Y坐标BITMAPbmp;intmode;//子弹的方向boolhero;boolprotect;booljz;boollive;//子弹是否存在intpower;intvx;//在X轴上的速度分量intvy;//在Y轴上的速度分量u
3、nsignedchar*px;private:inttempv;inttemp;inttemp10;intftp;//动画中的帧数HBITMAPbitmap;};Bullet::Bullet(HINSTANCEhInst,intmode,intvx,intvy,intn,boolprotect);这个函数主要是取得HINSTANCE,从中取出图像,根据mode(方向、类型信息)初始化子弹的坐标,速度,杀伤力;具体可以参考代码;voidBullet::Explode(HINSTANCEhInst){DeleteObject(bitmap);//删除原来的子弹图像bitmap=
4、(HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BULLET_BZ),IMAGE_BITMAP,0,0,LR_DEFAULTSIZE
5、LR_DEFAULTCOLOR);//图像变更为新的爆炸图像jz=true;///状态机中进入爆炸状态ftp=0;//爆炸第一帧GetObject(bitmap,sizeof(bmp),&bmp);//bmp包含了图片的大小,色深等信息}voidBullet::Shoot(HDChdc){HDCmdc=CreateCompatibleDC(hdc);SelectObject(mdc,bitmap);/
6、////////////////////////如果没有进入爆炸状态那么子弹还在飞行,对于他的位子利用速度进行计算。TransparentBlt是贴图函数。if(!jz){if(this->hero){switch(mode){case0:TransparentBlt(hdc,bulletx,bullety,16,16,mdc,0,0,16,16,RGB(255,0,255));bulletx+=vx;bullety+=vy;break;case1:TransparentBlt(hdc,bulletx,bullety,16,16,mdc,16,0,16,16,RGB(255
7、,0,255));bulletx+=vx;bullety+=vy;break;case2:TransparentBlt(hdc,bulletx,bullety,16,16,mdc,32,0,16,16,RGB(255,0,255));bulletx+=vx;bullety+=vy;break;case3:TransparentBlt(hdc,bulletx,bullety,10,27,mdc,0,0,10,27,RGB(255,0,255));bulletx+=vx;bullety+=vy;break;case4:TransparentBlt(hdc,bulletx,bul
8、lety,48,48,mdc,ftp*48,0,48,48,RGB(0,0,0));ftp++;if(ftp>=6){ftp=0;}bulletx+=vx;bullety+=vy;break;case5:temp++;TransparentBlt(hdc,bulletx,bullety,15,53,mdc,ftp*15,0,15,53,RGB(255,0,255));if(temp%5==0){ftp++;}if(ftp>=3){ftp=0;}if(temp>8&&temp<30){tempv=vy;vy=0;}e