俄羅斯方塊實(shí)習(xí)報(bào)告_第1頁
俄羅斯方塊實(shí)習(xí)報(bào)告_第2頁
俄羅斯方塊實(shí)習(xí)報(bào)告_第3頁
俄羅斯方塊實(shí)習(xí)報(bào)告_第4頁
俄羅斯方塊實(shí)習(xí)報(bào)告_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)實(shí)習(xí)報(bào)告 姓名:劉天班級(jí): 2010211114學(xué)號(hào): 10210417小班序號(hào):14指導(dǎo)老師:丘廣暉題目:俄羅斯方塊 俄羅斯方塊實(shí)驗(yàn)報(bào)告一功能說明1.1總體功能說明 本程序主要是用VC6.0編程軟件通過Windows控制臺(tái),實(shí)現(xiàn)俄羅斯方塊這一游戲。本程序?qū)崿F(xiàn)了俄羅斯方塊的隨機(jī)產(chǎn)生及移動(dòng)等,玩家在進(jìn)入游戲界面后,可以通過鍵盤操作這個(gè)游戲。在游戲界面右邊,寫有玩家分?jǐn)?shù)和一定的操作說明,同時(shí)內(nèi)部也有暫停和退出的設(shè)置,在玩家疲憊時(shí),可隨時(shí)停止游戲。1.2用戶界面(1)歡迎界面(2)游戲界面(3)結(jié)束界面1.3使用方法 玩家可通過鍵盤的W、S、A、D鍵分別控制方塊的上下左右,暫停鍵是E,之后可按

2、任意鍵繼續(xù)游戲,退出鍵則是Q。邊框右側(cè)有下一個(gè)方塊的預(yù)告。二程序設(shè)計(jì)說明2.1 總體設(shè)計(jì)框架C+程序執(zhí)行流程(總流程圖):開 始 定義一些變量,并將部分變量初始化定義界面函數(shù),旋轉(zhuǎn)函數(shù),移動(dòng)函數(shù)等進(jìn)入歡迎界面NO按下任意鍵進(jìn)入游戲?YES 進(jìn)入游戲界面停留在游戲界面按下暫停按鈕?YESNO 按下退出按鈕?結(jié)束畫面YES2.2 關(guān)鍵算法描述bool table1523=0; 繪制操作面板;bool menu(); 設(shè)定游戲的初始界面(歡迎界面);void spin(); 決定方塊的旋轉(zhuǎn);TurnLeft()、TurnRight()、TurnDown()則是俄羅斯方塊移動(dòng)方向的判定; typene

