几个贪吃蛇

声明

由于本人C++使用能力一直下滑(毕竟知道它没用-不考竞赛之后就没认真用过了)所以有BUG不要找我,我现在已经没有能力修他们了。。。。

本人的C++版本较早可能新版无法运行

#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
#include<iostream>
using namespace std; 
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+2][N+2]={{0}};
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
wall[i][j]=1;
}
color(11);
for(i=0;i<N+2;i++)
{
for(j=0;j<N+2;j++)
{
if(wall[i][j])
cout<<"■";
else cout<<"□" ;
}
cout<<endl;
}
gotoxy(N+3,1);//显示信息
color(20);
cout<<"按 W S A D 移动方向"<<endl;
gotoxy(N+3,2);
color(20);
cout<<"按任意键暂停"<<endl;
gotoxy(N+3,3);
color(20);
cout<<"得分:"<<endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;i<len;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;i<len;i++)
{
snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout<<"■"<<endl;
for(i=len-1;i>0;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{
case 'w':snake[0][1]--;break;
case 's':snake[0][1]++;break;
case 'a':snake[0][0]--;break;
case 'd':snake[0][0]++;break;
default: break;
}
gotoxy(snake[0][0],snake[0][1]);
color(14);
cout<<"★"<<endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
gotoxy(N+5,3);
color(20);
cout<<score<<endl;
}
if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout<<"失败!!!"<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return 0;
}

/************************贪吃蛇***********************/
/**********************2012-11-20*********************/
 
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <cmath>
#include <windows.h>
using namespace std;
 
/*** 光标定位 ***/
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
 
void locate(int x,int y)
{
    coord.X=y;
    coord.Y=x;
    SetConsoleCursorPosition(hout,coord);
};
 
/*** 隐藏光标 ***/
void hide()
{
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(hout, &cursor_info);
}
 
/*** 生成随机数 ***/
double random(double start, double end)
{
    return start+(end-start)*rand()/(RAND_MAX + 1.0);
}
 
/*** 定义地图的长宽,蛇的坐标,长度,方向,食物的位置 ***/
int m,n;
 
struct node
{
    int x,y;
}snake[1000];
 
