C語言課程設(shè)計報告俄羅斯方塊改進版_第1頁
C語言課程設(shè)計報告俄羅斯方塊改進版_第2頁
C語言課程設(shè)計報告俄羅斯方塊改進版_第3頁
C語言課程設(shè)計報告俄羅斯方塊改進版_第4頁
C語言課程設(shè)計報告俄羅斯方塊改進版_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

—設(shè)計題目俄羅斯方塊改進學生姓名專業(yè)班級指導教師— 1.課程設(shè)計目的 1 3.程序設(shè)計實現(xiàn)過程 2 代碼詳解 14 —俄羅斯方塊改進1.課程設(shè)計問題(Tetris)是一款由俄羅斯人阿列克謝·帕基特諾夫。2.功能分析⑶用鍵變換方塊*游戲面包的數(shù)據(jù)結(jié)構(gòu):二維數(shù)組— 3.程序設(shè)計實現(xiàn)過程3.1程序總體設(shè)計結(jié)構(gòu)部分——處理和實現(xiàn)進行過程中的各種事件和函數(shù)。在處理中判斷游戲是否結(jié)束,如果沒有結(jié)束,則重新開始游戲,否則結(jié)束游戲。(1)游戲方塊預覽功能。在游戲過程中,當在游戲底板中出現(xiàn)一個游戲方玩 (2)游戲方塊控制功能。通過各種條件的判斷,實現(xiàn)對游戲方塊的左移、斯方塊游戲化圖形模式(歡迎界面)單選項—是復原有的時鐘中斷回菜單執(zhí)行主流程圖(3)游戲顯示更新功能。在判斷鍵值時,有左移VK_LEFT、右移VK_RIGHT、(4)游戲速度分數(shù)更新功能。在游戲玩家進行游戲過程中,需要按照一定的游— (5)游戲幫助功能。玩家進入游戲后,將有對本游戲如何操作的友情提示。{{}KillTimer();}*左邊為游戲面板分:下一個形狀提示框、速度框和計分框 3.3重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設(shè)計1)定義方塊形狀:intarrXY[8];};/*保存某一形狀信息的結(jié)構(gòu)體*/{口口口口口口口口口口口口口口口口2},3},0},口口口口口口口口口口口口口口口口{0x44,0xc0,MAGENTA,5},{0x8e,0x0,MAGENTA,6},{0xc8,0x80,MAGENTA,7}, {0xe2,0x0,MAGENTA,4},口口口口口口口口口口口口口口口口口口口口口口口口 xfx,RED,16},E}2)定義游戲的主界面:寬10、高20的游戲板d(2)玩家進行游戲時,需要對游戲界面進行初始化工作。此代碼被main()函******************************************************分別表示縱橫方向上方塊的個數(shù)(以方塊為單位)*****************************************************關(guān)系見下圖 入歡迎界win()初始化圖形模式設(shè)置新的時鐘中斷id開始游戲恢復原來的時鐘KillTimer()關(guān)閉圖形模型返回到主菜單處理在游戲中的各種事件退出程序eftintintxintyint)HandleUp(int*,int*x,int*y)KillLine(int)int,int)lintKillLine(int)游戲是否結(jié)束—— lTimer數(shù)(句柄)調(diào)用(*oldtimer)()在坐標(x,y)(sx,sy)處繪標(x,y)處鍵(旋轉(zhuǎn)鍵)*y)數(shù)voidKillLine(inty)tKillLinesinty 調(diào)用的函數(shù)用函數(shù)—4.運行效果— 5.源代碼詳解//游戲窗口//定義全局變量inta/標記游戲屏幕的圖案:2,1,0分別表示該位置為游戲邊框、方塊、無圖案;初始化為無圖案charshape[10][4]={"□","■","○","●","☆","★","

