《水果忍者》設(shè)計(jì)報(bào)告_第1頁(yè)
《水果忍者》設(shè)計(jì)報(bào)告_第2頁(yè)
《水果忍者》設(shè)計(jì)報(bào)告_第3頁(yè)
《水果忍者》設(shè)計(jì)報(bào)告_第4頁(yè)
《水果忍者》設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載福建工程學(xué)院國(guó)脈信息學(xué)院《水果忍者》課程設(shè)計(jì)報(bào)告題目:水果忍者游戲開發(fā)專業(yè):電子信息工程班級(jí):電子1001班學(xué)號(hào):1030010145姓名:郭龍彬指導(dǎo)教師:陳灝、韓海峰完成日期:2013年04月07日可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載設(shè)計(jì)題目水果忍者游戲開發(fā)周次:2實(shí)驗(yàn)時(shí)間2013年3月25日~4月07日課程設(shè)計(jì)要求熟悉C/C++語(yǔ)言能夠用C/C++語(yǔ)言解決一個(gè)實(shí)際問題掌握編程思路課程設(shè)計(jì)過程導(dǎo)入茶壺模型、設(shè)置旋轉(zhuǎn)效果、插入水果忍者背景、導(dǎo)入水果模型、增加水果種類、設(shè)置水果按照設(shè)定好的拋物線的軌跡運(yùn)動(dòng)、增加刀鋒效果、設(shè)置屏幕切換效果、導(dǎo)入半個(gè)水果模型,設(shè)置當(dāng)?shù)朵h接觸水果時(shí)把水果切成兩半的效果、添加水果忍者背景音樂。參考資料《嵌入式系統(tǒng)》項(xiàng)目課程,OpenGL編程基礎(chǔ)設(shè)計(jì)總結(jié)與體會(huì)此次實(shí)訓(xùn)最大的收獲不是我學(xué)習(xí)到了多少知識(shí)而是這幾天實(shí)訓(xùn)給我的感悟:首先是心態(tài)。一定要有一個(gè)積極的心態(tài),獨(dú)立解決問題的意識(shí),培養(yǎng)扎實(shí)基礎(chǔ)的認(rèn)識(shí)。有自己的東西,有自己的付出,才會(huì)有程序運(yùn)行成功時(shí)的喜悅和小自豪,這樣也有助于培養(yǎng)自己的興趣。要時(shí)刻牢記態(tài)度決定一切。其次是興趣,感覺學(xué)習(xí)工作中興趣很關(guān)鍵,只是一個(gè)引發(fā)人積極性的問題,有了興趣就自覺了,效率自然就高了。再次要敢于嘗試和挑戰(zhàn)。不要安于現(xiàn)成的程序,而且不要害怕失敗,在程序調(diào)試的過程中這點(diǎn)尤為重要,“發(fā)現(xiàn)出問題然后解決問題”是一個(gè)積累經(jīng)驗(yàn)的過程,而且很高效。最后要不懈追求。對(duì)于源代碼進(jìn)行不斷的完善,要盡可能的實(shí)現(xiàn)課題所要求的功能。對(duì)于初學(xué)者或者開發(fā)較少的人來說,大量大寫程序還是有必要的,但同時(shí)要注意思考,理解其實(shí)現(xiàn)的內(nèi)在意義。還可以自己添加一些有意義的功能來實(shí)現(xiàn)。當(dāng)看到自己編寫的程序正常運(yùn)行時(shí),興趣也會(huì)隨之而來,樂此不疲,形成一個(gè)良性循環(huán)。兩周的學(xué)習(xí),有過艱辛,有過喜悅,放棄過,堅(jiān)持過。兩周的學(xué)習(xí)讓自己真正的過了把癮,自己從一個(gè)玩游戲的角色到開發(fā)游戲的角色。角色的變換,心境的變化。我們從一開始的照搬照抄敲著看似是自己的代碼,到后來自己思考游戲思路,敲著自己的代碼。學(xué)習(xí)中遇到了很多的問題,通過小組的討論解決。讓我認(rèn)識(shí)到團(tuán)結(jié)的重要性,有時(shí)并不是一人不能解決的問題,放到團(tuán)體中,大家集思廣益,每個(gè)人一點(diǎn)思路,問題就給放小了,那就容易解決了。兩周的時(shí)間雖說有點(diǎn)短,不過這兩周讓我學(xué)到了很多東西,讓我了解了嵌入式,知道了以后的大致出路。這次實(shí)訓(xùn)讓我學(xué)會(huì)了規(guī)劃,制定計(jì)劃,每天的學(xué)習(xí)都有跡可尋??删庉嬁删庉嬀肺臋n,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載課程過程及其程序:1.導(dǎo)入茶壺模型#include<qgl.h>#include<glut.h>//函數(shù)聲明voidDisplay();//定義調(diào)用函數(shù)voidReshape(intw,inth);//定義窗口重繪函數(shù)GLfloatangle=0;//定義旋轉(zhuǎn)角度voidMouseMove(intx,inty);//定義鼠標(biāo)事件函數(shù)intmain(intargc,char*argv[]){glutInit(&argc,argv);//初始化函數(shù)glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE);glutInitWindowPosition(150,150);//窗口位置glutInitWindowSize(800,600);//窗口大小glutCreateWindow("GoodJob");//窗口創(chuàng)建并命名glutDisplayFunc(Display);//回調(diào)函數(shù)glutMotionFunc(MouseMove);//鼠標(biāo)事件函數(shù)glutReshapeFunc(Reshape);//窗口重繪函數(shù)(移動(dòng)與變化時(shí))glutMainLoop();//循環(huán)函數(shù)return0;}voidMouseMove(intx,inty)//鼠標(biāo)執(zhí)行函數(shù){if(angle>=360)angle=0;angle+=0.001;//角度變化函數(shù)(數(shù)值±表旋轉(zhuǎn)方向)glutPostRedisplay();//角度改變、重新繪制}voidDisplay()//調(diào)用函數(shù){glClearColor(0.0,0.0,0.0,0.0);//末位0表示混合值:0.0-1.0glClear(GL_COLOR_BUFFER_BIT);//清除顏色緩沖區(qū)(設(shè)定背景色)glRotatef(angle,1.0,0.0,0.0);//確定旋轉(zhuǎn)軸glRotatef(angle,0.0,1.0,0.0);glRotatef(angle,0.0,0.0,1.0);glBegin(GL_LINES);//畫直線函數(shù)glVertex3f(-0.5,0.5,0.0);//頂點(diǎn)函數(shù)(x,y,z)glVertex3f(0.5,-0.5,0.0);glEnd();glBegin(GL_QUADS);//畫平面函數(shù)glColor3f(0.3,0.5,0.7);glVertex3f(-0.5,0.5,0.0);//平面顏色(三基色)glColor3f(0.7,0.5,0.8);glVertex3f(-0.5,-0.5,0.0);//頂點(diǎn)函數(shù)(x,y,z)可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載glColor3f(0.4,0.5,0.6);glVertex3f(0.5,-0.5,0.0);glColor3f(0.8,0.8,0.4);glVertex3f(0.5,0.5,0.0);glEnd();glColor3f(0.3,0.5,0.7);//設(shè)置茶壺顏色glutWireTeapot(0.4);//畫茶壺(大?。ゞlutSwapBuffers();}2.設(shè)置旋轉(zhuǎn)效果voidDisplay()//調(diào)用函數(shù){glClearColor(0.0,0.0,0.0,0.0);//末位0表示混合值:0.0-1.0glClear(GL_COLOR_BUFFER_BIT);//清除顏色緩沖區(qū)(設(shè)定背景色)glRotatef(angle,0.0,1.0,0.0);//確定旋轉(zhuǎn)軸glRotatef(angle,0.0,1.0,0.0);glRotatef(angle,0.0,1.0,0.0);}3.插入水果忍者背景voidLoadTexture(){QImagebuf,textureBuf;//圖像準(zhǔn)備if(!buf.load("./images/background.jpg")){printf("Loaderror!\n");//當(dāng)讀取錯(cuò)誤時(shí)提示}textureBuf=QGLWidget::convertToGLFormat(buf);//轉(zhuǎn)換圖形格式glGenTextures(1,&textureArray[0]);//生成一個(gè)紋理,建立索引glBindTexture(GL_TEXTURE_2D,textureArray[0]);//綁定紋理glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,textureBuf.width(),textureBuf.height(),0,GL_RGBA,GL_UNSIGNED_BYTE,textureBuf.bits());//生成一個(gè)2D紋理//第一個(gè)0:最基本的圖像執(zhí)行細(xì)節(jié)級(jí)別,第二個(gè)0:邊框的寬度}voidOpenGLInit(){glEnable(GL_TEXTURE_2D);//啟動(dòng)紋理貼圖功能}4.導(dǎo)入水果模型可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載CLoad3DSAppleLoad3DS;//讀取蘋果3D模型if(!AppleLoad3DS.Import3DS(&AppleModel,"./3dmodel/apple.3ds")){printf("Load3DSFileError!\n");}AppleObject.get3Dmodel(&AppleModel);5.增加水果種類CLoad3DSAppleLoad3DS;//讀取蘋果3D模型if(!AppleLoad3DS.Import3DS(&AppleModel,"./3dmodel/apple.3ds")){printf("Load3DSFileError!\n");}AppleObject.get3Dmodel(&MeloModel);CLoad3DSMeloLoad3DS;//讀取西瓜3D模型if(!MeloLoad3DS.Import3DS(&MeloModel,"./3dmodel/melo.3ds")){printf("Load3DSFileError!\n");}AppleObject.get3Dmodel(&AppleModel);MeloObject.get3Dmodel(&MeloModel);glutDisplayFunc(Display);//回調(diào)函數(shù)glutMotionFunc(MouseMove);//鼠標(biāo)事件函數(shù)glutReshapeFunc(Reshape);//窗口重繪函數(shù)(移動(dòng)與變化時(shí))glutMainLoop();//循環(huán)函數(shù)return0;}6.設(shè)置水果按照設(shè)定好的拋物線的軌跡運(yùn)動(dòng)PARABOLA_THREEPOINTThreepoints[11];Parabolaparabola(-0.8,-0.45,0.0,0.0,0.8,-0.45);ParabolaparabolaA(-0.1,-0.8,0.0,0.5,0.1,-0.8);ParabolaparabolaB(0.8,-0.45,0.0,0.0,-0.8,-0.45);ParabolaparabolaC(-0.5,-1.0,1.0,0.5,2.0,-1.0);intmain(intargc,char*argv[]){parabola.drawParabola();parabolaA.drawParabola();parabolaB.drawParabola();parabolaC.drawParabola();glutInit(&argc,argv);可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE);voidOntimer(intvalue)//定時(shí)器的回調(diào)函數(shù){if(tmpParabola>=parabola.parabolaIndex-1){tmpParabola=0;}tmpParabola++;FruitX=parabola.parabolaPoint[tmpParabola].x;FruitY=parabola.parabolaPoint[tmpParabola].y;glutPostRedisplay();glutTimerFunc(300,Ontimer,1);}voidOntimerA(intvalue)//定時(shí)器的回調(diào)函數(shù){if(tmpParabolaA>=parabolaA.parabolaIndex-1){tmpParabolaA=0;}tmpParabolaA++;FruitXA=parabolaA.parabolaPoint[tmpParabolaA].x;FruitYA=parabolaA.parabolaPoint[tmpParabolaA].y;glutPostRedisplay();glutTimerFunc(300,OntimerA,1);}voidOntimerB(intvalue)//定時(shí)器的回調(diào)函數(shù){if(tmpParabolaB>=parabolaB.parabolaIndex-1){tmpParabolaB=0;}tmpParabolaB++;FruitXB=parabolaB.parabolaPoint[tmpParabolaB].x;FruitYB=parabolaB.parabolaPoint[tmpParabolaB].y;glutPostRedisplay();glutTimerFunc(300,OntimerB,1);}可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載voidOntimerC(intvalue)//定時(shí)器的回調(diào)函數(shù){if(tmpParabolaC>=parabolaC.parabolaIndex-1){tmpParabolaC=0;}tmpParabolaC++;FruitXC=parabolaC.parabolaPoint[tmpParabolaC].x;FruitYC=parabolaC.parabolaPoint[tmpParabolaC].y;glutPostRedisplay();glutTimerFunc(300,OntimerC,1);}/*GLfloatCreatpoints(GLfloatx0,GLfloaty0,GLfloatx1,GLfloaty1,GLfloatx2,GLfloaty2){x0=-rand()/(RAND_MAX+1.0);y0=0.0;x1=0.0;y1=rand()/(RAND_MAX+1.0);x2=x0;y2=0.0;}*/voidwait(intsecond){clock_tend;end=clock()+second*CLOCKS_PER_SEC;while(clock()<end)NULL;}voidIdle(){mySleep(sleepTime);}voidmySleep(intmilisecond){Sleep(milisecond);fruitBlade.sampleFadeBlade();}可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載7.增加刀鋒效果:voidMouseMove(intx,inty)//鼠標(biāo)執(zhí)行函數(shù){if(angle>=360)angle=0;angle+=(-0.002);//角度變化函數(shù)(數(shù)值±表旋轉(zhuǎn)方向)glutPostRedisplay();//角度改變即重新繪制}8.設(shè)置屏幕切換效果voidloadtexture(){QImagebuf,texturebuf;if(!buf.load("./images/background.jpg")){printf("textureerror!!!\n");}texturebuf=QGLWidget::convertToGLFormat(buf);glGenTextures(1,&texturearray[0]);glBindTexture(GL_TEXTURE_2D,texturearray[0]);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,texturebuf.width(),texturebuf.height(),0,GL_RGBA,GL_UNSIGNED_BYTE,texturebuf.bits());}voidloadtextureOther(){QImagebuf,texturebuf;if(!buf.load("./images/ad.jpg")){printf("textureerror!!!\n");}texturebuf=QGLWidget::convertToGLFormat(buf);glGenTextures(1,&texturearray[0]);glBindTexture(GL_TEXTURE_2D,texturearray[0]);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,texturebuf.width(),可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載texturebuf.height(),0,GL_RGBA,GL_UNSIGNED_BYTE,texturebuf.bits());}9.導(dǎo)入半個(gè)水果模型,設(shè)置當(dāng)?shù)朵h接觸水果時(shí)把水果切成兩半的效果:t3DModelappleModel;t3DModelmeloModel,melorightModel,meloleftModel;t3DModelnimengModel,nimengleftModel,nimengrightModel;t3DModelhalfappleModel;FruitObjectappleObject;FruitObjectmeloObject[6],melorightObject[6],meloleftObject[6];FruitObjectnimengObject,nimengrightObject,nimengleftObject;FruitObjecthalfappleObject;boolisSplit1=false;boolisSplit2=false;POINT3DGLPoint;CLoad3DSmeloLoad3DS;if(!meloLoad3DS.Import3DS(&meloModel,"./3Dmodel/melo.3ds")){printf("load3dsfileerror!\n");}for(inti=0;i<6;i++){meloObject[i].get3Dmodel(&meloModel);}loadTexture();CLoad3DSnimengLoad3DS;if(!nimengLoad3DS.Import3DS(&nimengModel,"./3Dmodel/nimeng.3DS")){printf("loadfileerror!\n");}nimengObject.get3Dmodel(&nimengModel);loadTexture();CLoad3DShalfappleLoad3DS;if(!halfappleLoad3DS.Import3DS(&halfappleModel,"./3Dmodel/left_half_lemon.3DS")){printf("loadfileerror!\n");可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載}halfappleObject.get3Dmodel(&halfappleModel);loadTexture();CLoad3DSnimengleftLoad3Ds;if(!nimengleftLoad3Ds.Import3DS(&nimengleftModel,"./3dmodel/left_half_lemon.3DS")){printf("Loadthe3dmodelerror!!");}nimengleftObject.get3Dmodel(&nimengleftModel);loadTexture();CLoad3DSnimengrightLoad3Ds;if(!nimengrightLoad3Ds.Import3DS(&nimengrightModel,"./3dmodel/right_half_lemon.3DS")){printf("Loadthe3dmodelerror!!");}nimengrightObject.get3Dmodel(&nimengrightModel);loadTexture();CLoad3DSmeloleftLoad3Ds;if(!meloleftLoad3Ds.Import3DS(&meloleftModel,"./3dmodel/left_half_melo.3DS")){printf("Loadthe3dmodelerror!!");}for(inti=0;i<6;i++){meloleftObject[i].get3Dmodel(&meloleftModel);}loadTexture();CLoad3DSmelorightLoad3Ds;if(!melorightLoad3Ds.Import3DS(&melorightModel,"./3dmodel/right_half_melo.3DS")){printf("Loadthe3dmodelerror!!");}for(inti=0;i<6;i++){melorightObject[i].get3Dmodel(&melorightModel);}loadTexture();可編輯可編輯精品文檔,歡迎下載精品文檔,歡迎下載可編輯精品文檔,歡迎下載glutTimerFunc(80,onTime,1);if(isSplit1==true){nimengleftObject.draw3DModel(fruitX-0.1,fruitY-0.1,-0.5);nimengrightObject.draw3DModel(fruitX+0.1,fruitY+0.1,-0.5);}else{nimengObject.draw3DModel(fruitX,fruitY,-0.5);}if(fruitY<-0.6){isSplit1=false;}if(isSplit2==true){for(inti=0;i<6;i++){meloleftObject[i].dr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論