版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
..C/C++精品視頻集這是我收集的部分C/C++精品視頻集.其中部分下載地址:2015-04-13C語言精髓所在——指針的藝術(shù)鏈接:://pan.baidu/s/1hqy78aS密碼:nivq2015-04-16C++打造酷炫鼠標-Vico老師.鏈接:://pan.baidu/s/1c0B6X7y密碼:5j3z2015-04-24C++開發(fā)最牛貪吃蛇游戲------盛大內(nèi)部核心技術(shù)u/s/1bn6P6Q7密碼:1n8e視頻太多沒一一上傳.如果你需要更多可以加QQ:1329938469下面是《《坦克大戰(zhàn)》》和《《俄羅斯方塊》》坦克大戰(zhàn):〔2頁到18頁#include<iostream>#include<stdlib.h>#include<windows.h>#include<time.h>#include<conio.h>usingnamespacestd;HANDLEMutex=CreateMutex<NULL,FALSE,NULL>;//互斥對象intGameOver=0;intlevel=0;intmap[23][23];//坦克種類,Normal為玩家坦克#defineNormal0#defineRed1#defineBlue2#defineGreen3//方向的宏定義#defineUp0#defineDown1#defineLeft2#defineRight3//地圖標記的宏定義#defineEmpty0#definePlayer1#definePlayerBullet2#defineEnemyBullet3#defineEnemy4intKill;intKillRed;intKillGreen;intEnemyExist;voidSetPos<inti,intj>//設(shè)定光標位置{ COORDpos={i,j}; HANDLEOut=GetStdHandle<STD_OUTPUT_HANDLE>;SetConsoleCursorPosition<Out,pos>;}voidHideCurSor<void>//隱藏光標{ CONSOLE_CURSOR_INFOinfo={1,0}; HANDLEOut=GetStdHandle<STD_OUTPUT_HANDLE>; SetConsoleCursorInfo<Out,&info>;}intsharp[4][12]={ {0,1,1,0,1,1,1,2,2,0,2,2}, {0,0,0,2,1,0,1,1,1,2,2,1}, {0,1,0,2,1,0,1,1,2,1,2,2}, {0,0,0,1,1,1,1,2,2,0,2,1},};//此數(shù)組用來保存坦克各個方向的形狀信息DWORDWINAPIBulletfly<LPVOIDlpParameter>;//子彈函數(shù)申明voidUpdata<>;//更新界面信息函數(shù)申明classTank//坦克類{private: intDirection;//方向 inthotpoint[2];//活動點 intSpeed;//速度 intFirePower;//火力public: Tank<intdir,inthot1,inthot2,inttyp,intspe,intfirepow>//構(gòu)造函數(shù) { Direction=dir; hotpoint[0]=hot1; hotpoint[1]=hot2; Type=typ; Speed=spe; FirePower=firepow; } intType;//坦克的種類〔詳見宏定義 intID;//坦克在MAP中的標記〔詳見宏定義 intFireEnable;//是否可以開火 intLife;//生命值 voidRunning<>;//運行函數(shù) intJudge<intx,inty,intID>;//判斷是否可以繪制坦克 voidDrawTank<>;//重繪坦克 voidRedraw<>;//擦除坦克 intGetSpeed<>//獲取速度 { returnSpeed; } intGetFire<>//獲取火力 { returnFirePower; } intGetDirection<>//獲取方向 { returnDirection; } intGetHotX<>//獲取活動點坐標 { returnhotpoint[0]; } intGetHotY<> { returnhotpoint[1]; } voidIncreaseFire<>//火力+ { FirePower++; } voidIncreaseSpeed<>//速度+ { Speed++; } voidChangeDirection<intnewD>//改變方向 { Direction=newD; } voidChangePos<intx,inty>//改變活動點 { hotpoint[0]=x; hotpoint[1]=y; }};Tankplayer<Right,0,0,Normal,1,1>;//玩家Tankenemy<Left,20,0,Red,1,1>;//敵人voidTank::DrawTank<>//繪制坦克{ inti; intnx,ny; if<Type==Red> SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED>; elseif<Type==Blue> SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_BLUE>; elseif<Type==Green> SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_GREEN>; elseif<Type==Normal> SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE>; for<i=0;i<6;i++> { nx=hotpoint[0]+sharp[Direction][i*2]; ny=hotpoint[1]+sharp[Direction][i*2+1]; SetPos<<ny+1>*2,nx+1>;//利用sharp數(shù)組相對于點x,y繪制形狀 map[nx][ny]=ID; cout<<"■"; }}voidTank::Redraw<>//擦除坦克,原理同上{ inti; intnx,ny; for<i=0;i<6;i++> { nx=hotpoint[0]+sharp[Direction][i*2]; ny=hotpoint[1]+sharp[Direction][i*2+1]; map[nx][ny]=Empty; SetPos<<ny+1>*2,nx+1>; cout<<""; }}intTank::Judge<intx,inty,intdir>//判斷當前是否可以繪制坦克{ inti; intnx,ny; for<i=0;i<6;i++> { nx=x+sharp[dir][i*2]; ny=y+sharp[dir][i*2+1]; if<nx<0||nx>=23||ny<0||ny>=23||map[nx][ny]!=Empty>//不能繪制,返回1 return1; } return0;}voidTank::Running<>//坦克運行函數(shù){ intnewD; //坦克的運行 while<1> { if<Life==0> { EnemyExist=0;//敵人不存在 return; } if<GameOver==1> return; if<FireEnable==1&&GameOver==0>//如果可以開火 { WaitForSingleObject<Mutex,INFINITE>;//線程擁有互斥對象 FireEnable=0;//設(shè)為不可開火 HANDLEbullet=CreateThread<NULL,0,Bulletfly,&ID,0,NULL>;//創(chuàng)建子彈線程 CloseHandle<bullet>; ReleaseMutex<Mutex>;//釋放互斥對象 Sleep<100>; } WaitForSingleObject<Mutex,INFINITE>;//線程擁有互斥對象 srand<<int>time<0>>; newD=rand<>%4; if<newD==Up>//隨機出新的方向并重新繪制坦克 { Redraw<>; if<Judge<hotpoint[0]-1,hotpoint[1],newD>==0> { hotpoint[0]--; Direction=newD; } else { if<Judge<hotpoint[0],hotpoint[1],newD>==0> Direction=newD;} } elseif<newD==Down> { Redraw<>; if<Judge<hotpoint[0]+1,hotpoint[1],newD>==0> { hotpoint[0]++; Direction=newD; } else { if<Judge<hotpoint[0],hotpoint[1],newD>==0> Direction=newD;} } elseif<newD==Left> { Redraw<>; if<Judge<hotpoint[0],hotpoint[1]-1,newD>==0> { hotpoint[1]--; Direction=newD; } else { if<Judge<hotpoint[0],hotpoint[1],newD>==0> Direction=newD;} } elseif<newD==Right> { Redraw<>; if<Judge<hotpoint[0],hotpoint[1]+1,newD>==0> { hotpoint[1]++; Direction=newD; } else { if<Judge<hotpoint[0],hotpoint[1],newD>==0> Direction=newD;} } if<GameOver==0&&Life!=0> DrawTank<>; ReleaseMutex<Mutex>;//釋放互斥對象 Sleep<500-80*Speed>; }}/*********************子彈線程函數(shù)*******************/DWORDWINAPIBulletfly<LPVOIDlpParameter>{ int*ID=<int*>lpParameter;//ID用來獲取發(fā)射子彈坦克的ID intPos[2];//子彈活動點 intdirection; intSpeed; inttype; inthit=0;//擊中標記 intoldx,oldy;//舊活動點 intflag=0;//子彈是否有移動的標記 if<*ID==Player>//如果是玩家坦克 { type=PlayerBullet; direction=player.GetDirection<>; Speed=player.GetFire<>; Pos[0]=player.GetHotX<>; Pos[1]=player.GetHotY<>; }elseif<*ID==Enemy>//如果是敵人坦克 { type=EnemyBullet; direction=enemy.GetDirection<>; Speed=enemy.GetFire<>; Pos[0]=enemy.GetHotX<>; Pos[1]=enemy.GetHotY<>; } if<direction==Up>//根據(jù)坦克的位置和方向確定子彈的初始坐標 { Pos[0]--; Pos[1]++; } elseif<direction==Down> { Pos[0]+=3; Pos[1]++; } elseif<direction==Left> { Pos[0]++; Pos[1]--; } elseif<direction==Right> { Pos[0]++; Pos[1]+=3; } //子彈的運行 while<1> { WaitForSingleObject<Mutex,INFINITE>;//這個不再注釋了。。。。。 if<flag==1&&hit!=1>//擦除原位置 { map[oldx][oldy]=Empty; SetPos<<oldy+1>*2,oldx+1>; cout<<""; } if<GameOver==1> return0; if<hit==1||Pos[0]<0||Pos[0]>22||Pos[1]<0||Pos[1]>22>//如果擊中 { ReleaseMutex<Mutex>; Sleep<500>; if<type==PlayerBullet> player.FireEnable=1; elseif<type=EnemyBullet> enemy.FireEnable=1; break; } switch<map[Pos[0]][Pos[1]]>//子彈經(jīng)過的MAP的標記 { map[Pos[0]][Pos[1]]=type; SetPos<<Pos[1]+1>*2,Pos[0]+1>; SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE>; cout<<"■"; break; if<type!=PlayerBullet> { player.Life--;//生命減少 if<player.Life<=0> GameOver=1; } Updata<>; hit=1; break; if<type!=PlayerBullet> hit=1; else { hit=1; Kill++; if<Kill%20==0&&player.Life<5>//擊殺數(shù)++ player.Life++; if<enemy.Type==Red>//如果擊殺紅坦克 { KillRed++; if<KillRed%10==0&&player.GetFire<><5> player.IncreaseFire<>; } if<enemy.Type==Green>///如果擊殺綠坦克 { KillGreen++; if<KillGreen%10==0&&player.GetSpeed<><5> player.IncreaseSpeed<>; } enemy.Redraw<>;//擦除敵人 enemy.Life=0;//敵人死亡 } Updata<>; break; } oldx=Pos[0]; oldy=Pos[1]; if<direction==Up>//子彈移動 Pos[0]--; elseif<direction==Down> Pos[0]++; elseif<direction==Left> Pos[1]--; elseif<direction==Right> Pos[1]++; ReleaseMutex<Mutex>; flag=1; Sleep<60-10*Speed>;} return0;}/*************************敵人線程函數(shù)***************************/DWORDWINAPITankRuning<LPVOIDlpParameter>{ Sleep<400>; intPos; intStart[2];//敵人起始地址 inttyp; intfire; intspe; while<1> { if<GameOver==1> return0; srand<<int>time<0>>;//隨機出敵人起始地址 Pos=rand<>%4; if<Pos==0> { Start[0]=2; Start[0]=2; } elseif<Pos==1> { Start[0]=2; Start[1]=18; } elseif<Pos==2> { Start[0]=18; Start[1]=2; } elseif<Pos==3> { Start[0]=18; Start[1]=18; } if<player.Judge<Start[0],Start[1],Down>==0> break; } WaitForSingleObject<Mutex,INFINITE>; srand<<int>time<0>>; typ=rand<>%3+1;//隨機出敵人的種類 if<typ==Blue> { spe=1+level; fire=1+level; } elseif<typ==Red> { spe=1+level; fire=3+level; } elseif<typ==Green> { spe=3+level; fire=1+level; }enemy=Tank<Down,Start[0],Start[1],typ,spe,fire>;//重新生成敵人坦克 enemy.ID=Enemy; enemy.Life=1; enemy.FireEnable=1; ReleaseMutex<Mutex>; enemy.Running<>; return0;}voidInit<>//初始化函數(shù){ Kill=0; KillRed=0; KillGreen=0; player=Tank<Left,0,0,Normal,1,1>; enemy=Tank<Left,0,0,Red,1,1>; player.Life=2; player.FireEnable=1; enemy.Life=0; enemy.FireEnable=1; player.ID=Player; enemy.ID=Enemy; EnemyExist=0;}voidUpdata<>//更新界面信息{ SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE>; inti; SetPos<53,0>; cout<<"生命值:"; SetPos<53,1>; for<i=0;i<5;i++> { if<i<player.Life> cout<<"■"; else cout<<""; } SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_GREEN>; SetPos<53,3>; cout<<"移動速度:"; SetPos<53,4>; for<i=0;i<5;i++> { if<i<player.GetSpeed<>> cout<<"■"; else cout<<""; } SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED>; SetPos<53,5>; cout<<"火力:"; SetPos<53,6>; for<i=0;i<5;i++> { if<i<player.GetFire<>> cout<<"■"; else cout<<""; }SetPos<53,8>; SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE>; cout<<"殺敵數(shù):"<<Kill; SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED>; SetPos<53,9>; cout<<"殺死紅坦克:"<<KillRed; SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_GREEN>; SetPos<53,10>; cout<<"殺死綠坦克:"<<KillGreen;}voidDrawMap<>//畫界面{ SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE>; system<"cls">; inti; for<i=0;i<25;i++> { SetPos<i*2,0>; cout<<"■"; } for<i=1;i<25;i++> { SetPos<0,i>; cout<<"■"; SetPos<24*2,i>; cout<<"■"; } for<i=0;i<25;i++> { SetPos<i*2,24>; cout<<"■"; } Updata<>;}voidWelcome<>//歡迎界面{ intx; system<"cls">; SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE>; SetPos<10,5>; cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; SetPos<10,6>; cout<<"■坦克大戰(zhàn)控制臺版■"; SetPos<10,7>; cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; SetPos<10,8>; cout<<"■方向鍵移動,空格鍵射擊■"; SetPos<10,9>; cout<<"■敵人分為3種,藍色為普通敵人■"; SetPos<10,10>; cout<<"■紅色敵人高射速,綠色敵人高機動性■"; SetPos<10,11>; cout<<"■每殺死10個紅坦克,玩家射速提高<最高五級■"; SetPos<10,12>; cout<<"■每殺死10個綠坦克,玩家移動性提高<最高五級■"; SetPos<10,13>; cout<<"■每殺死20個坦克,玩家生命+1〔最高五格■"; SetPos<10,14>; cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; SetPos<10,15>; cout<<"■何某作〔百度ID:HapHapYear■"; SetPos<10,16>; cout<<"■按1-3選擇難度■"; SetPos<10,17>; cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; while<1> { x=getch<>; if<x<='3'&&x>='1'> break; } level=x-'0'-1;}intmain<>{ Init<>; HideCurSor<>; Welcome<>; DrawMap<>; HANDLEtemp; intnewD; player.DrawTank<>; while<GameOver==0> { if<GetAsyncKeyState<VK_UP>>//按鍵上 { WaitForSingleObject<Mutex,INFINITE>; newD=Up; player.Redraw<>; if<player.Judge<player.GetHotX<>-1,player.GetHotY<>,newD>==0>//移動玩家坦克,原理和敵人函數(shù)一樣 { player.ChangePos<player.GetHotX<>-1,player.GetHotY<>>; player.ChangeDirection<newD>; } else { if<player.Judge<player.GetHotX<>,player.GetHotY<>,newD>==0> player.ChangeDirection<newD>;} if<GameOver==0> player.DrawTank<>; ReleaseMutex<Mutex>; Sleep<200-player.GetSpeed<>*20>;//按鍵延遲,決定玩家坦克的速度 } elseif<GetAsyncKeyState<VK_DOWN>>//按鍵下,同上 { WaitForSingleObject<Mutex,INFINITE>; newD=Down; player.Redraw<>; if<player.Judge<player.GetHotX<>+1,player.GetHotY<>,newD>==0> { player.ChangePos<player.GetHotX<>+1,player.GetHotY<>>; player.ChangeDirection<newD>; } else { if<player.Judge<player.GetHotX<>,player.GetHotY<>,newD>==0> player.ChangeDirection<newD>;} if<GameOver==0> player.DrawTank<>; ReleaseMutex<Mutex>; Sleep<200-player.GetSpeed<>*20>; } elseif<GetAsyncKeyState<VK_RIGHT>>//按鍵右,同上 { WaitForSingleObject<Mutex,INFINITE>; newD=Right; player.Redraw<>; if<player.Judge<player.GetHotX<>,player.GetHotY<>+1,newD>==0> { player.ChangePos<player.GetHotX<>,player.GetHotY<>+1>; player.ChangeDirection<newD>; } else { if<player.Judge<player.GetHotX<>,player.GetHotY<>,newD>==0> player.ChangeDirection<newD>;} if<GameOver==0> player.DrawTank<>; ReleaseMutex<Mutex>; Sleep<200-player.GetSpeed<>*20>; } elseif<GetAsyncKeyState<VK_LEFT>>//按鍵左,同上 { WaitForSingleObject<Mutex,INFINITE>; newD=Left; player.Redraw<>; if<player.Judge<player.GetHotX<>,player.GetHotY<>-1,newD>==0> { player.ChangePos<player.GetHotX<>,player.GetHotY<>-1>; player.ChangeDirection<newD>; } else { if<player.Judge<player.GetHotX<>,player.GetHotY<>,newD>==0> player.ChangeDirection<newD>;} if<GameOver==0> player.DrawTank<>; ReleaseMutex<Mutex>; Sleep<110-player.GetSpeed<>*10>; } elseif<GetAsyncKeyState<VK_SPACE>>//按鍵空格,發(fā)射子彈 { WaitForSingleObject<Mutex,INFINITE>; if<player.FireEnable==1>//如果可以發(fā)射 { HANDLEbullet=CreateThread<NULL,0,Bulletfly,&<player.ID>,0,NULL>;//創(chuàng)建玩家子彈進程 CloseHandle<bullet>; player.FireEnable=0; } ReleaseMutex<Mutex>;} if<EnemyExist==0&&GameOver==0>//如果敵人不存在生成新敵人 { WaitForSingleObject<Mutex,INFINITE>; EnemyExist=1; temp=CreateThread<NULL,0,TankRuning,NULL,0,NULL>;//創(chuàng)建敵人線程 CloseHandle<temp>; ReleaseMutex<Mutex>; } } system<"cls">; SetConsoleTextAttribute<GetStdHandle<STD_OUTPUT_HANDLE>,FOREGROUND_INTENSITY|FOREGROUND_BLUE>; SetPos<20,10>; cout<<"游戲結(jié)束"<<endl; SetPos<20,11>; cout<<"殺敵數(shù):"<<Kill; SetPos<20,12>; cout<<"殺死紅坦克"<<KillRed; SetPos<20,13>; cout<<"殺死綠坦克"<<KillGreen<<endl; return0;}俄羅斯方塊〔20頁到28頁#include<iostream>#include<stdlib.h>#include<windows.h>#include<time.h>#include<conio.h>usingnamespacestd;#defineA10//A代表長條型,B為方塊,C為L型,D為閃電型〔實在無法描述那個形狀#defineA21#defineB2#defineC113#defineC124#defineC135#defineC146#defineC217#defineC228#defineC239#defineC2410#defineD1111#defineD1212#defineD2113#defineD2214voidSetPos<inti,intj>//設(shè)定光標位置{ COORDpos={i,j}; HANDLEOut=GetStdHandle<STD_OUTPUT_HANDLE>;SetConsoleCursorPosition<Out,pos>;}intsharp[15][8]={ {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,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維數(shù)組是用來保存各個形狀位置的inthigh[15]={4,1,2,2,3,2,3,2,3,2,3,2,3,2,3};//這個數(shù)組是用來保存各個形狀高度的classBox//俄羅斯方塊類{private: intmap[23][12];//畫面坐標 inthotpoint[2];//熱點〔即當前活動的點,所有圖形都是相當此點繪制的 inttop;//當前最高位置 intpoint;//分數(shù) intlevel;//等級 intID;//當前活動圖形的ID號public: Box<>//初始化 { inti,j; for<i=0;i<23;i++> for<j=0;j<12;j++> map[i][j]=0; hotpoint[0]=0; hotpoint[1]=5; point=0; level=1; top=99; ID=0; } voidDrawMap<>;//畫界面 intJudge<intx,inty>;//判斷當前位置能否繪制圖形 voidWelcome<>;//歡迎界面 voidDrawBox<intx,inty,intnum>;//繪制圖形 voidRedraw<intx,inty,intnum>;//擦除圖形 voidRun<>;//運行 voidTurn<>;//轉(zhuǎn)動方塊 voidUpdataMap<>;//更新畫面};voidBox::DrawMap<>//畫界面{ inti; for<i=0;i<14;i++> { SetPos<i*2,0>; cout<<"■"; } for<i=1;i<=24;i++> { SetPos<0,i>; cout<<"■"; SetPos<13*2,i>; cout<<"■"; } for<i=0;i<14;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++> { SetPos<i*2,9>; cout<<"■"; } SetPos<16*2,16>; cout<<"俄羅斯方塊"; SetPos<16*2,17>; cout<<"分數(shù):"<<point; SetPos<16*2,18>; cout<<"等級:"<<level;}voidBox::DrawBox<intx,inty,intnum>//繪制圖形{ inti; intnx,ny; for<i=0;i<4;i++> { nx=x+sharp[num][i*2]; ny=y+sharp[num][i*2+1]; SetPos<<ny+1>*2,nx+1>;//利用sharp數(shù)組相對于點x,y繪制形狀 cout<<"■"; }}voidBox::Redraw<intx,inty,intnum>//擦除圖形,原理同上{ inti; intnx,ny; for<i=0;i<4;i++> { nx=x+sharp[num][i*2]; ny=y+sharp[num][i*2+1]; SetPos<<ny+1>*2,nx+1>; cout<<""; }}voidBox::Turn<>//轉(zhuǎn)動圖形,單純的該ID而已{ switch<ID> { caseA1:ID=A2;break; caseA2:ID=A1;break; caseB:ID=B;break; caseC11:ID=C12;break; caseC12:ID=C13;break; caseC13:ID=C14;break; caseC14:ID=C11;break; caseC21:ID=C22;break; caseC22:ID=C23;break; caseC23:ID=C24;break; caseC24:ID=C21;break; caseD11:ID=D12;break; caseD12:ID=D11;break; caseD21:ID=D22;break; caseD22:ID=D21;break; }}voidBox::Welcome<>//歡迎界面{ charx; while<1> { system<"cls">; cout<<"■■■■■■■■■■■■■■■■■■■"<<endl; cout<<"■俄羅斯方塊控制臺版〔不閃屏■"<<endl; cout<<"■■■■■■■■■■■■■■■■■■■"<<endl; cout<<"■A,D左右移動S向下加速■"<<endl; cout<<"■空格鍵轉(zhuǎn)動方塊■"<<endl; cout<<"■■■■■■■■■■■■■■■■■■■"<<endl; cout<<"■何某制作■"<<endl; cout<<"■百度ID:HapHapYear■"<<endl; cout<<"■■"<<endl; cout<<"■按1-9選擇等級?。 ?<<endl; cout<<"■■"<<endl; cout<<"■■"<<endl; cout<<"■■■■■■■■■■■■■■■■■■■"<<endl; SetPos<8,10>; x=getch<>; if<x<='9'&&x>='1'>//設(shè)置等級 { level=x-'0'; break; } }}voidBox::UpdataMap<>//更新畫面〔關(guān)鍵{ intclear; inti,j,k; intnx,ny; intflag; for<i=0;i<4;i++>//更新map數(shù)組的信息 { nx=hotpoint[0]+sharp[ID][i*2]; ny=hotpoint[1]+sharp[ID][i*2+1]; map[nx][ny]=1; } if<hotpoint[0]<top>//如果熱點高于頂點則更新頂點 top=hotpoint[0]; clear=0;//消除的格數(shù) for<i=hotpoint[0];i<hotpoint[0]+high[ID];i++> { flag=0; for<j=0;j<12;j++>//檢測是否可以消除此行 { if<map[i][j]==0> { flag=1; break; } } if<flag==0>//可以消除 { for<k=i;k>=top;k-->//從當前位置向上所有的點下移一行 { if<k==0>//最高點特殊處理 for<j=0;j<12;j++> { map[k][j]=0; SetPos<<j+1>*2,k+1>; cout<<""; } else { for<j=0;j<12;j++> { map[k][j]=map[k-1][j]; SetPos<<j+1>*2,k+1>; if<map[k][j]==0> cout<<""; else cout<<"■"; } } } top++;//消除成功,最高點下移 clear++; point+=clear*100; } } SetPos<16*2,17>; cout<<"分數(shù):"<<point;}voidBox::Run<>//運行游戲{ inti=0; charx; intCount;//計數(shù)器 inttempID; inttemp; srand<<int>time<0>>; ID=rand<>%15;//隨
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《電動汽車動力電池與能源管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽學(xué)院《中法跨文化交際》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025天津市建筑安全員-C證(專職安全員)考試題庫
- 2025年河南建筑安全員《B證》考試題庫
- 2025年四川建筑安全員B證考試題庫附答案
- 2025江西省安全員考試題庫
- 廣州幼兒師范高等??茖W(xué)校《公共管理與服務(wù)課程開發(fā)與教材分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州新華學(xué)院《軟件工程與實踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025湖南建筑安全員《C證》考試題庫
- 2025年江蘇省建筑安全員知識題庫附答案
- 貸款咨詢服務(wù)協(xié)議書范本
- 教務(wù)處主任批評與自我批評
- 氟馬西尼完整
- 合同-勞動主體變更三方協(xié)議
- 挪用公款還款協(xié)議書范本
- 煤礦巷道噴涂技術(shù)方案
- 新版中國腦出血診治指南
- 高校搬遷可行性方案
- 充電樁選址優(yōu)化與布局規(guī)劃
- 科技產(chǎn)業(yè)園項目投資計劃書
- 苗木采購?fù)稑朔桨福夹g(shù)標)
評論
0/150
提交評論