• 大小: 10KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: C/C++
  • 标签: c++  贪吃蛇  

资源简介

代码可完美运行,界面美观颜色多样,有文件记录最高分及排行榜

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#define N 21  // 21*21的方格 (注意这里N是方格盘的最大范围 ) 

//欣雨看这= =,这个他下边使用的时char类型存放的分数和蛇身,使用的ascii码的数,然后读取输出文件也是用的ascii码,
//所以打开文件(最高分)会出现一个奇怪的符号或者数字,但是程序可以自己读,这个没啥问题,只不过应该最高只能存放255分
//程序写的不够友好,这个你先看着 


int apple[3];//apple[0]是apple的y坐标apple[1]是apple的x坐标的1/2apple[2]是apple的个数,即标记 
char score[3];//score[0]是当前得分score[1]是最高记录score[2]控制极限速度 
char tail[3]; //用于存放蛇尾 

void gotoxy(int x int y)    //输出坐标 gotoxy功能是将光标移动到指定位置头文件是
{
        COORD pos;//coord表示一个字符在控制台屏幕上的坐标 
        pos.X = x; 
        pos.Y = y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE) pos);
                   //SetConsoleCursorPosition是一个计算机函数,如果用户定义了COORD pos,
                   //那么pos其实是一个结构体变量,其中X和Y是它的成员,通过修改pos.X和pos.Y的值就可以实现光标的位置控制。
                           //GetStdHandle(STD_OUTPUT_HANDLE)获取标准输出的句柄会把字符输出到屏幕上(把你按得wasd输出到屏幕) 
}

void color(int b)         //颜色函数 (用来输出前景的和背景色只不过颜色用b的值传进来) 
//b的值代表颜色值放在window.h头文件中 具体颜色值下面有 
{
    HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ; 
    SetConsoleTextAttribute(hConsoleb) ;
} /*void color(int b)
{
 //HANDLE 是windows里的句柄类型,它相当于是某个设备在系统里的唯一标识,通过它就可以修改
 //这些设备的属性
 //GetStdHandle函数用来获取标准输入、输出或者标准错误的句柄,它的参数可以是如下三个:
 //STD_INPUT_HANDLE 标准输入
 //STD_OUTPUT_HANDLE 标准输出
 //STD_ERROR_HANDLE 标准错误
 //这里是STD_OUTPUT_HANDLE,所以会得到标准输出的句柄,也就是屏幕输出
 HANDLE hConsole=GetStdHandle((STD_OUTPUT_HANDLE)) ;
 //调用SetConsoleTextAttribute函数来修改句柄所指向设备的属性,属性值为b
 //b可以为单独的前景色,或者背景色,如果同时修改前景色和背景色,则通过|(或)运算符来
 //设定,这种方式在编程中非常常见
 //比如我上面的例子中FOREGROUND_RED|BACKGROUND_BLUE,就会把前景色设置成红色,背景色设置成蓝色
 SetConsoleTextAttribute(hConsoleb);
}*/

int Block(char head[2])   //判断出界 
{
if ((head[0] < 1) || (head[0] > N) || (head[1] < 1) || (head[1] > N))//head[0]蛇头横坐标head[1]蛇头纵坐标 
    return 1;//出界时if语句的返回值 
return 0;//block函数的返回值代表返回整型 
}

int Eat(char snake[2])   //吃了苹果 
{
    if ((snake[0] == apple[0]) && (snake[1] == apple[1]))   //蛇身的横坐标等于苹果的横坐标纵坐标等于苹果的纵坐标(判断吃到了苹果) 
    {
        apple[0] = apple[1] = apple[2] = 0;//将原来苹果的值进行初始化当appple[2]为0时程序会重新分配苹果位置 
        gotoxy(N+4410);
        color(13);//淡洋红 只用于字符
        printf(“%d“score[0]*10);//每吃一个苹果就加3*10=30分 
       color(11);//淡青 只用于字符
        return 1;
}
    return 0;
}

void Draw(char **snake int len)    //蛇移动 
{
    if (apple[2])  //如果苹果数量不为0,则绘制苹果 
{
        gotoxy(apple[1] * 2 apple[0]); //绘制苹果的位置(横坐标纵坐标) 
        color(12);//淡红 只用于字符 (苹果颜色) 
        printf(“●“);//苹果用●表示 
        color(11);//淡青 只用于字符
    }
    gotoxy(tail[1] * 2 tail[0]);//绘制蛇尾的位置(横坐标纵坐标) 
    if (tail[2]) //如果蛇尾数量不为0吃掉苹果后蛇尾后的格子加入蛇身 
    {  
color(14); //黄 只用于字符(蛇身颜色) 
        printf(“★“);//蛇身用 ★表示 
        color(11);//淡青 只用于字符
    }
    else //若上述if条件不符合 
        printf(“■“);
    gotoxy(snake[0][1] * 2 snake[0][0]);
    color(14);//黄 只用于字符
    printf(“★“);
    color(11);//淡青 只用于字符

评论

共有 条评论