C語言產品計劃報告書_第1頁
C語言產品計劃報告書_第2頁
免費預覽已結束,剩余51頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 / 151C 語言彈彈樂產品計劃報告書設計名稱:彈彈樂專業(yè):軟件工程班 級:1418姓 名:XX學 號:14621418XX指導老師:王若慧2 / 1511)選題背景與意義2)需求分析3)開發(fā)環(huán)境4)總體設計5)源代碼6)心得體會3 / 151一、選題背景與意義隨著編程語言的不斷發(fā)展, 游戲發(fā)展速度越來越快, 游戲已 經成為現(xiàn)在人生活娛樂,打發(fā)時間,緩解壓力的一項不可或缺的 項目。而一個優(yōu)秀的游戲離不開游戲畫面、程序腳本以及后期音 效的共同作用。因此,越來越多有著引人入勝的劇情,豐富有趣 的畫面,好聽難忘的音樂的小游戲在互聯(lián)網上被越來越多的玩家 喜愛和分享。當這些兼具藝術性與流行性的元素都

2、由一個游戲組 合到一起,人們可以從中得到娛樂和放松, 同時有得到一些對生 活對人生的啟發(fā),讓人會心一笑。而創(chuàng)作者也可以選擇不同的風 格,不同的手法用計算機的一系列數(shù)碼藝術創(chuàng)作手法實現(xiàn)自己的 創(chuàng)意,然后在一些交流互動網站上發(fā)表,供他人娛樂或者借鑒, 同時也可以得到廣大互聯(lián)網用戶的意見,從而提高自身的創(chuàng)作水品。由此可見,游戲設計的意義就在于:集合不同的藝術門類,把藝術與技術相結合。從而讓人可以在游 戲中的到美的享受。給廣大的互聯(lián)網用戶提供了一個娛樂,休閑,放松身心的地方。 讓設計師之與玩家之間產生交流,從而完善游戲。操作便捷,文件攜帶方便,無需安裝,符合了現(xiàn)在很多快餐式的 生活要求便于大眾隨時的下

3、載,游戲。有豐富的圖像,畫面不受軟件的限制。富有創(chuàng)意,風格多變。是 其他4 / 151電子游戲沒有的。國內外研究現(xiàn)狀及分析:目前利用開發(fā)出5 / 151了許多夸平臺的網絡游戲,甚至可以匹敵大型 MMOF 在 3G 時代到 來以后,我們很快可以在手機上玩到大型網絡游戲,現(xiàn)有的制作網絡游戲有:SLG 類(熱血三國),體育類(熱血球球),RPG 類(凡人 修真),桌面(德州撲克),TD 類(保衛(wèi)家園)等等.在日本和美國,動畫和游戲這一類的技術超出國內比較多,日本的動漫位居世界前列是眾所周知的。二、需求分析1 功能的需求彈彈樂游戲是個簡單的小游戲能讓游戲者的身心得到娛樂從而能夠更好地投入到學習或工作當

4、中雖然現(xiàn)在市面上出來這各種各樣的游戲版本可是彈彈樂這類的小游戲其市場還是相當大的因為它玩法簡單易行不論是手機還是小游戲機都能很順利的運行對于在外忙碌的人不可能花費大量時間在娛樂上大型游戲是行不通的這樣的小游戲剛好迎合了他們的需求。2:操作方法2.1 進入游戲2.2 游戲界面6 / 1512.3 游戲操作2.4 游戲結束三、開發(fā)環(huán)境7/ 1511:設計任務與需要的知識點1)通過編寫彈彈樂游戲程序掌握結構化模塊塊化程序設計 的思想培養(yǎng)解決實際問題的能力2)有同步播放動畫聲音效果2:具體完成設計內容 本次課程設計需要掌握和運用如下的知識點:1 數(shù)組的應用2 全局變量的使用3 按鍵處理4 結構體的應用

