在去年12月中,初次接触c语言,我靠着为数不多的知识,使用数组仿照写了一份贪吃蛇,现在时隔5个月,我已经有能力独立写出真正的贪吃蛇而不是简单的仿照(虽然写的是挺简单的)。
那么我们现在就正式开始今天的主题,贪吃蛇设计:
前置知识:
这一次的知识跨度有点大,介绍了不少新的内容才能完成贪吃蛇的设计,让我们先来看看前置知识:
控制台程序:
我们需要包含头文件<windows.h>
首先就来讲讲控制台的指令
cmd指令:
平常我们运⾏起来的⿊框程序其实就是控制台程序
我们可以使⽤cmd命令来设置控制台窗⼝的⻓宽:设置控制台窗⼝的大小。
cmd指令写法为:
system("
mode con cols=
100
lines=
30
")
cols为列,lines为行,即将窗口的大小设置为30行100列。
title指令:
使用title指令修改窗口名字
写法为:
system("title 贪吃蛇")
system("title 贪吃蛇")
将窗口名字修改为贪吃蛇。
cls指令:
写法为:
system("cls")
用处为:清屏
pause指令
写法为:
system("pause");
system("pause");
用处为:按下任意键才能指向下一步操作
句柄:
句柄可以理解为一个可以操作其他设备的东西。
GetStdHandle函数:
GetStdHandle是⼀个Windows API函数。
它⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标
准错误)中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备。
写法为:
HANDLE GetStdHandle (DWORD nStdHandle);
HANDLE GetStdHandle (DWORD nStdHandle);
其中HANDLE为句柄的类型名,
DWORD为需要获取的设备
例如:
HANDLE hOutput =
NULL
;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
STD_OUTPUT_HANDLE即为输出设备,可以理解为窗口。
GetConsoleCursorInfo函数:
该函数的用处为检索有关指定控制台屏幕缓冲区的光标大小和可见性的信息。
该函数的形式为:
BOOL WINAPI
GetConsoleCursorInfo
(
HANDLE hConsoleOutput,
PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
第一个参数为句柄,第二个参数为指向
CONSOLE_CURSOR_INFO 类型变量的指针
。
CONSOLE_CURSOR_INFO为存放光标数据的结构体。
形式为:
typedef struct
_
CONSOLE_CURSOR_INFO
{
DWORD dwSize;
BOOL bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
dwSize,由光标填充的字符单元格的百分⽐。 此值介于1到100之间。 光标外观会变化,范围从完
全填充单元格到单元底部的⽔平线条。
bVisible,游标的可见性。 如果光标可见,则此成员为 TRUE。
由此,我们便可以写出:
HANDLE hOutput =
NULL
;
//
获取标准输出的句柄
(
⽤来标识不同设备的数值
)
hOutput =
GetStdHandle