0911090103于雙江《泡泡龍游戲》4025824_第1頁
0911090103于雙江《泡泡龍游戲》4025824_第2頁
0911090103于雙江《泡泡龍游戲》4025824_第3頁
0911090103于雙江《泡泡龍游戲》4025824_第4頁
0911090103于雙江《泡泡龍游戲》4025824_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、題目(問題)描述我這次的課程設(shè)計是用c語言做一個小游戲泡泡龍。二、功能分析通過體驗并分析后得出這泡泡龍游戲中主要功能包括:1.初始化新游戲的開局功能。2.方向掌握功能。3.發(fā)射功能。4.若有3個或3個以上顏色相同就消失功能。5.自動彈出下一個顏色(隨機)功能。6.若全部泡泡都沒了,就下一關(guān)。7.泡泡碰到指針則失敗。三、系統(tǒng)設(shè)計1程序總體結(jié)構(gòu)程序中由主模塊負責(zé)協(xié)調(diào)各功能模塊的工作。 跑泡龍是一個經(jīng)典的小游戲,開局后,通過你掌握方向鍵進行射擊,盡量把顏色相同的射到一塊,3個或3個以上顏色一樣的泡泡在一起就會消失,重復(fù)操作,控制方向,射擊,當(dāng)界面上的泡泡一個也沒了,那么恭喜你,闖關(guān)成功。如果你射

2、擊的泡泡越來越多,最后碰到指針,那么很遺憾你失敗了。 其結(jié)構(gòu)圖如下:泡泡龍程序系統(tǒng)開局控方向消失越來越多多多過關(guān)結(jié)束射擊圖2 泡泡龍的總體結(jié)構(gòu)圖2界面設(shè)計進入該游戲界面,你可以選擇start/exit來選擇是否要繼續(xù),點擊start就可以自動進入游戲并開始玩。然后就根據(jù)規(guī)則玩此游戲。其界面圖如下:圖3 泡泡龍游戲的界面3輸入方式設(shè)計此游戲為dos下程序,因此簡化為鍵盤控制。上,下,左,右鍵用來移動指針的方向;回車用來射擊;esc 退出游戲 4重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設(shè)計1 泡泡龍界面數(shù)據(jù)#definevk_left0x4b00/*控制方向的左鍵值*/ #definevk_right0x4d00 /*

3、控制方向的右鍵值*/#definevk_down0x5000 /*控制方向的下鍵值*/#definevk_up0x4800 /*控制方向的上鍵值*/#definevk_esc0x011b /*退出游戲*/#definevk_space0x3920 /*繼續(xù)進行*/#definetrue1 /*正確*/#definefalse0 /*出現(xiàn)錯誤*/2 泡泡龍界面內(nèi)部數(shù)據(jù) public: /*定義的全局變量*/float x,y; /*確定發(fā)射泡泡的方位*/int color; /*輸入泡泡的顏色*/float radius; / *輸入泡泡的半徑大小*/int samecolor; /*判斷泡泡顏

4、色是否相同*/int clear_init; /*顏色相同的泡泡就消失*/ int notdrop; /* 泡泡沒有碰到發(fā)射針就繼續(xù)*/int drop_init; /*顏色不相同的泡泡就累加 */5函數(shù)設(shè)計文件中函數(shù)的功能圖如下:文件名函數(shù)原形函數(shù)功能函數(shù)處理描述;泡泡龍程序系統(tǒng).cvoidinitboard();選擇輸入輸入在射擊時的泡泡;circle1(bub.x,bub.y,10); 循環(huán)輸入重復(fù)射擊操作,泡泡循環(huán)射擊;printbub();輸出使界面內(nèi)的泡泡越來越多,射擊出很多不同顏色的泡泡;switch(key);循環(huán)操作循環(huán)控制方向鍵來確定射擊的方向;exit(1);退出游戲失敗

5、,則退出;voidclearboard();輸出弧線利用for循環(huán)輸出不同顏色的泡泡;voiddropboard();輸出泡泡利用for循環(huán)使相同顏色泡泡消失,不同顏色泡泡累加;voidmain();程序的主函數(shù)界面泡泡全部消失,成功進下一關(guān),反之則失敗退出。四、關(guān)鍵技術(shù)、難點及其解決方法此程序的關(guān)鍵是在游戲中,下面指針會循環(huán)的射擊出不同顏色的小泡泡,而且使3個或3以上顏色相同的泡泡消失,不同顏色的累加,這些的各種表示方法五、測試方法1.按鍵測試。檢查正確的輸入時,是否界面正確表現(xiàn);錯誤輸入時,是否無效。2.程序運行測試。正確運行,觀察是否異常;運行時中斷,程序是否正確退出。六、總結(jié)課程設(shè)計是

6、培養(yǎng)學(xué)生綜合運用所學(xué)知識 ,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓(xùn)練和考察過程,當(dāng)今計算機應(yīng)用在生活中可以說得是無處不在。掌握程序開發(fā)技術(shù)是十分重要的,而c語言又是最常見,因此做好c語言課程設(shè)計是十分必要的。自從拿到題目到完成整個編程,從理論到實踐,在整整一個星期的日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際

7、動手能力和獨立思考的能力。我做的是小游戲泡泡龍程序設(shè)計,雖然這程序不算很難,但對于我一個初學(xué)者來說,感覺很困難,也使第一次做課程設(shè)計,通過問同學(xué),上網(wǎng)查資料,終于成功完成了此次課程設(shè)計。通過這次實訓(xùn),使我對c語言有了更進一步的了解,也使我認識到理論與實踐的結(jié)合才是最有效的。附1、使用說明1、 功能說明:泡泡龍游戲的操作非常,程序中已經(jīng)定義到了,控制方向的上、下、左、右鍵,和控制發(fā)射的空格鍵。你只需要點開始進入游戲,就按照規(guī)則開是玩,通過你玩的會判斷是進入下一關(guān),還是失敗退出。2、 用戶手冊:泡泡龍是一個簡單經(jīng)典的智力小游戲,手機上網(wǎng)上玩的人都比較多,大多是小朋友玩的比較多,有助于智力的開發(fā),當(dāng)