5、5 圖形音樂和動畫的有關知識四、總體設計4.1 設計思路三、開發(fā)環(huán)境8/ 151這里我們首先構建一個游戲框架, 然后再編寫各個模塊, 后組成一個完整的游戲4.2 框架9 / 151五、源代碼#i nclude 10 / 151#include #include #include #include #include #include #pragma comment(lib,winmm.lib)#define LEFT 1#define RIGHT 30#define TOP 1#define BUTTON 22/=/ 自定義結構體11 / 151typedef struct POINT / 點i

6、nt x;int y;Point;struct BALL / 球int x;int y;int x_Speed;int y_Speed;int mode; /0- 普通; 1- 實心; 2- 冰霜;Ball3;int x;int y;int length; / / 長度Bord;struct TREASURE / 寶石int x;int y;int type;Treasure;enum color green,blue,red ;9 / 151struct BORD/ 板13 / 151enum mode run_Game,creat_Map ;/=/ 自定義函數(shù)的聲明 void gotoxy

7、(int x, int y);int mainGame(); / 主函數(shù)void initGame(int mode);/ 初始化游戲void runGame();/ 運行游戲void creatMap();/ 制作地圖void helpGame();/ 游戲幫助void selectMap();/ 選擇地圖void playGame(); / 游戲完成時 int checkComplete(); / 檢測游戲是否完成void PrintBord();/ 繪制木板和小球14 / 151void PrintLev(); / 初始化相關關卡void MoveBord(int orientation

8、); / 移動木板void MoveBall(int index); / 移動小球void removeDiamond(int index,int direction); 除方塊void removeColor(enum color,Point diamond); 決顏色void showTreasure(int intRand,Point point_diamond); / 寶物void move_Treasure(); / 移動寶石void get_Treasure(); / 獲得寶石void time_Treasure(); / / 寶石失效/ 移/ 解15 / 151/ 自定義全局變量

9、、全局常量HANDLE g_hConsoleOutput; / 獲取控制臺輸出句柄short potVal4030;/ /0 空白, 1 1 級方塊, 2 2 級方塊, 33 級方塊, 4圍墻int live=1; / 生命int stop=0; /0- 不暫停, 1- 暫停int speed=1000; / 速度int intGrade=0; / 分數(shù)int intTreasure=0;/ 寶石數(shù)int getTreasure=0;/ 獲得寶石int level_Now=0;/ 當前關卡int level_Max=0;/ 關卡數(shù)量16 / 151char fileName10020; / 目

10、前設置最高地圖容量為 100 個char game_Map20; / 游戲地圖clock_t treaTime_Last,treaTime_Now; / / 寶物持續(xù)時間static con st char* BALL_SHAPE=O,;/ 主菜單int main()g_hConsoleOutput =GetStdHandle(STD_OUTPUT_HANDLE); / 獲取控制臺輸出句柄SetConsoleTitleA( 彈彈樂 -By : shw);17 / 151/ char chVolume256;/ long lVolume;/ mciSendString(status movie

11、volume,chVolume,255,0);/ lVolume=strtol(chVolume,NULL,10);mciSendString(play musicbg_music.mp3 repeat ,NULL,0,NULL); / 背景音樂mciSendString (setaudio musicbg_music.mp3 volume to100,NULL,0,NULL); / 設置音量doCONSOLE_CURSOR_INFO cursorInfo = 1, FALSE ;/ 光標信息SetConsoleCursorInfo(g_hConsoleOutput,&cursorIn

12、fo); / 設置光標隱藏18 / 151switch(mainGame() / 游戲選項case 0:playGame();break;case 1:creatMap();break;case 2:helpGame();break;case 3:selectMap();19 / 151playGame();break;while(1);system(pausenul);return 0;/ 主菜單int mainGame()FILE *fMap;int ch,index=0;20 / 151static const char *modeItem= 開始游戲 , 制 作關卡 ,游戲幫助 , 選

13、擇關卡 ;system(cls);SetConsoleTextAttribute(g_hConsoleOutput,FOREGROUND_GREEN|FOREGROUND_INTENSITY);gotoxy(15, 5);printf(|- 1);gotoxy(15, 6);printf( | %2s%s%2S, , 彈彈樂 , );gotoxy(15, 7);printf(1-1);SetConsoleTextAttribute(g_hConsoleOutput, 0 xF0);gotoxy(16, 14);printf(%2s%s%2s, , modeItem0, );21 / 151Se

14、tConsoleTextAttribute(g_hConsoleOutput, 0 x0F);gotoxy(16, 16);printf(%2s%s%2s, , modeItem1, );SetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);gotoxy(16, 18);printf(%2s%s%2s, , modeItem2, );SetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);gotoxy(16, 20);printf(%2s%s%2s, , modeItem3, );if(fMap=fopen(

15、mapsMapInfo.dat,r)=NULL)gotoxy(LEFT+4,TOP+2);printf( 打開地圖信息文件發(fā)生錯誤 !);gotoxy(LEFT+4,TOP+4);printf( 請查看 MapInfo.dat 文件是否存在 !);exit(0);22 / 151while(fgets(fileNamelevel_Max,20,fMap)!=NULL)if(fileNamelevel_Maxstrlen(fileNamelevel_Max)-1=n)fileNamelevel_Maxstrlen(fileNamelevel_Max)-1=023 / 151level_Max+;