","◆","△","▲"};//聲明俄羅斯方塊的結(jié)構(gòu)體{tx};//標記方塊類型的序號//下一個俄羅斯方塊類型的序號//俄羅斯方塊移動的速度//產(chǎn)生俄羅斯方塊的個數(shù)//游戲的分數(shù)//游戲的等級//函數(shù)原型聲明//光標移到指定位置//制作游戲窗口//隨機產(chǎn)生方塊類型的序號//制作俄羅斯方塊//打印俄羅斯方塊//清除俄羅斯方塊的痕跡 //判斷是否能移動,返回值為1,能移動,否則,不動//判斷是否滿行,并刪除滿行的俄羅斯方塊//開始游戲{tt{}printf("請輸入形狀編號");//制作游戲窗口//開始游戲}/******光標移到指定位**************************************************************/{pos.X=x;//橫坐標posYy//縱坐標}/******制作游戲窗******************************************************************/{printf("俄羅斯方塊");置口 printf("**********下一個方塊:");printf("**********");printf");printf("空格:暫停游戲");printf("Esc:退出游戲");ameYprintf("╗");printf("╝");{printf("═");//打印上橫框}{printf("═");//打印下橫框}{aFrameX][FrameY+i]=2;//記住左豎框有圖案}{}}/******制作俄羅斯方塊 ********************************************************************/{a[tetris->x][tetris->y]=b[0];//中心方塊位置的圖形狀態(tài):1-有,0-無g{{}T{}{b }Z{}Z{}{b }{}{}{}e e{}}}//******判斷是否可動*************************************************************************/{if(a[tetris->x][tetris->y]!=0)//當中心方塊位置上有圖案時,返回值為0,即不可移動{}{if(//當為田字方塊且除中心方塊位置外,其他"口"字方塊位置上無圖案時,返回值為1,tetrisflagatetris>x][tetris->y-1]==0&&//或為直線方塊且除中心方塊位置外,其他"口"字方塊位置上無圖案時,返回值為1,即(tetris->flag==2&&(a[tetris->x-2][tetris->y]==0&&tetrisflagatetris>x][tetris->y-1]==0&&(tetris->flag==4&&(a[tetris->x-2][tetris->y]==0&&tetrisflagatetris>x][tetris->y-1]==0&&tetrisflagatetris>x][tetris->y-1]==0&&tetrisflagatetris>x][tetris->y-1]==0&&(tetris->flag==8&&(a[tetris->x][tetris->y+1]==0&&tetrisflagatetris>x][tetris->y-1]==0&&tetrisflagatetrisxtetrisy&& tetrisflag&(a[tetris->x-2][tetris->y]==0&&tetrisflag&(a[tetris->x-2][tetris->y]==0&&tetrisflagatetrisx[tetris->y+1]==0&&tetrisflag&(a[tetris->x-2][tetris->y]==0&&tetrisflag&(a[tetris->x-2][tetris->y]==0&&{}}}/******隨機產(chǎn)生俄羅斯方塊類型的序號**********************************************************/{{nd}}/******打印俄羅斯方塊**********************************************************************/{for(i=0;i<4;i++){b[i]=1;//數(shù)組b[4]的每個元素的值都為1} {syj{if(a[i][j]==1&&j>FrameY){}}}//打印菜單信息}/******清除俄羅斯方塊的痕跡****************************************************************/{for(i=0;i<4;i++){bi//數(shù)組b[4]的每個元素的值都為0}{syj{if(a[i][j]==0&&j>FrameY){printf("");//清除方塊}}}}/******判斷是否滿行并刪除滿行的俄羅斯方塊****************************************************/ intk,del_count=0;//分別用于記錄某行方塊的個數(shù)和刪除方塊的行數(shù)的變量{{if(a[i][j]==1)//豎坐標依次從下往上,橫坐標依次由左至右判斷是否滿行{k++;//記錄此行方塊的個數(shù){{//刪除滿行的方塊a[k][j]=0;printf("");}{//如果刪除行以上的位置有方塊,則先清除,再將方塊下移一個位置{if(a[i][k]==1){a[i][k]=0;printf("");a[i][k+1]=1;}}}j++;//方塊下移后,重新判斷刪除行是否滿行}}}} }}/******開始游戲******************************************************************************/{structTetrist,*tetris=&t;//定義結(jié)構(gòu)體的指針并指向結(jié)構(gòu)體變量ch{//循環(huán)產(chǎn)生方塊,直至游戲結(jié)束getflagtetris的序號//打印下一個俄羅斯方塊的圖形(右邊窗口){//控制方塊方向,直至方塊不再下移strisxif(kbhit()){//判斷是否有鍵盤輸入,有則用ch↓接收ifch//按←鍵則向左動,中心橫坐標減2{}{//按→鍵則向右動,中心橫坐標加2} {{}{}{}{}{}}if(ch==32)

溫馨提示

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

評論

0/150

提交評論