大一新生求助
我在做一个简单的贪吃蛇游戏,但是在如何控制蛇的移动没有想法,请求各位大神指点;下面是我自己根据老师给的提示打的代码:
#include <windows.h>
#include <iostream>
#include<stdio.h>
#include <time.h>
#define FrameX 4
#define FrameY 4
#define FrameW 40
#define FrameH 20
void gotoxy(int x,int y);
void print_frome();
class Food
{
private:
int x;
int y;
public:
void display();
};
class Snake
{
private:
int x[100];
int y[100];
int length;
int speed;
int count;
int direction;
public:
Snake();
void display();
void move();
void wall();
};
int main()
{
Food food;
Snake snake;
system("Color 70");
print_frome();
food.display();
while(1)
{
Sleep(500);
snake.move();
snake.wall();
snake.display();
}
return 0;
}
void Food::display()
{
int a,b;
srand(time(NULL));
a=rand()%(FrameW-1)+1;
b=rand()%(FrameH-2)+1;
x=a+FrameX;
y=b+FrameY;
gotoxy(x,y);
printf("@");//食物
}
Snake::Snake()
{
int i;
length=3;
count=0;
speed=300;
x[0]=FrameX+2;
y[0]=FrameY+FrameH/2;
for(i=1;i<length;i++)
{
x[i]=x[i-1]+2;
y[i]=y[i-1];
}
}
void Snake::display()
{
int i;
for(i=1;i<length-1;i++)
{
gotoxy(x[i],y[i]);
printf("◎");
}
gotoxy(x[0],y[0]);
printf("○");
gotoxy(x[length-1],y[length-1]);
printf("●");
}
void Snake::move()
{
int i;
gotoxy(x[0],y[0]);
printf(" ");
for(i=0;i<length-1;i++)
{
x[i]=x[i+1];
y[i]=y[i+1];
}
x[length-1]=x[length-1]+2;
}
void Snake::wall()
{
if(x[length-1]==FrameX+FrameW-2)
x[length-1]=FrameX+2;
}
void gotoxy(int x,int y)
{
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);//保存标准输出环境句柄
COORD p;//COORD是一个坐标类,里面是横坐标和纵坐标
p.X=x;
p.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);//设置光标位置
}
void print_frome()
{
int i;
gotoxy(FrameX+FrameW+5,FrameY);//右边的文字
printf(" level: ");
gotoxy(FrameX+FrameW+5,FrameY+2);
printf("count: ");
gotoxy(FrameX+FrameW+5,FrameY+4);
printf("length: ");
gotoxy(FrameX+FrameW+5,FrameY+6);
printf("speed ");
gotoxy(FrameX,FrameY);//左边的表格
printf("╔");
gotoxy(FrameX+FrameW-2,FrameY);
printf("╗");
gotoxy(FrameX,FrameY+FrameH-1);
printf("╚");
gotoxy(FrameX+FrameW-2,FrameY+FrameH-1);
printf("╝");
for(i=2;i<FrameW-2;i=i+2)
{
gotoxy(FrameX+i,FrameY);
printf("==");
gotoxy(FrameX+i,FrameY+FrameH-1);
printf("==");
}
for(i=1;i<FrameH-1;i++)
{
gotoxy(FrameX,FrameY+i);
printf("‖");
gotoxy(FrameX+FrameW-3,FrameY+i);
printf("‖");
}
gotoxy(FrameX+FrameW/2-5,FrameY/2);
printf("贪吃蛇大作战");
}