目录
(2)void srand(unsigned int seed);
(1)HANDLE GetStdHandle( DWORD nStdHandle );
(3)SetConsoleCursorPosition(HANDLE ,coord);
(1)time_t time(time_t * timer)
前言:程序包下载
下载方式一:CSDN下载:https://download.csdn.net/download/qq_38351824/12142282
下载方式二:微信公众号 ① 关注Tech云 ② 暂不提供下载链接
下载方式三:文章下评论
一、涉及C语言知识点
数组、结构体、全局变量、局部变量、宏定义、条件语句、循环语句
二、贪吃蛇相关库函数及其头文件简介:
1、#include<stdio.h>
(1)void fflush(stdin)
① 简介
清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行 fflush(stdin);
② 语法
int fflush(FILE *stream)
(2)CONSOLE_CURSOR_INFO
① 简介
包含有关控制台光标的信息。
② 语法
typedef struct _CONSOLE_CURSOR_INFO {
DWORD dwSize;
BOOL bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
③ 参数
dwSize:光标填充的字符单元格的百分比。该值介于1和100之间。光标外观会发生变化,从完全填充单元格到显示为单元格底部的水平线。
bVisible:光标的可见性。如果光标可见,则此成员为TRUE。
(3)GetConsoleCursorInfo
① 简介
获取有关指定控制台屏幕缓冲区的光标大小和可见性的信息。
② 语法
BOOL WINAPI GetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_Out_ PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
③ 参数
参数:
- hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。
- lpConsoleCursorInfo 指向CONSOLE_CURSOR_INFO结构的指针,该结构接收有关控制台游标的信息。
返回值:
- 如果函数成功,则返回值为非零值。
- 如果函数失败,则返回值为零。
(4)SetConsoleCursorInfo
① 简介
设置指定控制台屏幕缓冲区的光标大小和可见性。
② 语法
BOOL WINAPI SetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_In_ const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
);
③ 参数
参数:
- hConsoleOutput 控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。
- lpConsoleCursorInfo 指向CONSOLE_CURSOR_INFO结构的指针,该结构为控制台屏幕缓冲区的游标提供新规范。
返回值:
- 如果函数成功,则返回值为非零值。
- 如果函数失败,则返回值为零。
2、#include<stdlib.h>
(1)rand()
① 简介
rand()函数产生随机数的一个随机函数。
② 语法
rand()
③ 参数
若要生成 a 与 b 之间的随机实数,应使用: RAND()*(b-a)+a
(2)void srand(unsigned int seed);
① 简介
srand函数是随机数发生器的初始化函数。
② 语法
void srand(unsigned int seed);
③ 参数
unsigned seed:随机数产生器的初始值(种子值)。
3、#include<conio.h>
(1)int kbhit(void);
① 简介
用于非阻塞地响应键盘输入事件。
② 语法
int kbhit(void);
③ 参数
功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。
(2)int getch(void)
① 简介
一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏
② 语法
int getch(void)
③ 参数
返回值:读取的字符
4、#include<windows.h>
(1)HANDLE GetStdHandle( DWORD nStdHandle );
① 简介
GetStdHandle是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄(用来标识不同设备的数值)。
② 语法
HANDLE GetStdHandle( DWORD nStdHandle );
GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。
③ 参数
值 |
含义 |
---|---|
STD_INPUT_HANDLE |
标准输入的句柄 |
STD_OUTPUT_HANDLE |
标准输出的句柄 |
STD_ERROR_HANDLE |
标准错误的句柄 |
(2)COORD coord={x,y};
① 简介
COORD是Windows API中定义的一种结构,表示一个字符在控制台屏幕上的坐标。
② 语法
typedef struct _COORD {
SHORT X; 水平坐标
SHORT Y; 垂直坐标
} COORD;
③ 参数
SHORT 为一种数据类型,范围-32768~+32767。
SHORT X; 水平坐标
SHORT Y; 垂直坐标
(3)SetConsoleCursorPosition(HANDLE ,coord);
① 简介
SetConsoleCursorPosition是API中定位光标位置的函数。
② 语法
SetConsoleCursorPosition(HANDLE ,coord); 设置控制台光标坐标(设备句柄, 光标坐标)
③ 参数
使用这个函数需要两个参数:第一个参数类型为HANDLE,第二个参数类型为COORD
5、#include<time.h>
(1)time_t time(time_t * timer)
① 简介
获取当前的系统时间,返回的结果是一个time_t类型
② 语法
time_t time(time_t * timer)
③ 参数
获取当前时间:NULL。
返回的结果是一个time_t类型,其实就是一个大整数。
三、贪吃蛇相关子函数
1、光标移动到 (X,Y)
光标移动 到 (X,Y)
void gotoxy(int x, int y)
{
COORD coord={x,y}; 初始化结构体coord (坐标系X,Y)
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); 获取输出屏幕缓冲区句柄
SetConsoleCursorPosition(handle, coord); 移动光标
}
2、画墙体、蛇、食物
//画墙体、蛇、食物
//卍 ※ 代表墙体
//♂ 代表蛇体
//♀ 代表食物
void drawMap(void)
{
//画 --- 游戏说明
gotoxy(100, 7);
printf("按键说明:");
gotoxy(100, 10);
printf("W:向上");
gotoxy(100, 13);
printf("A:向左");
gotoxy(100, 16);
printf("