这个贪吃蛇的代码问题出在哪里了

我用的是vc++6.0,然后代码敲出来后F7显示没有问题,但是运行后发现蛇不会动,但是检查代码后不知道问题出在哪里了。

下面是代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#include <Windows.h>

#define WIDE 60 //宽度
#define HIGH 20 //高度

int score = 0; //分数
int kx = 0; //用户按下asdw任意一个按键所得到的坐标值
int ky = 0;

int lastX = 0; //蛇尾的坐标
int lastY = 0;
int sleepSecond;

//个体的对象
struct BODY
{
int X;
int Y;
};

//定义蛇对象
struct SNAKE
{
struct BODY body[WIDE*HIGH];
int size;
}snake; //一个蛇对象

//定义食物对象
struct FOOD
{
int X;
int Y;
}food; //一个食物对象

//声明函数
void initSnake(void);
void initFood(void);
void initUI(void);
void playGame(void);
void initWall(void);

//定义初始化蛇函数
void initSnake(void)
{
snake.size = 2;
snake.body[0].X = WIDE/2; //初始化蛇头
snake.body[0].Y = HIGH/2;

snake.body[1].X = WIDE/2-1;    //初始化一节蛇身
snake.body[1].Y = HIGH/2;

}

//定义初始化食物函数
void initFood(void)
{
food.X = rand() % WIDE; //食物坐标0-59 (用的stdlib.h头文件)
food.Y = rand() % HIGH; //食物坐标0-59

return;

}

//初始化界面控件
void initUI(void)
{
COORD coord={0}; //光标移动的位置

//画蛇
for(size_t i = 0; i<snake.size ; i++)
{
  coord.X = snake.body[i].X;
  coord.Y = snake.body[i].Y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

  if(i==0)
      putchar('@');
  else
      putchar('*');
}
//去除蛇尾
coord.X = lastX;
coord.Y = lastY;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

//画食物
coord.X = food.X;
coord.Y = food.Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
putchar('#');

//让光标的默认位置不干扰游戏
//COORD coord;

coord.X = 0;
coord.Y = HIGH+2;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);

}

void showScore()
{

printf("Game Over!!!\n");
printf("成绩为:%d\n\n\n",score);

}

void initWall(void)
{
for(size_t i = 0;i <= HIGH ; i++) //一列中的多行
{
for(size_t j = 0;j <= WIDE ; j++) //一行中的多列
{
if(j == WIDE)
{
printf("|");
}
else if(i == HIGH)
{
printf("_");
}
else
{
printf(" ");
}
}
printf("\n");
}
}

void playGame(void)
{
char key = 'd'; //默认蛇向右移动
//判断蛇撞墙没
while(snake.body[0].X>=0 && snake.body[0].X<WIDE
&& snake.body[0].Y>=0 && snake.body[0].X<HIGH)
{
initWall();
//更新蛇
initUI();

    //接受用户按键输入 asdw
    if (_kbhit())
    {        //为真时,说明用户按下按键
        key=_getch();
    }

    switch (key)
    {
    case'w':kx=0;ky=-1;break;
    case's':kx=0;ky=+1;break;
    case'd':kx=+1;ky=0;break;
    case'a':kx=-1;ky=0;break;
    default:
        break;
    }
    
    //蛇撞身体:蛇头==任意一节身体
    for (size_t i =0;i<snake.size;i++)
    {
        if(snake.body[0].X==snake.body[i].X 
        && snake.body[0].Y==snake.body[i].Y)
        {
            return;   //游戏结束
        }
    }
    //蛇头撞食物
    if (snake.body[0].X==food.X && snake.body[0].Y==food.Y)
    {
        initFood();         //食物消失
        snake.size++;       //身体增长
        score+=10;          //加分
        sleepSecond-=100;   //加速
    }

    //储存蛇尾坐标
    lastX = snake.body[snake.size - 1].X;
    lastY = snake.body[snake.size - 1].Y;
    
    //蛇移动,前一节身体给后一节身体赋值
    for((size_t) i = snake.size-1;i>0 ;i--)
    {
        snake.body[i].X=snake.body[i-1].X;
        snake.body[i].Y=snake.body[i-1].Y;
    }
    snake.body[0].X+=kx;   //蛇头坐标根据用户按键,修改
    snake.body[0].Y+=kx;

    Sleep(sleepSecond);
    //清屏
    system("cls");

}

return;

}

int main(void)
{
_kbhit();
srand(time(NULL)); //播种随机种子(srand用的stdlib.h头文件 time用的math.h头文件)
initSnake(); //初始化蛇
initFood(); //初始化食物

initWall();    //画墙
initUI();      //画蛇和食物

playGame();    //开始游戏

showScore();   //打印分数


system("pause");
return EXIT_SUCCESS;

}

现在是不能运行还是出什么问题了,兄弟

检查下运行时键盘是不是开启了大写锁。我的博客有控制台贪吃蛇的教程,你可以参考。