1.蛇可以自動直線移動,也可以玩家通過方向鍵控制蛇上下左右移動,每次壹格。
2.蛇在指定區域活動,當:
①蛇觸壁時;
(2)貪吃的蛇頭碰到蛇身或蛇尾時;
③當玩家的鍵盤輸入不是方向鍵時;
命令行顯示“遊戲結束!”然後退出遊戲。
3.在蛇活動的區域隨機生成壹個“豆豆”。蛇吃“豆豆”時,蛇身增長壹格,自動前進時間縮短。
短100ms(默認為1000ms,不能小於100ms)。每次蛇長是8的倍數,提升壹級。
C++代碼如下:
#包含?& ltbios.h & gt?
#包含?& ltconio.h & gt?
#包含?& ltdos.h & gt?
#包含?& ltgraphics.h & gt?
#包含?& ltstdlib.h & gt?
#包含?& lttime.h & gt?
使用?命名空間?std?
內嵌?作廢?顯示(char?gsDomain[][22],?int?水平,?int?moveSpeed)?
{?
系統(“cls”);?//清屏?
cout?& lt& lt?endl?& lt& lt?endl?
為了什麽?(int?我?=?0;?我?& lt?22;?i++)?
{?
cout?& lt& lt?”\ t”;?
為了什麽?(int?j?=?0;?j?& lt?22;?j++)?
cout?& lt& lt?gsDomain[i][j]?& lt& lt?"?";?
如果?(我?==?0)?
{?
cout?& lt& lt?\ t級別:?& lt& lt?水平;?
}?
不然呢?如果?(我?==?3)?
{?
cout?& lt& lt?”\t自動提前時間”;?
}?
不然呢?如果?(我?==?5)?
{?
cout?& lt& lt?\t時間間隔:?& lt& lt?moveSpeed?& lt& lt?"?ms ";?
}?
cout?& lt& lt?endl?
}?
}?
int?main()?
{?
夏爾?GS domain[22][22];?//蛇活動區(包括墻)?
//初始化蛇活動區(不包括墻)?
為了什麽?(int?我?=?1;?我?& lt=?21;?i++)?
{?
為了什麽?(int?j?=?1;?j?& lt=?21;?j++)?
gsDomain[i][j]?=?'?';?
}?
//初始化蛇活動區的上下壁?
為了什麽?(int?我?=?0;?我?& lt?22;?i++)?
gsDomain[0][i]?=?gsDomain[21][i]?=?'-';?
//初始化蛇活動區域的左右墻壁?
為了什麽?(int?我?=?1;?我?& lt?21;?i++)?
gsDomain[i][0]?=?gsDomain[i][21]?=?'|';?
//初始化蛇?
為了什麽?(int?我?=?1;?我?& lt=?3;?i++)?
gsDomain[1][i]?=?'*';?
//初始化蛇頭?
gsDomain[1][4]?=?'#';?
int?snake[2][100];?//記錄蛇每次出現的位置坐標?
為了什麽?(int?我?=?0;?我?& lt?4;?i++)?
{?
snake[0][i]?=?1;?//記錄蛇所在位置的x坐標?
snake[1][我]?=?我?+?1;?//記錄蛇所在位置的y坐標?
}?
int?頭?=?3,?尾巴?=?0,?長度?=?4;?
int?beanX?beanY?//豆豆出現在哪裏?
srand(time(0));?
做
{?
beanX?=?蘭德()?%?20?+?1;?
賓尼?=?蘭德()?%?20?+?1;?
}?什麽時候?(gsDomain[beanX][beanY]?!=?'?');?
gsDomain[beanX][beanY]?=?'*';?//豆豆?
cout?& lt& lt?" \ n \ n \ t \貪吃蛇遊戲即將開始!\ n ";?
龍?開始;?
int?水平?=?1,?moveSpeed?=?1000;?
為了什麽?(int?我?=?3;?我?& gt=?0;?我-)?
{?
開始?=?clock();?
什麽時候?(時鐘()?-?開始?& lt=?1000){}?
系統(“cls”);?
如果?(壹)?
{?
cout?& lt& lt?\ n \ n \ t \進入遊戲倒計時?& lt& lt?我?& lt& lt?endl?
}?
其他
顯示(gsDomain,水平,?moveSpeed);?
}?
夏爾?方向?=?77;?//蛇默認自動直奔右邊?
什麽時候?(真)?
{?
布爾?時標?=?真實;?
int?x,?y;?
開始?=?clock();?
//如果時間超過自動前進時間或者在鍵盤上按了壹個鍵,終止循環?
什麽時候?((timeFlag?=?(時鐘()?-?開始?& lt=?moveSpeed))?& amp& amp?!kbhit()){}?
如果?(timeFlag)?
{?
//在鍵盤上按下壹個鍵時讀取鍵盤輸入?
getch();?
方向?=?getch();?
}?
切換?(方向)?
{?
//上?
案子?72:?x?=?蛇[0][頭]?-?1,?y?=?蛇[1][頭];?
打破;?
//下來?
案子?80:?x?=?蛇[0][頭]?+?1,?y?=?蛇[1][頭];?
打破;?
//往左?
案子?75:?x?=?蛇[0][頭],?y?=?蛇[1][頭]?-?1;?
打破;?
//往右?
案子?77:?x?=?蛇[0][頭],?y?=?蛇[1][頭]?+?1;?
打破;?
默認:?cout?& lt& lt?" \ t遊戲?完畢!\ n ";?
回歸?0;?
}?
如果?(x?==?0?||?x?==?21?||?y?==?0?||?y?==?21)?
{?
//蛇碰了壁?
cout?& lt& lt?" \ t遊戲?完畢!\ n ";?
回歸?0;?
}?
如果?(gsDomain[x][y]?!=?'?'?& amp& amp?!(x?==?beanX?& amp& amp?y?==?beanY))?
{?
//蛇頭接觸的是蛇身還是蛇尾?
cout?& lt& lt?" \ t遊戲?完畢!\ n ";?
回歸?0;?
}?
如果?(x?==?beanX?& amp& amp?y?==?beanY)?
{?
//吃豌豆?
長度++;?//長度加1?
如果?(長度?& gt=?8)?
{?
//遊戲升級處理?
長度?-=?8;?
level++;?
如果?(moveSpeed?& gt?100)?
moveSpeed?-=?100;?
}?
GS domain[snake[0][head]][snake[1][head]]?=?'*';?
gsDomain[x][y]?=?'#';?
頭?=?(頭?+?1)?%?100;?
蛇[0][頭]?=?x;?
蛇[1][頭]?=?y;?
做
{?
beanX?=?蘭德()?%?20?+?1;?
賓尼?=?蘭德()?%?20?+?1;?
}?什麽時候?(gsDomain[beanX][beanY]?!=?'?');?
gsDomain[beanX][beanY]?=?'*';?
顯示(gsDomain,水平,?moveSpeed);?//顯示在屏幕上?
}?
其他
{?
//不吃豌豆?
GS domain[snake[0][tail]][snake[1][tail]]?=?'?';?//蛇尾前移壹格?
尾巴?=?(尾巴?+?1)?%?100;?
GS domain[snake[0][head]][snake[1][head]]?=?'*';?
頭?=?(頭?+?1)?%?100;?
蛇[0][頭]?=?x;?
蛇[1][頭]?=?y;?
gsDomain[x][y]?=?'#';?//蛇頭前移壹格?
顯示(gsDomain,水平,?moveSpeed);?//顯示在屏幕上?
}?
}?
回歸?0;?
}