int snake_length,dir;
node food;
int direct[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
 
/*** 输出墙 ***/
void print_wall()
{
    cout << " ";
    for (int i=1;i<=n;i++)
        cout << "-";
    cout << endl;
    for (int j=0;j<=m-1;j++)
    {
        cout << "|";
        for (int i=1;i<=n;i++) cout << " ";
        cout << "|" << endl;
    }
    cout << " ";
    for (int i=1;i<=n;i++)
        cout << "-";
}
 
/*** 首次输出蛇,其中snake[0]代表头 ***/
void print_snake()
{
    locate(snake[0].x,snake[0].y);
    cout << "@";
    for (int i=1;i<=snake_length-1;i++)
    {
        locate(snake[i].x,snake[i].y);
        cout << "*";
    }
}
 
/*** 判断是否撞墙或者自撞 ***/
bool is_correct()
{
    if (snake[0].x==0 || snake[0].y==0 || snake[0].x==m+1 || snake[0].y==n+1) return false;
    for (int i=1;i<=snake_length-1;i++)
    {
        if (snake[0].x==snake[i].x && snake[0].y==snake[i].y) return false;
    }
    return true;
}
 
/*** 随机生成并输出食物位置 ***/
bool print_food()
{
    srand((unsigned)time(0));
    bool e;
    while (1)
    {
        e=true;
        int i=(int) random(0,m)+1,j=(int) random(0,n)+1;
        food.x=i;food.y=j;
        for (int k=0;k<=snake_length-1;k++)
        {
            if (snake[k].x==food.x && snake[k].y==food.y)
            {
                e=false;break;
            }
        }
        if (e) break;
    }
    locate(food.x,food.y);
    cout << "$";
    return true;
}
 
/*** 蛇的前进 ***/
bool go_ahead()
{
    node temp;
    bool e=false;
    temp=snake[snake_length-1];
    for (int i=snake_length-1;i>=1;i--)
        snake[i]=snake[i-1];
    snake[0].x+=direct[dir][0];
    snake[0].y+=direct[dir][1];
    locate(snake[1].x,snake[1].y);
    cout << "*";
    /*** 吃到了食物 ***/
    if (snake[0].x==food.x && snake[0].y==food.y)
    {
        snake_length++;
        e=true;
        snake[snake_length-1]=temp;
    }
    /*** 输出此时蛇状态 ***/
    if (!e)
    {
        locate(temp.x,temp.y);
        cout << " ";
    }
    else
        print_food();
    locate(snake[0].x,snake[0].y);
    cout << "@";
    /*** 如果自撞 ***/
    if (!is_correct())
    {
        system("cls");
        cout << "You lose!" << endl << "Length: " << snake_length << endl;
        return false;
    }
    return true;
}
 
/*** 主函数 ***/
int main()
{
    cout << "--------------------贪吃蛇---------------------" << endl;
    cout << "请先输入两个数,表示地图大小.要求长宽均不小于10." << endl;
    cout << "请注意窗口大小,以免发生错位.建议将窗口调为最大." << endl;
    cout << "再选择难度.请在1-10中输入1个数,1最简单,10则最难" << endl;
    cout << "然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;
    cout << "-----------------------------------------------" << endl;
    cin >> m >> n;
    if (m<10 || n<10 || m>25 || n>40)
    {
        cout << "ERROR" << endl;
        system("pause");
        return 0;
    }
    int hard;
    cin >> hard;
    if (hard<=0 || hard>100)
    {
        cout << "ERROR" << endl;
        system("pause");
        return 0;
    }
    /*** 数据全部初始化,包括蛇长,位置,方向 ***/
    snake_length=5;
    clock_t a,b;
    char ch;
    double hard_len;
    for (int i=0;i<=4;i++)
    {
        snake[i].x=1;
        snake[i].y=5-i;
    }
    dir=3;
    /*** 输出初始地图,蛇与食物 ***/
    system("cls");
    hide();
    print_wall();
    print_food();
    print_snake();
    locate(m+2,0);
    cout << "Now length: ";
    /*** 开始游戏 ***/
    while (1)
    {
        /*** 难度随长度增加而提高 ***/
        hard_len=(double)snake_length/(double) (m*n);
        /*** 调节时间,单位是ms ***/
        a=clock();
        while (1)
        {
            b=clock();
            if (b-a>=(int)(400-30*hard)*(1-sqrt(hard_len))) break;
        }
        /*** 接受键盘输入的上下左右,并以此改变方向 ***/
        if (kbhit())
        {
            ch=getch();
            if (ch==-32)
            {
                ch=getch();
                switch(ch)
                {
                case 72:
                    if (dir==2 || dir==3)
                        dir=0;
                    break;
                case 80:
                    if (dir==2 || dir==3)
                        dir=1;
                    break;
                case 75:
                    if (dir==0 || dir==1)
                        dir=2;
                    break;
                case 77:
                    if (dir==0 || dir==1)
                        dir=3;
                    break;
                }
            }
        }
        /*** 前进 ***/
        if (!go_ahead()) break;
        /*** 在最后输出此时长度 ***/
        locate(m+2,12);
        cout << snake_length;
    }
    system("pause");
    return 0;
}

#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <cstring>
#include <cstdio>
#include <iostream>
#define  N 22
using namespace std;
 
    int gameover;
 
    int x1, y1; // 随机出米
 
    int x,y;
 
    long start;
 
//=======================================
//类的实现与应用initialize
//=======================================
 
//下面定义贪吃蛇的坐标类
class snake_position
{
public:
 
    int x,y;      //x表示行,y表示列
 
    snake_position(){};
 
    void initialize(int &);//坐标初始化
 
 
};
 
snake_position position[(N-2)*(N-2)+1]; //定义贪吃蛇坐标类数组,有(N-2)*(N-2)个坐标
 
void snake_position::initialize(int &j)
{
        x = 1;
 
        y = j;
}
 
 
//下面定义贪吃蛇的棋盘图
 
class snake_map
{
 
private:
 
    char s[N][N];//定义贪吃蛇棋盘,包括墙壁。
 
    int grade, length;
 
    int gamespeed; //前进时间间隔
 
    char direction; // 初始情况下,向右运动
 
    int head,tail;
 
    int score;
 
    bool gameauto;
 
public:
 
    snake_map(int h=4,int t=1,int l=4,char d=77,int s=0):length(l),direction(d),head(h),tail(t),score(s){}
 
    void initialize();   //初始化函数
 
    void show_game();
 
    int updata_game();
 
    void setpoint();
 
    void getgrade();
 
    void display();
 
 
};
 
//定义初始化函数,将贪吃蛇的棋盘图进行初始化
 
void snake_map::initialize()
{
    int i,j;
 
    for(i=1;i<=3;i++)
 
        s[1][i] = '*';
 
    s[1][4] = '#';
 
    for(i=1;i<=N-2;i++)
 
        for(j=1;j<=N-2;j++)
 
            s[i][j]=' '; // 初始化贪吃蛇棋盘中间空白部分
 
    for(i=0;i<=N-1;i++)
 
        s[0][i] = s[N-1][i] = '-'; //初始化贪吃蛇棋盘上下墙壁
 
    for(i=1;i<=N-2;i++)
 
        s[i][0] = s[i][N-1] = '|'; //初始化贪吃蛇棋盘左右墙壁
}
 
 
//============================================
//输出贪吃蛇棋盘信息
 
void snake_map::show_game()
 
{
 
    system("cls"); // 清屏
 
    int i,j;
 
    cout << endl;
 
    for(i=0;i<N;i++)
    {
 
        cout << '\t';
 
        for(j=0;j<N;j++)
 
            cout<<s[i][j]<<' '; // 输出贪吃蛇棋盘
 
        if(i==2) cout << "\t等级:" << grade;
 
        if(i==6) cout << "\t速度:" << gamespeed;
 
        if(i==10) cout << "\t得分:" << score << "分" ;
 
        if(i==14) cout << "\t暂停:按一下空格键" ;
 
        if(i==18) cout << "\t继续:按两下空格键" ;
 
        cout<<endl;
    }
}
 
//输入选择等级
void snake_map::getgrade()
{
    cin>>grade;
 
    while( grade>7 || grade<1 )
    {
        cout << "请输入数字1-7选择等级,输入其他数字无效" << endl;
 
        cin >> grade;
    }
    switch(grade)
    {
        case 1: gamespeed = 1000;gameauto = 0;break;
 
        case 2: gamespeed = 800;gameauto = 0;break;
 
        case 3: gamespeed = 600;gameauto = 0;break;
 
        case 4: gamespeed = 400;gameauto = 0;break;
 
        case 5: gamespeed = 200;gameauto = 0;break;
 
        case 6: gamespeed = 100;gameauto = 0;break;
 
        case 7: grade = 1;gamespeed = 1000;gameauto = 1;break;
 
    }
 
}
 
//输出等级,得分情况以及称号
 
void snake_map::display()
{
 
    cout << "\n\t\t\t\t等级:" << grade;
 
    cout << "\n\n\n\t\t\t\t速度:" << gamespeed;
 
    cout << "\n\n\n\t\t\t\t得分:" << score << "分" ;
 
}
 
//随机产生米
void snake_map::setpoint()
{
    srand(time(0));
 
    do
    {
 
        x1 = rand() % (N-2) + 1;
 
        y1 = rand() % (N-2) + 1;
 
    }while(s[x1][y1]!=' ');
 
    s[x1][y1]='*';
}
 
char key;
 
int snake_map::updata_game()
{
    gameover = 1;
 
    key = direction;
 
    start = clock();
 
    while((gameover=(clock()-start<=gamespeed))&&!kbhit());
 
    //如果有键按下或时间超过自动前进时间间隔则终止循环
 
 
 
        if(gameover)
        {
 
            getch();
 
            key = getch();
        }
 
        if(key == ' ')
 
        {
            while(getch()!=' '){};//这里实现的是按空格键暂停,按空格键继续的功能,但不知为何原因,需要按两下空格才能继续。这是个bug。
        }
 
        else
 
            direction = key;
 
        switch(direction)
        {
            case 72: x= position[head].x-1; y= position[head].y;break; // 向上
 
            case 80: x= position[head].x+1; y= position[head].y;break; // 向下
 
            case 75: x= position[head].x; y= position[head].y-1;break; // 向左
 
            case 77: x= position[head].x; y= position[head].y+1; // 向右
 
        }
 
        if(!(direction==72||direction==80||direction==75 ||direction==77))   // 按键非方向键
 
            gameover = 0;
 
        else if(x==0 || x==N-1 ||y==0 || y==N-1)   // 碰到墙壁
 
            gameover = 0;
 
        else if(s[x][y]!=' '&&!(x==x1&&y==y1))    // 蛇头碰到蛇身
 
            gameover = 0;
 
        else if(x==x1 && y==y1)
 
        { // 吃米,长度加1
 
            length ++;
 
            if(length>=8 && gameauto)
 
            {
 
                length -= 8;
 
                grade ++;
 
                if(gamespeed>=200)
 
                    gamespeed -= 200; // 改变贪吃蛇前进速度
 
                else
 
                    gamespeed = 100;
 
            }
 
            s[x][y]= '#';  //更新蛇头
 
            s[position[head].x][position[head].y] = '*'; //吃米后将原先蛇头变为蛇身
 
            head = (head+1) % ( (N-2)*(N-2) );   //取蛇头坐标
 
            position[head].x = x;
 
            position[head].y = y;
 
            show_game();
 
            gameover = 1;
 
            score += grade*20;  //加分
 
            setpoint();   //产生米
 
        }
 
        else
        { // 不吃米
 
            s[position[tail].x][position[tail].y]=' ';//将蛇尾置空
 
            tail= (tail+1) % ( (N-2) * (N-2) );//更新蛇尾坐标
 
            s[position[head].x][position[head].y]='*';  //将蛇头更为蛇身
 
            head= (head+1) % ( (N-2) * (N-2) );
 
            position[head].x = x;
 
            position[head].y = y;
 
            s[position[head].x][position[head].y]='#'; //更新蛇头
 
            gameover = 1;
 
        }
    return gameover;
 
}
//====================================
//主函数部分
//====================================
int main()
{
    char ctn = 'y';
 
    int nodead;
 
    cout<<"\n\n\n\n\n\t\t\t 欢迎进入贪吃蛇游戏!"<<endl;//欢迎界面;
 
    cout<<"\n\n\n\t\t\t 按任意键马上开始。。。"<<endl;//准备开始;;
 
    getch();
 
    while( ctn=='y' )
    {
        system("cls"); // 清屏
 
        snake_map snake;
 
        snake.initialize();
 
        cout << "\n\n请输入数字选择游戏等级:" << endl;
 
        cout << "\n\n\n\t\t\t1.等级一:速度 1000 \n\n\t\t\t2.等级二:速度 800 \n\n\t\t\t3.等级三:速度 600 ";
 
        cout << "\n\n\t\t\t4.等级四:速度 400 \n\n\t\t\t5.等级五:速度 200 \n\n\t\t\t6.等级六:速度 100 \n\n\t\t\t7.自动升级模式" << endl;
 
        snake.getgrade();//获取等级
 
        for(int i=1;i<=4;i++)
        {
            position[i].initialize(i);//初始化坐标
        }
 
        snake.setpoint();  // 产生第一个米
 
        do
        {
            snake.show_game();
 
            nodead = snake.updata_game();
 
        }while(nodead);
 
        system("cls"); //清屏
 
 
 
        cout << "\n\n\n\t\t\t\tGameover!\n\n"<<endl;
 
        snake.display();//输出等级/得分情况
 
        cout << "\n\n\n\t\t    是否选择继续游戏?输入 y 继续,n 退出" << endl;
 
        cin >> ctn;
 
    }
 
    return 0;
}


  
//******友情提示:如想速度快点,请改小_sleep(500)函数中参数*****  
 
#include <stdio.h>  
#include <stdlib.h>  
#include <conio.h>  
#include <string.h>  
#include <time.h>  
const int H = 8;   //地图的高  
const int L = 16;  //地图的长  
char GameMap[H][L];   //游戏地图  
int  key;  //按键保存  
int  sum = 1, over = 0;  //蛇的长度, 游戏结束(自吃或碰墙)  
int  dx[4] = {0, 0, -1, 1};  //左、右、上、下的方向  
int  dy[4] = {-1, 1, 0, 0};  
struct Snake   //蛇的每个节点的数据类型  
{  
 int x, y;  //左边位置  
 int now;   //保存当前节点的方向, 0,1,2,3分别为左右上下  
}Snake[H*L];  
const char Shead = '@';  //蛇头  
const char Sbody = '#';  //蛇身  
const char Sfood = '*';  //食物  
const char Snode = '.';  //'.'在地图上标示为空  
void Initial();  //地图的初始化  
void Create_Food(); //在地图上随机产生食物  
void Show();   //刷新显示地图  
void Button();  //取出按键,并判断方向  
void Move();   //蛇的移动  
void Check_Border();  //检查蛇头是否越界  
void Check_Head(int x, int y);   //检查蛇头移动后的位置情况  
int main()   
{  
 Initial();  
 Show();  
 return 0;  
}  
void Initial()  //地图的初始化  
{  
 int i, j;  
 int hx, hy;  
 system("title 贪吃蛇");  //控制台的标题  
 memset(GameMap, '.', sizeof(GameMap));  //初始化地图全部为空'.'  
 system("cls");  
 srand(time(0));   //随机种子  
 hx = rand()%H;    //产生蛇头  
 hy = rand()%L;  
 GameMap[hx][hy] = Shead;  
 Snake[0].x = hx;  Snake[0].y = hy;  
 Snake[0].now = -1;  
 Create_Food();   //随机产生食物  
 for(i = 0; i < H; i++)   //地图显示  
 {   
  for(j = 0; j < L; j++)  
   printf("%c", GameMap[i][j]);  
  printf("\n");  
 }  
      
 printf("贪吃蛇\n");  
 printf("按任意方向键开始游戏\n");  
     
 getch();   //先接受一个按键,使蛇开始往该方向走  
 Button();  //取出按键,并判断方向  
}  
void Create_Food()  //在地图上随机产生食物  
{  
 int fx, fy;  
 while(1)  
 {  
  fx = rand()%H;  
     fy = rand()%L;  
      
  if(GameMap[fx][fy] == '.')  //不能出现在蛇所占有的位置  
  {   
   GameMap[fx][fy] = Sfood;  
      break;  
  }  
 }  
}  
void Show()  //刷新显示地图  
{  
 int i, j;  
 while(1)  
 {    
  _sleep(500); //延迟半秒(1000为1s),即每半秒刷新一次地图  
  Button();   //先判断按键在移动  
  Move();  
  if(over)  //自吃或碰墙即游戏结束  
  {   
   printf("\n**游戏结束**\n");  
   printf("     >_<\n");  
   getchar();  
      break;  
  }  
  system("cls");   //清空地图再显示刷新吼的地图  
  for(i = 0; i < H; i++)   
  {   
   for(j = 0; j < L; j++)  
    printf("%c", GameMap[i][j]);  
   printf("\n");  
  }  
      
  printf("\n小小C语言贪吃蛇\n");  
  printf("按任意方向键开始游戏\n");  
 }  
}  
void Button()  //取出按键,并判断方向  
{  
 if(kbhit() != 0) //检查当前是否有键盘输入,若有则返回一个非0值,否则返回0  
 {   
  while(kbhit() != 0)  //可能存在多个按键,要全部取完,以最后一个为主  
      key = getch(); //将按键从控制台中取出并保存到key中  
  switch(key)  
  {   //左  
   case 75:  Snake[0].now = 0;  
          break;  
            //右  
            case 77:  Snake[0].now = 1;       
          break;  
            //上  
   case 72:  Snake[0].now = 2;  
          break;  
            //下  
   case 80:  Snake[0].now = 3;  
          break;  
  }  
 }  
}  
void Move()   //蛇的移动  
{  
 int i, x, y;  
    int t = sum;  //保存当前蛇的长度  
 //记录当前蛇头的位置,并设置为空,蛇头先移动  
 x = Snake[0].x;  y = Snake[0].y;  GameMap[x][y] = '.';  
 Snake[0].x = Snake[0].x + dx[ Snake[0].now ];  
 Snake[0].y = Snake[0].y + dy[ Snake[0].now ];  
 Check_Border();   //蛇头是否越界  
 Check_Head(x, y);  //蛇头移动后的位置情况,参数为: 蛇头的开始位置  
 if(sum == t)  //未吃到食物即蛇身移动哦  
    for(i = 1; i < sum; i++)  //要从蛇尾节点向前移动哦,前一个节点作为参照  
 {  
  if(i == 1)   //尾节点设置为空再移动  
   GameMap[ Snake[i].x ][ Snake[i].y ] = '.';  
      
  if(i == sum-1)  //为蛇头后面的蛇身节点,特殊处理  
  {  
   Snake[i].x = x;  
         Snake[i].y = y;  
      Snake[i].now = Snake[0].now;  
  }  
  else   //其他蛇身即走到前一个蛇身位置  
  {  
   Snake[i].x = Snake[i+1].x;  
         Snake[i].y = Snake[i+1].y;  
      Snake[i].now = Snake[i+1].now;  
  }  
       
  GameMap[ Snake[i].x ][ Snake[i].y ] = '#'; //移动后要置为'#'蛇身   
 }  
}  
void Check_Border()  //检查蛇头是否越界  
{  
 if(Snake[0].x < 0 || Snake[0].x >= H  
 || Snake[0].y < 0 || Snake[0].y >= L)  
     over = 1;  
}  
void Check_Head(int x, int y)  //检查蛇头移动后的位置情况  
{  
     
 if(GameMap[ Snake[0].x ][ Snake[0].y ] == '.')  //为空  
  GameMap[ Snake[0].x ][ Snake[0].y ] = '@';  
 else 
  if(GameMap[ Snake[0].x ][ Snake[0].y ] == '*')  //为食物  
  {  
   GameMap[ Snake[0].x ][ Snake[0].y ] = '@';    
   Snake[sum].x = x;   //新增加的蛇身为蛇头后面的那个  
      Snake[sum].y = y;  
      Snake[sum].now = Snake[0].now;  
         GameMap[ Snake[sum].x ][ Snake[sum].y ] = '#';   
   sum++;  
   Create_Food();  //食物吃完了马上再产生一个食物  
  }  
  else 
   over = 1;  
}