- C++
贪吃蛇
- @ 2026-9-10 18:20:20
#include<bits/stdc++.h>
using namespace std;
const int width=20;
const int height=20;
int x,y;
bool gameOver;
int fruitX,fruitY;
int score;
int tailX[100];
int tailY[100];
int tailLen;
enum Dir{STOP=0,LEFT,RIGHT,UP,DOWN};
Dir dir;
void SpawnFruit(){
fruitX =rand()%width;
fruitY =rand()%height; }
void Draw(){
COORD coord;
coord.X=0;
coord.Y=0;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
for(int i=0;i<width+2;i++)
cout<<"#";
cout<<endl;
for(int i=0;i<height;i++){
cout<<"#";
for(int j=0;j<width;j++){
bool printTail = false;
if(i==y&&j==x){
cout<<"O";
printTail=true;
}
else if(i==fruitY&&j==fruitX){
cout<<"F";
printTail=true;
}
else{
for(int k=0;k<tailLen;k++){
if(tailY[k]==i&&tailX[k]==j){
cout<<"o";
printTail = true;
break;
}
}
if(!printTail)
cout<<" ";
}
}
cout<<"#"<<endl;
}
for(int i=0;i<width+2;i++)
cout<<"#";
cout<<endl;
cout<<"苹果数量:"<<score<<endl;
}
void Input(){
if(_kbhit()){
switch(_getch()){
case 'a':
if(dir!=RIGHT)dir=LEFT;
break;
case 'd':
if(dir!=LEFT)dir=RIGHT;
break;
case 'w':
if(dir!=DOWN)dir=UP;
break;
case 's':
if(dir!=UP)dir=DOWN;
break;
case 'x':
gameOver=true;
break;
}
}
}
void Logic(){
int prevX=tailX[0];
int prevY=tailY[0];
tailX[0]=x;
tailY[0]=y;
int tempX,tempY;
for(int k=1;k<tailLen;k++){
tempX=tailX[k];
tempY=tailY[k];
tailX[k]=prevX;
tailY[k]=prevY;
prevX=tempX;
prevY=tempY;
}
switch(dir){
case LEFT:x--;break;
case RIGHT:x++;break;
case UP:y--;break;
case DOWN:y++;break;
case STOP:break;
}
if(x<0||x>=width||y<0||y>=height){
gameOver=true;
}
for(int k=0;k<tailLen;k++){
if(x==tailX[k]&&y==tailY[k]){
gameOver=true;
}
}
if(xfruitX&&yfruitY){
score++;
tailLen++;
SpawnFruit();
}
}
int main(){
srand((unsigned int)time(NULL));
CONSOLE_CURSOR_INFO cursorInfo;
cursorInfo.dwSize =1;
cursorInfo.bVisible = FALSE;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursorInfo);
x=10;
y=10;
dir=STOP;
gameOver=false;
score = 0;
SpawnFruit();
while(!gameOver){
Input();
Logic();
Draw();
Sleep(150);
}
cout<<"游戏结束!总共收集苹果:"<<score<<endl;
return 0;
}
2 comments
-
ALT_wangluoqi LV 8 @ 2026-9-17 21:03:19大家快来看一看,有什么问题告诉我我看看我能不能改正
-
@ 2026-9-17 21:03:19大家快来看一看,有什么问题告诉我我看看我能不能改正
- 1