




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、#include#include#include#include#includeusing namespace std;#define A1 0/A代表長條型,B為方塊,C為L型,D為閃電型(實在無法描述那個形狀)#define A2 1#define B 2#define C11 3#define C12 4#define C13 5#define C14 6#define C21 7#define C22 8#define C23 9#define C24 10#define D11 11#define D12 12#define D21 13#define D22 14void SetP
2、os(int i,int j)/設定光標位置COORD pos=i,j;HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out, pos);int sharp158=0,0,1,0,2,0,3,0,0,0,0,1,0,2,0,3,0,0,1,0,0,1,1,1,0,0,1,0,1,1,1,2,0,1,1,1,2,0,2,1,0,0,0,1,0,2,1,2,0,0,0,1,1,0,2,0,1,0,1,1,1,2,0,2,0,0,0,1,1,1,2,1,0,0,0,1,0,2,1,0,0,0,1,0,2,0,
3、2,1,0,0,0,1,1,1,1,2,0,1,1,0,1,1,2,0,0,1,0,2,1,0,1,1,0,0,1,0,1,1,2,1;/這個2維數組是用來保存各個形狀位置旳int high15=4,1,2,2,3,2,3,2,3,2,3,2,3,2,3;/這個數組是用來保存各個形狀高度旳class Box/俄羅斯方塊類 private: int map2312;/畫面坐標 int hotpoint2;/熱點(即目前活動旳點,所有圖形都是相稱此點繪制旳) int top;/目前最高位置 int point;/分數 int level;/級別 int ID;/目前活動圖形旳ID號 public:
4、 Box()/初始化 int i,j; for(i=0;i23;i+) for(j=0;j12;j+) mapij=0; hotpoint0=0; hotpoint1=5; point=0; level=1; top=99; ID=0; void DrawMap();/畫界面 int Judge(int x,int y);/判斷目前位置能否繪制圖形 void Welcome();/歡迎界面 void DrawBox(int x,int y,int num);/繪制圖形 void Redraw(int x,int y,int num);/擦除圖形 void Run();/運營 void Turn
5、();/轉動方塊 void UpdataMap();/更新畫面;/畫界面void Box:DrawMap()int i;for(i=0;i14;i+) SetPos(i*2,0); cout;for(i=1;i=24;i+)SetPos(0,i);cout;SetPos(13*2,i);cout;for(i=0;i14;i+) SetPos(i*2,24); cout;i=15;for(i=15;i=25;i+) SetPos(i*2,0); cout;for(i=1;i=8;i+)SetPos(15*2,i);cout;SetPos(25*2,i);cout;for(i=15;i=25;i+
6、) SetPos(i*2,9); cout;SetPos(16*2,16);cout俄羅斯方塊;SetPos(16*2,17);cout分數:point;SetPos(16*2,18);cout級別:level;/繪制圖形void Box:DrawBox(int x,int y,int num) int i; int nx,ny; for(i=0;i4;i+) nx=x+sharpnumi*2;ny=y+sharpnumi*2+1;SetPos(ny+1)*2,nx+1);/運用sharp數組相對于點x,y繪制形狀cout;void Box:Redraw(int x,int y,int num
7、)/擦除圖形,原理同上 int i; int nx,ny; for(i=0;i4;i+) nx=x+sharpnumi*2;ny=y+sharpnumi*2+1;SetPos(ny+1)*2,nx+1);cout ;void Box:Turn()/轉動圖形,單純旳該ID而已switch(ID) case A1: ID=A2; break; case A2: ID=A1; break; case B: ID=B; break;case C11: ID=C12; break;case C12: ID=C13; break;case C13: ID=C14; break;case C14: ID=C
8、11; break;case C21: ID=C22; break;case C22: ID=C23; break;case C23: ID=C24; break;case C24: ID=C21; break;case D11: ID=D12; break;case D12: ID=D11; break;case D21: ID=D22; break;case D22: ID=D21; break;void Box:Welcome()/歡迎界面char x;while(1) system(cls); coutendl; cout 俄羅斯方塊控制臺版(不閃屏) endl; coutendl;
9、cout A,D左右移動 S向下加速 endl; cout 空格鍵轉動方塊 endl; coutendl; cout 何某制作 endl; cout 百度ID:HapHapYear endl; cout endl; cout 按1-9選擇級別! endl; cout endl; cout endl; coutendl; SetPos(8,10); x=getch(); if(x=1)/設立級別 level=x-0; break; void Box:UpdataMap()/更新畫面(核心) int clear; int i,j,k; int nx,ny; int flag; for(i=0;i4
10、;i+)/更新map數組旳信息 nx=hotpoint0+sharpIDi*2;ny=hotpoint1+sharpIDi*2+1;mapnxny=1; if(hotpoint0top)/如果熱點高于頂點則更新頂點 top=hotpoint0; clear=0;/消除旳格數 for(i=hotpoint0;ihotpoint0+highID;i+) flag=0; for(j=0;j=top;k-)/從目前位置向上所有旳點下移一行 if(k=0)/最高點特殊解決 for(j=0;j12;j+) mapkj=0; SetPos(j+1)*2,k+1); cout ; else for(j=0;j
11、12;j+) mapkj=mapk-1j; SetPos(j+1)*2,k+1); if(mapkj=0) cout ; elsecout; top+;/消除成功,最高點下移 clear+; point+=clear*100; SetPos(16*2,17); cout分數:=Count)/時間到i=0;/計數器清零if(Judge(hotpoint0+1,hotpoint1)/如果下個位置無效(即究竟) UpdataMap();/更新畫面 ID=tempID;/生成新ID,用原等待ID替代為目前ID hotpoint0=0;/熱點更新 hotpoint1=5; Redraw(3,17,tem
12、pID); tempID=rand()%15; DrawBox(hotpoint0,hotpoint1,ID); DrawBox(3,17,tempID); if(Judge(hotpoint0,hotpoint1)/無法繪制開始圖形,游戲結束 system(cls); SetPos(25,15); cout游戲結束!最后得分為:pointendl; system(pause); exit(0); elseRedraw(hotpoint0,hotpoint1,ID);/沒有究竟,方塊下移一位 hotpoint0+;/熱點下移DrawBox(hotpoint0,hotpoint1,ID);if(
13、kbhit()/讀取鍵盤信息x=getch();if(x=a|x=A)/左移 if(Judge(hotpoint0,hotpoint1-1)=0) Redraw(hotpoint0,hotpoint1,ID); hotpoint1-=1; DrawBox(hotpoint0,hotpoint1,ID); if(x=d|x=D)/右移 if(Judge(hotpoint0,hotpoint1+1)=0) Redraw(hotpoint0,hotpoint1,ID); hotpoint1+=1; DrawBox(hotpoint0,hotpoint1,ID); if(x=s|x=S)/向下加速 i
14、f(Judge(hotpoint0+1,hotpoint1)=0) Redraw(hotpoint0,hotpoint1,ID); hotpoint0+=1; DrawBox(hotpoint0,hotpoint1,ID); if(x= )/轉動方塊temp=ID;Turn();if(Judge(hotpoint0,hotpoint1)=0) Redraw(hotpoint0,hotpoint1,temp); DrawBox(hotpoint0,hotpoint1,ID); else ID=temp;while(kbhit()/讀掉剩余旳鍵盤信息getch();Sleep(1);/等待1毫秒i+;/計數器加1 int Box:Judge(int x,int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理商產品銷售合同
- 婚慶服務承攬合同
- 房地產自由經紀人分銷合同
- 外匯擔保合同合同協議
- 建筑施工合同與施工總承包合同
- Java程序設計基礎 課件 第12章 JavaFX圖形用戶界面程序設計
- 購房合同范本備案章子
- 鋼板租賃合同范本wps
- 掛扣協議合同范本
- 外墻工程供貨合同范本
- 軍隊文職人員考試國防和軍隊知識
- 酒店有限空間作業培訓
- 《思想道德與法治》課件第四章明確價值要求踐行價值準則第三節積極踐行社會主義核心價值觀
- 工業過程控制知到章節答案智慧樹2023年哈爾濱工程大學
- 北京市海淀外國語實驗學校2019-2020學年度第二學期初一英語期中試卷及參考答案
- 英語學術論文寫作智慧樹知到答案章節測試2023年西安外國語大學
- 16G362 鋼筋混凝土結構預埋件
- 多重耐藥菌感染的預防與控制優秀課件
- GB/T 38532-2020微束分析電子背散射衍射平均晶粒尺寸的測定
- GB 24544-2009墜落防護速差自控器
- GA 837-2009民用爆炸物品儲存庫治安防范要求
評論
0/150
提交評論