照着我给的条件,添加代码,求

分数:320 吃食物数量 20 1.增加显示面板,主要显示分数和吃食物的数量以及插入图片(蛇);2增加判断死活的功能,蛇不能碰墙壁,不能碰自己的身体:3蛇吃食物后身体长度增加一节; 4蛇和食物换成图片,并且食物的种类(水果)可以增多, 5还可增加不可以食用的物品,蛇一旦食用就死亡 以下为我打的代码 #include #include #include #define MAX 30 #define LEFT 106 #define RIGHT 108 #define UP 105 #define DOWN 107 struct Snake{  int x[MAX];  int y[MAX];  int dir;  int status;  int length; }snake; struct Food{  int x,y;  int r;  int status; }food; void sence(){     setcolor(BROWN);     setfillcolor(BROWN);     for(int i=0;i<32;i++){         fillrectangle(i*20,0,i*20+20,20);         fillrectangle(i*20,460,i*20+20,480);         for(int j=0;j<24;j++){             fillrectangle(0,j*20,20,j*20+20);             fillrectangle(620,j*20,640,j*20+20);   }  } } void initsnake(){     snake.x[0]=16;     snake.y[0]=12;     snake.x[1]=15;     snake.y[1]=12;     snake.x[2]=14;     snake.y[2]=12;     snake.dir=1;     snake.status=1;     snake.length=3;  setcolor(BLACK);     setfillcolor(GREEN); for(int i=0;i0;i--){     snake.x[i]=snake.x[i-1];     snake.y[i]=snake.y[i-1];  } switch(snake.dir){     case 0:         snake.x[0]=snake.x[0]-1;   break;     case 1:         snake.x[0]=snake.x[0]+1;   break;     case 2:         snake.y[0]=snake.y[0]-1;   break;     case 3:         snake.y[0]=snake.y[0]+1;   break; } setcolor(BLACK); setfillcolor(GREEN); for(int j=0;j


// 添加头文件
#include <graphics.h>
#include <conio.h>
#include <time.h>

// 定义常量
#define MAX 30
#define LEFT 106
#define RIGHT 108
#define UP 105
#define DOWN 107
#define FOOD_NUM 3 // 食物种类数量
#define FRUIT 0 // 水果
#define POISON 1 // 毒草
#define BOMB 2 // 炸弹

// 定义结构体
struct Snake{
    int x[MAX];
    int y[MAX];
    int dir;
    int status;
    int length;
}snake;

struct Food{
    int x,y;
    int r;
    int status;
    int type; // 食物种类
}food;

// 定义全局变量
int score = 0; // 分数
int food_count = 0; // 吃食物数量
IMAGE snake_img; // 蛇的图片
IMAGE fruit_img[FOOD_NUM]; // 水果的图片
IMAGE poison_img; // 毒草的图片
IMAGE bomb_img; // 炸弹的图片

// 函数声明
void sence();
void initsnake();
void drawsnake();
void changesnake();
void createfood();
void drawfood();
void checkfood();
void checkdead();
void gameover();
void initimage();
void drawscore();
void drawfoodcount();

int main(){
    initgraph(640, 480);
    sence();
    initsnake();
    initimage();
    createfood();
    while(snake.status){
        drawsnake();
        changesnake();
        checkfood();
        checkdead();
        delay_fps(10);
    }
    gameover();
    getch();
    closegraph();
    return 0;
}

// 初始化图片
void initimage(){
    // 加载蛇的图片
    loadimage(&snake_img, _T("snake.jpg"), 20, 20);
    // 加载水果的图片
    loadimage(&fruit_img[0], _T("apple.jpg"), 20, 20);
    loadimage(&fruit_img[1], _T("banana.jpg"), 20, 20);
    loadimage(&fruit_img[2], _T("orange.jpg"), 20, 20);
    // 加载毒草的图片
    loadimage(&poison_img, _T("poison.jpg"), 20, 20);
    // 加载炸弹的图片
    loadimage(&bomb_img, _T("bomb.jpg"), 20, 20);
}