16、fclose(fMap);level_Now=0; / 默認第一個地圖doch = getch();switch (ch)case s: case S: case2: case 80: /if(index=0)index = 1;SetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);24 / 151gotoxy(16, 14);printf(%2s%s%2s, , modeItem0,);SetConsoleTextAttribute(g_hConsoleOutput, 0 xF0);gotoxy(16, 16);printf(%2s%s%2s, ,

17、 modeItem1,);else if(index = 1)index = 2;SetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);gotoxy(16, 16);printf(%2s%s%2s, , modeItem1, );SetConsoleTextAttribute(g_hConsoleOutput, 0 xF0);25 / 151gotoxy(16, 18);printf(%2s%s%2s, , modeItem2, );else if(index=2)index = 3;SetConsoleTextAttribute(g_hConsol

18、eOutput, 0 xF0);gotoxy(16, 20);printf(%2s%s%2s, , modeItem3, );SetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);26 / 151gotoxy(16, 18);printf(%2s%s%2s, , modeItem2, );else if(index=3)index = 0;SetConsoleTextAttribute(g_hConsoleOutput,gotoxy(16, 14);printf(%2s%s%2s, , modeItem0, );SetConsoleTextAttri

19、bute(g_hConsoleOutput,gotoxy(16, 20);printf(%2s%s%2s, , modeItem3, );break;0 xF0);0 x0F);case w: case W: case 8: case 72: /上27 / 151if(index=0)index = 3;SetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);gotoxy(16, 14);printf(%2s%s%2s, , modeItem0, );SetConsoleTextAttribute(g_hConsoleOutput, 0 xF0);go

