c++贪吃蛇改进版

上次的贪吃蛇的基础上改变了食物的颜色,增加了读取上次记录,本来想写一个读取最高纪录的,没写出来,太菜,,,下面是代码
/**红色豆,可以读写上次记录,最大记录还是写不进去*/
#include <iostream>
#include<windows.h>
#include<time.h>
#include<math.h>
#include<conio.h>
#include <cstdlib>
#include <cstdio>
#include<fstream>
using namespace std;
/*
#define w 1//上
#define a 3//左
#define s 2//下
#define d 4//右*/

/**定位光标*/
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE h = 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;
    int y;
}snake[1000];
int snake_length,dir;
node food;
int direct[4][2]={
  {-1,0},{1,0},{0,-1},{0,1}};

/**输出墙*/
void print_wall(int n,int m){
    cout<<" ";
    for(int i=0;i<n;i++){
        cout<<"-";
    }
    cout<<" "<<endl;
    for(int j=0;j<m;j++){
        cout<<"|";
        for(int k=0;k<n;k++){
            cout<<" ";
        }
        cout<<"|"<<endl;
    }
    cout<<" ";
    for(int i=0;i<n;i++){
        cout<<"-";
    }
}

/**首次输出蛇*/
void print_snake(){
     SetConsoleTextAttribute(h,
                            FOREGROUND_RED |
                            FOREGROUND_GREEN |
                            FOREGROUND_BLUE);
    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==21||snake[0].y==61){
        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(){
    //WORD wOldColorAttrs;//Word是16位短整数,无符号短整型,0到65535之间的整数
    //CONSOLE_SCREEN_BUFFER_INFO csbiInfo;

    // Save the current color
    //GetConsoleScreenBufferInfo(h, &csbiInfo);//用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值