3、xt=rand()%7; 隨機(jī)數(shù)的產(chǎn)生,決定了方塊的形狀; while(1); 循環(huán)的開始;if(kbhit(); 上下左右控制的判定;2.3 程序設(shè)計(jì)的難點(diǎn)和關(guān)鍵點(diǎn)一、怎樣設(shè)置方塊的狀態(tài),變化等;二、怎樣使將要產(chǎn)生的方塊與預(yù)示方塊相同;三、方塊下落時(shí)如何判定下方已存在方塊,從而使這個(gè)方塊不在下落;四、消行的實(shí)現(xiàn)。2.4 調(diào)試的方法調(diào)試中多采用斷點(diǎn)調(diào)試單步執(zhí)行的方法來查看和改正錯(cuò)誤。2.5 程序性能評(píng)價(jià)優(yōu)點(diǎn):1、 游戲運(yùn)行流暢,整體較為穩(wěn)定,不會(huì)因?yàn)橥婕业恼`操作而出現(xiàn)停滯;2、 游戲說明簡單明確,上手容易;3、 采用模塊化編程,多個(gè)文件組成整個(gè)工程;4、 編碼中的變量、函數(shù)等名稱合理而清楚,一

4、目了然;不足:1、 某些細(xì)節(jié)上還不夠精致,可能還存在bug;2、 視覺效果一般。3、 程序代碼的格式還不夠工整,有待提高。4、 沒有多種界面風(fēng)格,沒有等級(jí)系統(tǒng),不夠人性化。三心得體會(huì)從一開始的手無足措到一步步的攻克困難,從一開始的茫然停滯到如今的清晰明朗,小學(xué)期在時(shí)間不知不覺的流逝中,就這樣結(jié)束了。俄羅斯方塊從可以隨機(jī)出現(xiàn),到可以自動(dòng)下落,從左右移動(dòng),到可以自動(dòng)旋轉(zhuǎn),消行,加分 看著一個(gè)個(gè)下落的方塊,興奮的心情真的難以用語言描述?;貞浿W(xué)期的一幕幕,我慢慢的對(duì)編程產(chǎn)生了強(qiáng)烈的興趣,同時(shí),也有了把它做好的信心和決心。我相信,我可以越做越好。附代碼:#include"colorCons

5、ole.h"#include <time.h>#include <stdlib.h>#include<windows.h>#include<conio.h>HANDLE handle;WORD wColors2;int x1=1,x2=1,x3=1,x4=1;/int y1=1,y2=1,y3=1,y4=1;/方塊坐標(biāo)int type,typenext,typetemp=0;/目前方塊和下一個(gè)方塊的產(chǎn)生int score=0,speed=10,times=0,level=0;/得分和速度等int key;/按鍵char scorech1

6、0=0;bool flag=1;/生成新方塊判定bool start=1;bool table1523=0; /繪制操作面板bool menu() /游戲的初始界面 (歡迎界面)for(int o=1;o<22;o+)textout(handle,2,o,wColors,1," ");for(int i=21;i>0;i-)for(int j=1;j<14;j+)tableij=0;wColors0=FOREGROUND_BLUE|FOREGROUND_GREEN;textout(handle,6,5,wColors,1,"歡迎進(jìn)入")

7、;textout(handle,10,6,wColors,1,"俄羅斯方塊");textout(handle,6,10,wColors,1,"請按任意鍵進(jìn)入游戲");while(start)if(kbhit()start=0; textout(handle,6,5,wColors,1," ");textout(handle,10,6,wColors,1," ");textout(handle,6,10,wColors,1," "); return 0;void erase()/清除textout

8、(handle,x1*2,y1,wColors,1," ");textout(handle,x2*2,y2,wColors,1," ");textout(handle,x3*2,y3,wColors,1," ");textout(handle,x4*2,y4,wColors,1," ");void rewrite()/出現(xiàn)textout(handle,x1*2,y1,wColors,1,"");textout(handle,x2*2,y2,wColors,1,"");text

9、out(handle,x3*2,y3,wColors,1,"");textout(handle,x4*2,y4,wColors,1,"");void spin()/旋轉(zhuǎn)switch(type)case 0:if(typetemp=0)if(tabley2+1x2|tabley2+2x2|tabley2+3x2)=0)x1=x2;x3=x2;x4=x2;y1=y2+1;y3=y2+2;y4=y2+3;typetemp=(typetemp+1)%2;elseif(tabley2x2-1|tabley2x2+1|tabley2x2+2)=0)y1=y2;y3=

10、y2;y4=y2;x1=x2-1;x3=x2+1;x4=x2+2;typetemp=(typetemp+1)%2;break;case 1:break;case 2:switch(typetemp)case 0:if(tabley4x1|tabley4+1x4)=0)y1+;x3=x4;y3=y4+1;typetemp=(typetemp+1)%4;break;case 1:if(tabley4x4+1)=0)y3=y4;x3=x4+1;typetemp=(typetemp+1)%4;break;case 2:if(tabley4+1x4)=0)x1=x4;y1=y4+1;typetemp=(

11、typetemp+1)%4;break;case 3:if(tabley2x2-1|tabley2x2+1)=0)y1=y2;y3=y2;x1=x2-1;x3=x2+1;typetemp=(typetemp+1)%4;break;break;case 3:switch(typetemp)case 0:if(tabley2+1x2|tabley2+2x2)=0)x3=x2;y3=y2+1;x4=x2;y4=y2+2;typetemp=(typetemp+1)%4;break;case 1:if(tabley3x3-1|tabley3x3+1|tabley3-1x3+1)=0)x4=x3-1;y4

12、=y3;x1=x3+1;y1=y3;x2=x3+1;y2=y3-1;typetemp=(typetemp+1)%4;break;case 2:if(tabley4-1x4|tabley4+1x4|tabley4+1x4+1)=0)x1=x4;y1=y4-1;x2=x4;y2=y4+1;x3=x4+1;y3=y4+1;typetemp=(typetemp+1)%4;break;case 3:if(tabley1x1+1|tabley1x1+2)=0)x2=x1+1;y2=y1;x3=x1+2;y3=y1;typetemp=(typetemp+1)%4;break;break;case 4:swi

13、tch(typetemp)case 0:if(tabley4+1x4|tabley4+1x4-1)=0)x2=x4;y2=y4+1;x1=x4-1;y1=y4+1;typetemp=(typetemp+1)%4;break;case 1:if(tabley4x4-1|tabley4x4-2|tabley4-1x4-2)=0)y3=y4;x3=x4-1;y2=y4;x2=x4-2;y1=y4-1;x1=x4-2;typetemp=(typetemp+1)%4;break;case 2:if(tabley1x1+1|tabley2+1x2)=0)y2=y1;x2=x1+1;y3=y1+1;x3=x

14、1;y4=y1+2;x4=x1;typetemp=(typetemp+1)%4;break;case 3:if(tabley2x2+1|tabley2+1x2+1)=0)y3=y2;x3=x2+1;y4=y2+1;x4=x2+1;typetemp=(typetemp+1)%4;break;break;case 5:if(typetemp=0)if(tabley3x3-1|tabley3+1x3-1)=0)x1=x3-1;y1=y3;x4=x3-1;y4=y3+1;typetemp=(typetemp+1)%2;elseif(tabley2x2-1|tabley3x3+1)=0)x1=x2-1;

15、y1=y2;x4=x3+1;y4=y3;typetemp=(typetemp+1)%2;break;case 6:if(typetemp=0)if(tabley4x4+1|tabley4+1x4+1)=0)x2=x4+1;y2=y4;x3=x4+1;y3=y4+1;typetemp=(typetemp+1)%2;elseif(tabley4x4-1|tabley1x1+1)=0)x2=x1+1;y2=y1;x3=x4-1;y3=y4;typetemp=(typetemp+1)%2;break; bool TurnLeft()/左移判定if(tabley1x1-1|tabley2x2-1|tab

16、ley3x3-1|tabley4x4-1)=0) return(true);else return(false);bool TurnRight()/右移判定if(tabley1x1+1|tabley2x2+1|tabley3x3+1|tabley4x4+1)=0)return 1;else return 0;bool TurnDown()/下移判定if(tabley1+1x1|tabley2+1x2|tabley3+1x3|tabley4+1x4)=0)return 1;else return 0;/int main()handle=initiate();wColors0=FOREGROUND

17、_RED|FOREGROUND_BLUE|FOREGROUND_GREEN; wColors1=FOREGROUND_RED; textout(handle,36,15,wColors,1,"操作說明:");textout(handle,36,16,wColors,1,"左: A");textout(handle,36,17,wColors,1,"右: D");textout(handle,36,18,wColors,1,"加速下落:S");textout(handle,36,19,wColors,1,"

18、翻轉(zhuǎn): W");textout(handle,36,20,wColors,1,"暫停: E");textout(handle,36,21,wColors,1,"退出: Q");textout(handle,36,4,wColors,1,"當(dāng)前分?jǐn)?shù):");textout(handle,36,8,wColors,1,"下一塊:");srand(time(NULL);textout(handle,0,0,wColors+1,1,"");textout(handle,0,22,wColors+

19、1,1,"");for(int k=1;k<22;k+)textout(handle,0,k,wColors+1,1,"|");textout(handle,28,k,wColors+1,1,"|");wColors0=FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED;for(int m=1;m<23;m+)/table初始化tablem0=1;tablem14=1;for(int n=0;n<15;n+)table22n=1;if(menu()return 0;type

20、next=rand()%7; while(1) / 循環(huán)if(flag)/下一個(gè)方塊flag=0;typetemp=0;type=typenext;switch(type) case 0:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=8;y4=1;break; case 1:x1=6;y1=1;x2=7;y2=1;x3=6;y3=2;x4=7;y4=2;break;case 2:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=6;y4=2;break;case 3:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=5;y4=2;break;

21、case 4:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=7;y4=2;break;case 5:x1=5;y1=1;x2=6;y2=1;x3=6;y3=2;x4=7;y4=2;break;case 6:x1=6;y1=1;x2=7;y2=1;x3=5;y3=2;x4=6;y4=2;break;rewrite();typenext=rand()%7;switch(typenext)/下一塊預(yù)覽 case 0:textout(handle,36,10,wColors,1,"");textout(handle,36,11,wColors,1,"

22、");break;case 1:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 2:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 3:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wC

23、olors,1," ");break;case 4:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 5:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 6:textout(handle,36,10,wColors,1," ");textout(

24、handle,36,11,wColors,1," ");break;if(kbhit()/上下左右按鍵控制key=getch();switch(key) case 100:/右case 68: if(TurnRight() erase(); x1+;x2+;x3+;x4+;rewrite();break; case 97:/左 case 65:if(TurnLeft()erase();x1-;x2-;x3-;x4-;rewrite();break;case 115:/下 case 83:if(TurnDown() erase();y1+;y2+;y3+;y4+;rewrit

25、e();break; case 119:/上 case 87:erase();spin();rewrite();break; case 69:/暫停 case 101:wColors0=FOREGROUND_RED;textout(handle,0,23,wColors,1," 暫停中. 按任意鍵繼續(xù) ");key=getch();wColors0=FOREGROUND_BLUE|FOREGROUND_GREEN;textout(handle,0,23,wColors,1," ");break; case 113:/退出 case 81:return 0;Sleep(50);times=(times+1)%speed;if(times=0)/自動(dòng)下移判定if(TurnDown()/下移erase(); y1+;y2+;y3+;y4+; rewrite();else /不下移itoa(score,scorech,10);textout(hand

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論