20、toxy(16, 20);printf(%2s%s%2s, , modeItem3, ); else if(index = 1)index = 0;SetConsoleTextAttribute(g_hConsoleOutput, 0 xF0);28 / 151gotoxy(16, 14);printf(%2s%s%2s, , modeItem0,nnSetConsoleTextAttribute(g_hConsoleOutput, 0 x0F);gotoxy(16, 16);printf(%2s%s%2s, , modeItem1,);else if(index=2)index = 1;Se

21、tConsoleTextAttribute(g_hConsoleOutput,29 / 151gotoxy(16, 16);printf(%2s%s%2s, , modeItem1, );SetConsoleTextAttribute(g_hConsoleOutput,gotoxy(16, 18);printf(%2s%s%2s, , modeItem2, );else if(index=3)index = 2;SetConsoleTextAttribute(g_hConsoleOutput,gotoxy(16, 18);printf(%2s%s%2s, , modeItem2, );0 xF

22、0);0 x0F);0 xF0);SetConsoleTextAttribute(g_hConsoleOutput,30 / 1510 x0F);gotoxy(16, 20);printf(%2s%s%2s, , modeItem3, );break;case : case 13:return index;break;while(1);31 / 151/ 以全角定位到某點void gotoxy(int x, int y)static COORD cd;cd.X = (int)(x 1);cd.Y = y;SetConsoleCursorPosition(g_hConsoleOutput, cd

23、);/=/ 運行主程序void playGame() / 游戲完成時32 / 151char ch;dorunGame(fileNamelevel_Now);if(level_Nowlevel_Max & checkComplete()level_Now+;gotoxy(LEFT+2,BUTTON-3);printf( 恭喜你已經成功過關! );gotoxy(LEFT+2,BUTTON-2);printf(是否繼續(xù)游戲?);33 / 151elsebreak; while(ch=_getch()=13);/=/ 開始游戲void runGame()int ch;clock_t cloc

24、kLast, clockNow;/ 游戲主進程clock_t treasureLast,treasureNow;/ 寶物下落過程34 / 151clockLast = treasureLast =clock(); /initGame(run_Game);PrintLev(); / 繪制游戲方塊while(live)while(!stop & live)while (_kbhit() /ch = _getch();switch(ch)case 27:return;計時有鍵按下35 / 151break;case a:case A:case 4: case 75:MoveBord(1);b

25、reak;case d: case D: case 6: case 77:MoveBord(2);break;case 32:stop=1;clockNow = clock(); / 計時/ 兩次記時的間隔超過 0.45 秒36 / 151if (clockNow - clockLast 0.2F *speed)clockLast = clockNow;MoveBall(0);if(intTreasure=1)treasureNow=clock();if (treasureNow - treasureLast 0.5F *CLOCKS_PER_SEC)treasureLast = treasu

26、reNow;move_Treasure();printf(%2s,);37 / 151if(getTreasure=1)treaTime_Now=clock();if(treaTime_Now-treaTime_Last 1.0F *CLOCKS_PER_SEC)if(treaTime_Now-treaTime_Last 1.1F *CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+27,BUTTON-2);2.1F * CLOCKS_PER_SEC)else if(treaTime_Now-t

27、reaTime_Last printf(%2s,);38 / 151SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+26,BUTTON-2);printf(%2s,);else if(treaTime_Now-treaTime_Last 3.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+25,BUTTON-2);4.1F * CLOCKS_PER_SEC)else if(treaTime_Now-treaTim

28、e_Last printf(%2s,);39 / 151SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+24,BUTTON-2);printf(%2s,);else if(treaTime_Now-treaTime_Last 5.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+23,BUTTON-2);6.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsole

29、Output,0 x0F);else if(treaTime_Now-treaTime_Last printf(%2s,);40 / 151gotoxy(LEFT+22,BUTTON-2);printf(%2s,);else if(treaTime_Now-treaTime_Last 7.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+21,BUTTON-2);8.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput

30、,0 x0F);gotoxy(LEFT+20,BUTTON-2);else if(treaTime_Now-treaTime_Last printf(%2s,);41 / 151printf(%2s,);else if(treaTime_Now-treaTime_Last 9.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+19,BUTTON-2);10.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0

31、F);gotoxy(LEFT+18,BUTTON-2);printf(%2s,);else if(treaTime_Now-treaTime_Last printf(%2s,);42 / 151else if(treaTime_Now-treaTime_Last 11.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+17,BUTTON-2);12.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);g

32、otoxy(LEFT+16,BUTTON-2);printf(%2s,);else if(treaTime_Now-treaTime_Last printf(%2s,);43 / 151else if(treaTime_Now-treaTime_Last 13.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+15,BUTTON-2);14.1F * CLOCKS_PER_SEC)SetConsoleTextAttribute(g_hConsoleOutput,0 x0F);gotoxy(LEFT+14,BUTTON-2);printf(%2s,);else if(treaTime_Now-treaTime_Last 15.1F * CLOCKS_PER_SEC)else if(tre

溫馨提示

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

最新文檔

評論

0/150

提交評論