// 绘制分数
void drawscore(){
    settextcolor(YELLOW);
    settextstyle(20, 0, _T("宋体"));
    TCHAR str[20];
    _stprintf_s(str, _T("分数:%d"), score);
    outtextxy(20, 20, str);
}

// 绘制吃食物数量
void drawfoodcount(){
    settextcolor(YELLOW);
    settextstyle(20, 0, _T("宋体"));
    TCHAR str[20];
    _stprintf_s(str, _T("吃食物数量:%d"), food_count);
    outtextxy(400, 20, str);
}

// 绘制场景
void sence(){
    setbkcolor(WHITE);
    cleardevice();
    setcolor(BROWN);
    setfillcolor(BROWN);
    for(int i=0;i<32;i++){
        fillrectangle(i*20,0,i*20+20,20);
        fillrectangle(i*20,460,i*20+20,480);
        for(int j=0;j<24;j++){
            fillrectangle(0,j*20,20,j*20+20);
            fillrectangle(620,j*20,640,j*20+20);
        }
    }
    drawscore();
    drawfoodcount();
}

// 初始化蛇
void initsnake(){
    snake.x[0]=16;
    snake.y[0]=12;
    snake.x[1]=15;
    snake.y[1]=12;
    snake.x[2]=14;
    snake.y[2]=12;
    snake.dir=1;
    snake.status=1;
    snake.length=3;
}

// 绘制蛇
void drawsnake(){
    for(int i=0;i<snake.length;i++){
        putimage(snake.x[i]*20, snake.y[i]*20, &snake_img);
    }
}

// 改变蛇的位置
void changesnake(){
    for(int i=snake.length-1;i>0;i--){
        snake.x[i]=snake.x[i-1];
        snake.y[i]=snake.y[i-1];
    }
    switch(snake.dir){
        case 0:
            snake.x[0]=snake.x[0]-1;
            break;
        case 1:
            snake.x[0]=snake.x[0]+1;
            break;
        case 2:
            snake.y[0]=snake.y[0]-1;
            break;
        case 3:
            snake.y[0]=snake.y[0]+1;
            break;
    }
}

// 创建食物
void createfood(){
    srand((unsigned)time(NULL));
    food.x=rand()%30;
    food.y=rand()%24;
    food.r=rand()%FOOD_NUM; // 随机生成食物种类
    food.status=1;
    food.type = FRUIT; // 默认为水果
}

// 绘制食物
void drawfood(){
    switch(food.type){
        case FRUIT:
            putimage(food.x*20, food.y*20, &fruit_img[food.r]);
            break;
        case POISON:
            putimage(food.x*20, food.y*20, &poison_img);
            break;
        case BOMB:
            putimage(food.x*20, food.y*20, &bomb_img);
            break;
    }
}

// 检查是否吃到食物
void checkfood(){
    if(snake.x[0]==food.x && snake.y[0]==food.y && food.status){
        food.status=0;
        score += 10;
        food_count++;
        snake.length++;
        if(food.r == POISON){ // 吃到毒草,蛇死亡
            snake.status = 0;
        }else if(food.r == BOMB){ // 吃到炸弹,分数清零
            score = 0;
        }else{ // 吃到水果
            createfood();
        }
        sence();
        drawsnake();
        drawfood();
        drawscore();
        drawfoodcount();
    }
}

// 检查是否死亡
void checkdead(){
    // 碰到墙壁
    if(snake.x[0]<0 || snake.x[0]>31 || snake.y[0]<0 || snake.y[0]>23){
        snake.status=0;
    }
    // 碰到自己的身体
    for(int i=1;i<snake.length;i++){
        if(snake.x[0]==snake.x[i] && snake.y[0]==snake.y[i]){
            snake.status=0;
            break;
        }
    }
}

// 游戏结束
void gameover(){
    settextcolor(RED);
    settextstyle(50, 0, _T("宋体"));
    outtextxy(200, 200, _T("游戏结束"));
}