天津理工大学2010届本科毕业设计说明书
参考文献
[1] 徐丹,李建 等著PC游戏编程(基础篇)重庆:重庆大学出版社,2006.6 [2] CG实验室 王鑫 等著PC游戏编程(网络游戏篇)重庆:重庆大学出版社,2006.6 [3] 李代平.软件工程.北京:清华大学出版社,2008.4
[4] 李代平.软件工程设计案例教程.北京:清华大学出版社,2008.12 [5] Dante Treglia著.张磊译.游戏编程精粹III.北京:人民邮电出版社.2003.5 [6] Andrè LaMothe著.沙鹰译.游戏编程大师技巧.北京:中国电力出版社.2003.12 [7] Dale Rogerson著. 杨秀章译.COM技术内幕.北京:清华大学出版社.1999.3 [8] David J.Kruglinski著.潘爱民译.Visual C++技术内幕.北京:清华大学出版社2004 [9] Richard ,Rouse 著.尤晓东 译.游戏设计,北京:电子工业出版社,2004.7 [10] Andy Pike 著. Aman JIANG译.DirectX 8 教程.电子教程 2004.5
[11] 坂本千寻. Visual C++角色扮演游戏程序设计.北京:中国铁道出版社.2004.11 [12] Ernest Pazera著.黄际洲,文俊浩译.Direct 3D中的2D编程.重庆大学出版社.2005.1 [13] 唐明理.传奇的故事——学VC编游戏.四川电子音像出版社.2004.10
[14] 四围科技 等著 Visual c++ 游戏开发技术与实例 北京:人民邮电出版社,2007.9 [15] P.J.PLAUGER 等著 C++ STL 中文版 北京:中国电力出版社 2001.2 [16] Andrew Kirmse 著游戏编程精粹 4 北京:人民邮电出版社 2003.5 [17] AI Williams 著MFC 技术内幕 北京:机械工业出版社 2000.6 [18] Richard Rouse III 著 尤晓东 等译 游戏设计 北京: 电子工业出版社
2004.7
[19] Michael Morrison 著 徐刚 于建 薛雷 译 北京: 人民邮电出版社 2005.9
- 32 -
天津理工大学2010届本科毕业设计说明书
附录一
//----------------------------------------------------------------- // 检测碰撞
//-----------------------------------------------------------------
BOOL SpriteCollision(Sprite* pSpriteHitter, Sprite* pSpriteHittee) {
// 判断一个玩家炮弹和敌人发生碰撞 Bitmap* pHitter = pSpriteHitter->GetBitmap(); Bitmap* pHittee = pSpriteHittee->GetBitmap();
if (((pHitter == g_p5BulletBitmap) && (pHittee == g_pEnemyBaseBitmap)) || ((pHittee == g_p5BulletBitmap) && (pHitter == g_pEnemyBaseBitmap)) {
// 播放一个爆炸的声音
PlaySound((LPCSTR)IDW_LGEXPLODE, g_hInstance, SND_ASYNC | SND_RESOURCE);
// 销毁两个子画面 pSpriteHitter->Kill(); pSpriteHittee->Kill();
// 创建爆炸画面
RECT rcBounds = { 0, 0, 600, 450 }; RECT rcPos;
if (pHitter == g_p5BulletBitmap) rcPos = pSpriteHittee->GetPosition(); else
rcPos = pSpriteHitter->GetPosition();
Sprite* pSprite = new Sprite(g_pLgExplosionBitmap, rcBounds); pSprite->SetNumFrames(8, TRUE); pSprite->SetPosition(rcPos.left, rcPos.top); g_pGame->AddSprite(pSprite);
- 33 -
)
天津理工大学2010届本科毕业设计说明书
// 加分 g_iScore += 25;
g_iDifficulty = max(80 - (g_iScore / 20), 20); }
// 是否自己被击中
if ((pHitter == g_pBB0Bitmap && (pHittee==g_pEnemyP1Bitmap)) || (pHittee == g_pBB0Bitmap && (pHitter==g_pEnemyP1Bitmap))) {
// 播放爆炸声音
PlaySound((LPCSTR)IDW_LGEXPLODE, g_hInstance, SND_ASYNC | SND_RESOURCE);
// 销毁敌人导弹
if (pHitter == g_pBB0Bitmap) pSpriteHittee->Kill(); else
pSpriteHitter->Kill();
if(g_iStrong>60) {
// 初始化我方单位位置
g_pTankSprite->SetPosition(300, 300);
- 34 -
// 在我方单位处创建爆炸画面 RECT rcBounds = { 0, 0, 600, 480 }; RECT rcPos;
if (pHitter == g_pBB0Bitmap) rcPos = pSpriteHitter->GetPosition(); else
rcPos = pSpriteHittee->GetPosition();
Sprite* pSprite = new Sprite(g_pLgExplosionBitmap, rcBounds); pSprite->SetNumFrames(8, TRUE); pSprite->SetPosition(rcPos.left, rcPos.top); g_pGame->AddSprite(pSprite);
天津理工大学2010届本科毕业设计说明书
}
//获得无敌
if ((pHitter == g_pBB0Bitmap && (pHittee==g_pJJ1Bitmap)) || (pHittee == g_pBB0Bitmap && (pHitter==g_pJJ1Bitmap))) {
// 销毁奖子
if (pHitter == g_pBB0Bitmap) pSpriteHittee->Kill(); else
pSpriteHitter->Kill(); }
//获得加一命
if ((pHitter == g_pBB0Bitmap && (pHittee==g_pJJ2Bitmap)) || (pHittee == g_pBB0Bitmap && (pHitter==g_pJJ2Bitmap))) {
// 销毁奖子
if (pHitter == g_pBB0Bitmap) pSpriteHittee->Kill();
- 35 -
}
g_iStrong=0; //将玩家坦克设为无敌
// 检查优秀否结束 if (--g_iNumLives == 0) {
// 播放声音
PlaySound((LPCSTR)IDW_GAMEOVER, g_hInstance, SND_ASYNC |
SND_RESOURCE); g_bGameOver = TRUE; g_iGameOverDelay = 150; }
g_iStrong=0; //将玩家坦克设为无敌
天津理工大学2010届本科毕业设计说明书
else
pSpriteHitter->Kill(); }
//获得减一命
if ((pHitter == g_pBB0Bitmap && (pHittee==g_pJJ3Bitmap)) || (pHittee == g_pBB0Bitmap && (pHitter==g_pJJ3Bitmap))) {
// 销毁奖子
if (pHitter == g_pBB0Bitmap) pSpriteHittee->Kill(); else
pSpriteHitter->Kill(); }
return FALSE; } //fire
void Fire(int x,int y) {
if(g_iNumLives<3) { }
g_iNumLives++;
if(g_iNumLives>1) { }
g_iNumLives--;
//求初始位置
int xPoi=g_pTankSprite->GetPosition().left +g_pTankSprite->GetGunWidth() /2; //gun中心x
- 36 -