• c++实现贪食蛇


    今天老师布置了作业 让我们观察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;  
    } 

    代码运行截图:

  • 相关阅读:
    J2SE基础:7.系统经常使用类一
    Win7 64位 php-5.5.13+Apache 2.4.9+mysql-5.6.19 配置
    FUDCon
    扬帆起航 彼岸花开——2013届毕业晚会《再见民大》倾情再演
    毛磊
    查经
    H.O.T candy
    svn rm --keep-local ./QueryParser_kill.logs
    python datetime笔记
    柯震东_百度百科
  • 原文地址:https://www.cnblogs.com/frankzone/p/7795257.html
Copyright © 2020-2023  润新知