贪吃蛇(C)

        游戏背景:贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的⾏列。

       总: 游戏设计大纲

        使⽤C语⾔Windows环境的控制台中模拟实现经典⼩游戏贪吃蛇。

        实现的基本功能

        1、贪吃蛇地图绘制。

        2、蛇吃⻝物的功能 (上、下、左、右⽅向键控制蛇的动作)。

        3、 蛇撞墙死亡。

        4、蛇撞⾃⾝死亡。

        5、 计算得分。

        6、 蛇⾝加速、减速。

        7、 暂停游戏、退出游戏。

        一、Win32 API介绍

        1、1win32 API

        Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外, 它同时也是⼀个很⼤ 的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程式达到开启 视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application), 所以便 称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应⽤程序编程接⼝。

        下面我们用vs2022演示,需要包含头文件<windows.h>。

        以下函数都是在window.h中的,我们只需要用即可。 

        1、2控制台程序

        平常我们运⾏起来的⿊框程序其实就是控制台程序。我们可以设计窗口的大小和title

        system在<stdlib.h>中

	system("mode con cols=100 lines=30");
	system("title 贪吃蛇");

        1、3控制台屏幕上的坐标COORD

        COORD 是Windows API中定义的⼀种结构,表⽰⼀个字符在控制台屏幕上的坐标

typedef struct _COORD {
 SHORT X;
 SHORT Y;
} COORD, *PCOORD;

        我们就可以控制一个字符在控制台屏幕上出现的位置。

COORD pos = { 10, 15 };

        1、4 GetStdHandle

        GetStdHandle是⼀个Windows API函数。它⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标 准错误)中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备

HANDLE GetStdHandle(DWORD nStdHandle);

        这里我们使用标准输出STD_OUTPUT_HANDLE

//获取标准输出的句柄(⽤来标识不同设备的数值)
HANDLE handle =  GetStdHandle(STD_OUTPUT_HANDLE);

        1、5 GetConsoleCursorInfo(获取光标信息)

        检索(查看)有关指定控制台屏幕缓冲区的光标⼤⼩可⻅性的信息。

BOOL WINAPI GetConsoleCursorInfo(
 HANDLE hConsoleOutput,
 PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);

        使用:

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息

        1、5、1 CONSOLE_CURSOR_INFO

        这个结构体,包含有关控制台游标的信息。

typedef struct _CONSOLE_CURSOR_INFO {
 DWORD dwSize;
 BOOL bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;

        dwSize,由光标填充的字符单元格的百分⽐。 此值介于1到100之间。 光标外观会变化,范围从完 全填充单元格到单元底部的⽔平线条。

        bVisible,游标的可⻅性。 如果光标可⻅,则此成员为 TRUE。(我们会把它设为false,来让光标不在屏幕上出现)。

CursorInfo.bVisible = false; //隐藏控制台光标

        1、6 SetConsoleCursorInfo

        设置指定控制台屏幕缓冲区的光标的⼤⼩和可⻅性

BOOL WINAPI SetConsoleCursorInfo(
 HANDLE hConsoleOutput,
 const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
);

        使用:

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
//隐藏光标操作
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
CursorInfo.bVisible = false; //隐藏控制台光标
SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态

        1、7 SetConsoleCursorPosition

        设置指定控制台屏幕缓冲区中的光标位置,我们将想要设置的坐标信息放在COORD类型的pos中,调 ⽤SetConsoleCursorPosition函数将光标位置设置到指定的位置。

BOOL WINAPI SetConsoleCursorPosition(
 HANDLE hConsoleOutput,
 COORD pos
);

        使用:

COORD pos = { 10, 5};
 //获取标准输出的句柄(⽤来标识不同设备的数值)
 HANDLE handle = GetStdHandle(ST
  • 58
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夹心宝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值