資源簡介
小弟的畢業設計,老師給了個優秀。是一款基于opengl的3D射擊游戲,類似cs.主要用到計算機圖形學、c++、opengl的一些相關知識,有文檔。程序需要做一點配置才能運行,中國普通本科計算機專業的學生可能用一周的時間才能讓該程序運行起來,如果你是一個平時只會玩游戲和泡妞的菜鳥,最好不要下這個東西。

代碼片段和文件信息
//?anmobj.cpp:?implementation?of?the?anmobj?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“anmobj.h“
#include?“baiscobj.h“
//////////////////////////////////////////////////////////////////////
int?dongzuo[7]={0227121414};
extern?baiscobj*?m_baiscobj;
//////////////////////////////////////////////////////////////////////
anmobj::anmobj()
{
}
anmobj::~anmobj()
{}
bool?anmobj::manmove(int?i)//對象的移動
{ float?stx=.5fstz=.5f; //走步長
float?qx=man[i].qd[0]-man[i].zd[0]; //x當前,目標位置差
float?qz=man[i].qd[1]-man[i].zd[1]; //z當前,目標位置差
float?qxa=abs(qx); //x位置差絕對值
float?qza=abs(qz); //z位置差絕對值
if((int)qx==0&&(int)qz==0) return?true; //為0沒動(到達)返回
if(qxa if(qza if((int)qx!=0)?man[i].qd[0]-=qxa/qx*stx; //當前位置加步長
if((int)qz!=0)?man[i].qd[1]-=qza/qz*stz; //[qya/qy]單位絕對值
if((int)qx>0&&(int)qz<0)?{re[i]=45*1;return?false;} //取東北向
if((int)qx>0&&(int)qz>0)?{re[i]=45*3;return?false;} //取東南向
if((int)qx<0&&(int)qz>0)?{re[i]=45*5;return?false;} //取西南向
if((int)qx<0&&(int)qz<0)?{re[i]=45*7;return?false;} //取西北向
if ?((int)qz<0)?{re[i]=45*0;return?false;} //取北向
if((int)qx>0) ?{re[i]=45*2;return?false;} //取東向
if???????????((int)qz>0)?{re[i]=45*4;return?false;} //取南向
if((int)qx<0) ?{re[i]=45*6;return?false;} //取西向
return?false;
}
void?anmobj::setman(int?ifloat?y)//顯示人
{ if(model[0]==NULL)?return; //模型為空返回
srand(timeGetTime()); //
man[i].qd[2]=y; //所在高度
counter[i]++; //模型i計數指針加一
if(counter[i]>4) //用于動作延時
{ counter[i]=0; //模型i計數置0?
if(man[i].dz!=19)?frame[i]++; //是活的動作序列號+1
else?{frame[i]=man[i].death;}
if(man[i].dz==1) //跑動中
{if(manmove(i)==true) //到目標點
?{if(man[i].dz>15)?
{if(man[i].dz==16)?man[i].death=177;//死亡幀
?if(man[i].dz==17)?man[i].death=183;//死亡幀
?if(man[i].dz==18)?man[i].death=189;//死亡幀
?man[i].dz=19;frame[i]-=1;
?return;
}//完成倒地?
??man[i].dz=dongzuo[rand()%7]; //隨機選取一個動作
??frame[i]=anim[0][man[i].dz].start;//取被選取動作的開始幀
?}
}
if(frame[i]>anim[0][man[i].dz].end)?//到動作尾幀了嗎?
{?if(man[i].dz>15)?
{if(man[i].dz==16)?man[i].death=177;//死亡幀
?if(man[i].dz==17)?man[i].death=183;//死亡幀
?if(man[i].dz==18)?man[i].death=189;//死亡幀
?man[i].dz=19;frame[i]-=1;
?return;
}//完成倒地
??if(man[i].dz!=1) //停下的
{?man[i].dz=dongzuo[rand()%7]; //隨機選取一個動作
??if(rand()%10==0) //1/10的慨率
{man[i].dz=1; //跑
?man[i].zd[0]=RAND_COORD((MAP_W-1)*MAP_SCALE);//隨機目標X分量
?man[i].zd[1]=RAND_COORD((MAP_W-1)*MAP_SCALE);//隨機目標Z分量
}
}
??frame[i]=anim[0][man[i].dz].start;//取被選取動作的開始幀
}
}
///////////////////////////////////////////////////////////////////
glPushAttrib(GL_CURRENT_BIT);//保存現有顏色屬性
glPushMatrix();//glPopMatrix();
glTranslatef(man[i].qd[0]man[i].qd[2]?-man[i].qd[1]);//位置
glRotatef(re[i]+900
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4881??2011-05-30?15:40??基于OpenGL的3D射擊游戲的設計與實現\anmobj.cpp
?????文件???????1391??2011-05-20?08:37??基于OpenGL的3D射擊游戲的設計與實現\anmobj.h
?????文件??????43615??2011-05-30?15:40??基于OpenGL的3D射擊游戲的設計與實現\BAISCOBJ.CPP
?????文件???????4135??2011-05-24?10:11??基于OpenGL的3D射擊游戲的設計與實現\BAISCOBJ.H
?????文件??????31892??2005-04-06?06:23??基于OpenGL的3D射擊游戲的設計與實現\BAISCOBJ1.CPP
?????文件???????3510??2005-04-06?06:23??基于OpenGL的3D射擊游戲的設計與實現\BAISCOBJ1.H
?????文件????2114220??2011-04-21?10:13??基于OpenGL的3D射擊游戲的設計與實現\cs.rar
?????文件???????8038??2011-05-30?15:40??基于OpenGL的3D射擊游戲的設計與實現\GLFont.cpp
?????文件????????913??2011-05-14?10:24??基于OpenGL的3D射擊游戲的設計與實現\GLFont.h
?????文件?????272518??2011-06-06?22:43??基于OpenGL的3D射擊游戲的設計與實現\include.rar
?????文件???????5172??2011-05-24?09:44??基于OpenGL的3D射擊游戲的設計與實現\MathLib.cpp
?????文件????????840??2003-03-16?19:12??基于OpenGL的3D射擊游戲的設計與實現\MathLib.h
?????文件???????2058??2011-05-22?10:06??基于OpenGL的3D射擊游戲的設計與實現\mdlobj.cpp
?????文件????????792??2005-05-06?23:42??基于OpenGL的3D射擊游戲的設計與實現\mdlobj.h
?????文件????????877??2009-03-18?21:15??基于OpenGL的3D射擊游戲的設計與實現\myclock.h
?????文件???????8873??2011-05-22?10:27??基于OpenGL的3D射擊游戲的設計與實現\OpenGL.cpp
?????文件???????1055??2011-05-18?21:25??基于OpenGL的3D射擊游戲的設計與實現\OpenGL.h
?????文件???????1245??2005-04-06?05:54??基于OpenGL的3D射擊游戲的設計與實現\ReadMe.txt
?????文件????????299??2011-05-14?10:01??基于OpenGL的3D射擊游戲的設計與實現\StdAfx.cpp
?????文件???????2801??2011-05-24?17:15??基于OpenGL的3D射擊游戲的設計與實現\StdAfx.h
?????文件????4481536??2011-06-06?22:45??基于OpenGL的3D射擊游戲的設計與實現\基于OpenGL的3D游戲設計.doc
?????文件???????4728??2011-05-22?23:08??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.cpp
?????文件???????5341??2011-05-20?09:11??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.dsp
?????文件????????549??2005-04-06?05:54??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.dsw
?????文件?????156672??2011-06-03?16:32??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.ncb
?????文件??????51712??2011-06-03?16:32??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.opt
?????文件????????983??2011-06-03?10:49??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.plg
?????文件???????4096??2011-05-24?09:45??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.suo
?????文件??????11256??2011-05-24?08:45??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.vcproj
?????文件???????1423??2011-05-24?09:24??基于OpenGL的3D射擊游戲的設計與實現\游戲進度保存.vcproj.20100208-0939.Administrator.user
............此處省略5個文件信息
- 上一篇:C++與access開發的DOS版學生成績管理系統
- 下一篇:推箱子 源代碼 MFC
評論
共有 條評論