8、然成年人也可以玩。附2、代碼清單此文件主要包含涉及文件讀寫功能的函數(shù)。#include #include #include #include #include #include #include #definevk_left0x4b00/*上下左右鍵的值*/ #definevk_right0x4d00 #definevk_down0x5000 #definevk_up0x4800 #definevk_esc0x011b #definevk_space0x3920 #definetrue1 #definefalse0 #definepi3.141593 #definesqrt21.41421 #

9、definey117.32051 intflag; circle1(intx,inty,floatr) inti; for(i=1;ir;i+) circle(x,y,i); return0; classbubble public: floatx,y; intcolor; floatradius; intsamecolor; intclear_init; intnotdrop; intdrop_init; board114; voidinitboard()/*/ inti,j,k; for(i=0;i114;i+) boardi.y=i/19*2*y1+10+(i%19)/10*y1; if(

10、i%19)/10=0)boardi.x=(i%19)*20+10; if(i%19)/10=1)boardi.x=(i%19)%10*20+20; boardi.samecolor=false; boardi.clear_init=false; boardi.notdrop=false; boardi.drop_init=false; classstartbub public: floatx,y; floatx2,y2; intcolor; floatv;/*bubble運動的速度*/ floatradius; floatangle; floatmoveangle; startbub() x=

11、100.0;y=10.0+12*y1;angle=pi/2.0;moveangle=pi/2.0;v=1.0; makebubble(); showangle(); movebubble(); changeangle(); clearbubble(); dropbubble(); bub; initbub() bub.x=100; bub.y=10+12*y1; return0; printboard()/*/ inti; for(i=0;i114;i+) if(boardi.color!=0) setcolor(boardi.color); circle1(boardi.x,boardi.y

12、,10); setfillstyle(solid_fill,boardi.color); bar(boardi.x-sqrt2*4.4,boardi.y-sqrt2*4.4,boardi.x+sqrt2*4.4,boardi.y+sqrt2*4.4); elsesetcolor(black); circle1(boardi.x,boardi.y,10); setfillstyle(solid_fill,black); bar(boardi.x-sqrt2*4.4,boardi.y-sqrt2*4.4,boardi.x+sqrt2*4.4,boardi.y+sqrt2*4.4); return0

13、; startbub:makebubble()/*/ color=random(6)+1; return0; startbub:showangle()/*/ setcolor(black); setlinestyle(solid_line,10,10); line(100.0,10+12*y1,x2,y2); x2=100.0+30.0*cos(angle); y2=10+12*y1-30.0*sin(angle); setcolor(8); line(100.0,10+12*y1,x2,y2); setcolor(color); circle1(100.0,10+12*y1,10); ret

14、urn0; printbub() setcolor(bub.color); circle1(bub.x,bub.y,10); bar(bub.x-sqrt2*5.0,bub.y-sqrt2*5.0,bub.x+sqrt2*5.0,bub.y+sqrt2*5.0); bub.showangle(); return0; clearbub() setcolor(black); circle1(bub.x,bub.y,10); bar(bub.x-sqrt2*5.0,bub.y-sqrt2*5.0,bub.x+sqrt2*5.0,bub.y+sqrt2*5.0); bub.showangle(); r

15、eturn0; intstartbub:movebubble()/*/ inti,j; intflag1; flag=0; floatmin=30000.0; float*length;/*boardi到bub的距離的平方*/ while(1) clearbub(); for(i=0;i114;i+) lengthi=(boardi.x-x)*(boardi.x-x)+(boardi.y-y)*(boardi.y-y); if(lengthi400.0&boardi.color!=0)flag1=1;break; if(flag1=1)break; if(x188)x=188;moveangl

16、e=pi-moveangle; if(y10)break; x=x+2*cos(moveangle); y=y-2*sin(moveangle); printbub(); for(i=0;i114;i+) lengthi=(boardi.x-x)*(boardi.x-x)+(boardi.y-y)*(boardi.y-y); if(lengthipi/36.0)angle=angle-pi/72.0;moveangle=angle;showangle();break; casevk_left: if(anglepi-pi/36.0)angle=angle+pi/72.0;moveangle=a

17、ngle;showangle();break; casevk_space: movebubble();showangle();moveangle=angle;flag_1=1;break; casevk_esc: exit(1); returnflag_1; startbub:clearbubble()/*/ return0; startbub:dropbubble()/*/ return0; voidclearboard() intquit=false; inti,j; intsum=0; intcolor=boardflag.color; floatm,n; boardflag.samec

18、olor=true; for(;) for(i=0;i114;i+) if(boardi.color=color&boardi.samecolor=true&boardi.clear_init=false) break; if(i=113)quit=true;break; if(quit=true)break; for(j=0;j114;j+) m=boardj.x-boardi.x; n=boardj.y-boardi.y; if(m*m+n*n450.0&boardj.color=color) boardj.samecolor=true; boardi.clear_init=true; for(i=0;i=3) for(i=0;i114;i+) if(boardi.samecolor=true) boardi.color=0; voiddropboard()/*/ intquit=false; inti,j; intm,n; for(i=0;i114;i+) boardi.notdrop=false; boardi.drop_init=false; for(i=0;i10;i+) if(boardi.color!=0)boardi.notdrop=true; for(;) for(i=0;i114;i+) if(boardi.notd

溫馨提示

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

最新文檔

評論

0/150

提交評論