实现效果如图:
实现效果界面不是很美观,但核心内容都一样,具体如下.
模块一:创建地图
void createMap()
{
int i=0;
//打印上下边
for(i=0+MOVE_CENTER;i<MAP_WIDTH+MOVE_CENTER;i+=2)
{
//打印最上面一条边
gotoxy(i,0);
printf("■");
//打印最下面一条边
gotoxy(i,MAP_HEIGHT);
printf("■");
}
//打印左右边
for(i=0;i<MAP_HEIGHT+1;i++)
{
//打印左边
gotoxy(0+MOVE_CENTER,i);
printf("■");
//打印右边
gotoxy(MAP_WIDTH+MOVE_CENTER,i);
printf("■");
}
gotoxy(0, 30);
initSnake();
}
模块二:产生随机食物
void createFood()
{
int i = 0;
int isCreate = 1;//表示食物是否可以被创建
srand(time(NULL));
food.x = rand() % (MAP_WIDTH - 4 + 2) + MOVE_CENTER;
food.y = rand() % (MAP_HEIGHT - 1 + 1);
if (food.x % 2 == 0)
{
for (i = 0; i < snake.currentlen; i++)
{
if (snake.x[i] == food.x && snake.y[i] == food.y)
{
isCreate = 0;
}
if (isCreate)
{
gotoxy(food.x, food.y);
printf("■");
flag = 0;//为下次生成食物
gotoxy(0, 30);
}
}
}
}
模块三:初始化蛇身
void initSnake()
{
int i = 0;
snake.currentlen = INITLEN;
snake.x[0] = MAP_WIDTH / 2 + MOVE_CENTER;
snake.y[0] = MAP_HEIGHT / 2;
gotoxy(snake.x[0], snake.y[0]);
printf(SNAKE_HEAD);
//打印出蛇身,将蛇身接到蛇头
for (i = 1; i < snake.currentlen; i++)
{
snake.x[i] = snake.x[i - 1] + 2;
snake.y[i] = snake.y[i - 1]