C++貪吃蛇編程代碼
這個(gè)可參考的網(wǎng)上很多的,,我收藏的一個(gè)參考:
#include<iostream>#include<windows.h>#include<time.h>#include<conio.h>using namespace std;// 刷新當(dāng)前屏幕inline void Refresh(char q[][22], int grade, int gamespeed){system("cls"); //清屏 int i,j; cout << endl; for(i=0;i<22;i++){ cout << "";for(j=0;j<22;j++) cout<<q[i][j]<<' ';//輸出貪吃蛇棋盤(pán)if(i==0) cout << "等級(jí)為:" << grade;if(i==4) cout << "自動(dòng)前進(jìn)時(shí)間";if(i==6) cout << "間隔為:" << gamespeed << "ms";cout<<endl; }}
int main(){char tcsQipan[22][22]; //貪吃蛇棋盤(pán)是一個(gè)二維數(shù)組(如22*22,,包括墻壁)int i,j;for(i=1;i<=20;i++)for(j=1;j<=20;j++)tcsQipan[i][j]=' '; // 初始化貪吃蛇棋盤(pán)中間空白部分for(i=0;i<=21;i++)tcsQipan[0][i] = tcsQipan[21][i] = '-';//初始化貪吃蛇棋盤(pán)上下墻壁for(i=1;i<=20;i++)tcsQipan[i][0] = tcsQipan[i][21] = '|';//初始化貪吃蛇棋盤(pán)左右墻壁
int tcsZuobiao[2][100]; //蛇的坐標(biāo)數(shù)組for(i=0; i<4; i++){tcsZuobiao[0][i] = 1;tcsZuobiao[1][i] = i + 1;}int head = 3,tail = 0;
for(i=1;i<=3;i++)tcsQipan[1][i]='*';//蛇身tcsQipan[1][4]='#'; //蛇頭
int x1, y1; // 隨機(jī)出米srand(time(0));do{x1=rand()%20+1;y1=rand()%20+1; }while(tcsQipan[x1][y1]!=' '); tcsQipan[x1][y1]='*';
cout<<"貪吃蛇游戲即將開(kāi)始 !"<<endl;//準(zhǔn)備開(kāi)始;; long start;
int grade = 1, length = 4;int gamespeed = 500;//前進(jìn)時(shí)間間隔 for(i=3;i>=0;i--){start=clock();while(clock()-start<=1000);system("cls");if(i>0) cout << "進(jìn)入倒計(jì)時(shí):" << i << endl;else Refresh(tcsQipan,grade,gamespeed); }
int timeover;char direction = 77;// 初始情況下,,向右運(yùn)動(dòng)int x,y;while(1){timeover = 1;start = clock();while((timeover=(clock()-start<=gamespeed))&&!kbhit()); //如果有鍵按下或時(shí)間超過(guò)自動(dòng)前進(jìn)時(shí)間間隔則終止循環(huán)if(timeover){getch();direction = getch();}switch(direction){case 72: x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break; // 向上case 80: x= tcsZuobiao[0][head]+1; y= tcsZuobiao[1][head];break;// 向下case 75: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]-1;break;// 向左case 77: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]+1; // 向右}if(!(direction==72||direction==80||direction==75 ||direction==77)){ //按鍵非方向鍵cout << "Game over!" << endl;return 0;}if(x==0 || x==21 ||y==0 || y==21){ // 碰到墻壁cout << "Game over!" << endl;return 0;}if(tcsQipan[x][y]!=' '&&!(x==x1&&y==y1)){ // 蛇頭碰到蛇身cout << "Game over!" << endl;return 0;}
if(x==x1 && y==y1){//吃米,,長(zhǎng)度加1length ++;if(length>=8){length -= 8;grade ++;if(gamespeed>=200)gamespeed = 550 - grade * 50; // 改變自動(dòng)前進(jìn)時(shí)間間隔}tcsQipan[x][y]= '#';tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]] = '*';head = (head+1)%100;tcsZuobiao[0][head] = x;tcsZuobiao[1][head] = y;do{x1=rand()%20+1;y1=rand()%20+1;}while(tcsQipan[x1][y1]!=' ');tcsQipan[x1][y1]='*';Refresh(tcsQipan,grade,gamespeed);}else{ //不吃米tcsQipan [tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=' ';tail=(tail+1)%100;tcsQipan [tcsZuobiao[0][head]][tcsZuobiao[1][head]]='*';head=(head+1)%100;tcsZuobiao[0][head]=x;tcsZuobiao[1][head]=y;tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]='#';Refresh(tcsQipan,grade,gamespeed);}}return 0;}
相關(guān)推薦
- 新買(mǎi)1t移動(dòng)硬盤(pán),,出現(xiàn)兩個(gè)相同盤(pán)符,如何去掉一個(gè),?
- 2019全國(guó)青少年才藝大賽活動(dòng)具體介紹?
- 天津有沒(méi)有學(xué)習(xí)比較實(shí)戰(zhàn)的武術(shù),,孩子班里經(jīng)常有孩子被欺負(fù),想讓自己孩子學(xué)學(xué),,省著被欺負(fù)了,。
- 洛克王國(guó)兔兔話筒怎么制作
- 手工鎢極氬弧焊封底你是如何來(lái)保證根部焊透的,?它的控制點(diǎn)是什么?
- 五行缺土和火的男孩17點(diǎn)出生勞煩大家?guī)兔ζ鹈x謝
- 201工藝線材與201螺絲線區(qū)別在那里?
- 環(huán)境比較亮?xí)r,,,Q1導(dǎo)通,,Q1集電極為低電位,?
- 男孩B把遺產(chǎn)留于女孩C,,你覺(jué)得B愚笨嗎
- 請(qǐng)問(wèn)在咱們赤壁市哪里有賣(mài)健身器材的?