大一下学期的课程作业,记录一下
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <conio.h>
#define U 1 //分别代表键盘的输入上下左右
#define D 2
#define L 3
#define R 4
typedef struct snake{ //蛇身链表,也可用来定义食物
int x,y;
struct snake *next;
}snake;
int score=0,add=10; //初始分数为0,吃一个食物得10分
int HighScore=0; //最高分
int status,sleeptime=300; //status记录行进方向,sleeptime为每次间隔时间
snake *head,*food; //蛇链表头节点
snake *p; //遍历蛇身所用
int endgamestatus=0; //记录结束游戏的原因
HANDLE hOut; //句柄
void HideCursor(); //去除窗口光标的函数
void gotoxy(int x,int y); //移动光标到窗口(x,Y)位置的函数
int color(int c); //改变字体颜色的函数
void PrintSnake(); //画主界面蛇身的函数
void MainMenu(); //打印主菜单的函数
void CreateMap(); //初始化地图的函数
void CreateSnake(); // 初始化蛇身的函数
void CreateFood(); //初始化食物的函数
void SnakeMove(); //打印蛇下一步位置的函数
void Control(); //根据键盘输入控制蛇移动的函数
void EndGame(); //结束游戏的函数
void Lostdraw(); //打印结束界面的函数
void CantCrossWall(); //判断蛇是否触碰到地图边界
int BiteSelf(); //判断蛇是否咬到自己
void ScoreAndTips(); //打印得分和小提示
void Explation(); //游戏说明
void Choose();//游戏结束后进行选择的函数
void OutFile(); //从文件中读取最高分的函数
void InFile(); //将最高分存储到文件中的函数
int main()
{
HideCursor(); //清除光标
gotoflag: //goto语句标志
PrintSnake(); //打印主界面蛇身
MainMenu(); //打印主菜单
int choice;
scanf("%d",&choice); //输入选择
switch(choice){
case 1: //选项"1"为开始游戏
system("cls"); //清屏
CreateMap(); //初始化地图
CreateSnake(); //初始化蛇身
CreateFood(); //初始化食物
Control(); //控制蛇移动
case 2: //选项"2"为查看游戏说明
Explation(); //打印出游戏说明
goto gotoflag; //回到gotofalg,即主界面
break;
case 3: //选项"3"为退出游戏
return 0;
default: //当输入不为 1~3 时
color(12);
gotoxy(40,28);
printf("请输入1~3之间的数!");
getch();
goto gotoflag;
}
return 0;
}
void gotoxy(int x,int y){ //移动光标到(x,y)的函数
COORD c; //COORD为windows API中定义的一种结构,表示一个字符再控制台屏幕上的坐标
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); //此函数是API中定位光标位置的函数
}
int color(int c)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c); //更改文字颜色
return 0;
}
void PrintSnake()
{
gotoxy(35,1);
color(6);
printf("/^\\/^\\"); //蛇眼睛
gotoxy(34,2);
printf("|__| O|"); //蛇眼睛
gotoxy(33,2);
color(2);
printf("_");
gotoxy(25,3);
color(12);
printf("\\/"); //蛇信
gotoxy(31,3);
color(2);
printf("/");
gotoxy(37,3);
color(6);
printf(" \\_/"); //蛇眼睛
gotoxy(41,3);
color(10);
printf(" \\");
gotoxy(26,4);
color(12);
printf("\\____"); //舌头
gotoxy(32,4);
printf("_________/");
gotoxy(31,4);
color(2);
printf("|");
gotoxy(43,4);
color(10);
printf("\\");
gotoxy(32,5);
color(2);
printf("\\_______