上次的贪吃蛇的基础上改变了食物的颜色,增加了读取上次记录,本来想写一个读取最高纪录的,没写出来,太菜,,,下面是代码
/**红色豆,可以读写上次记录,最大记录还是写不进去*/
#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);//用