[项目实战2]贪吃蛇游戏
目录
贪吃蛇游戏::
一、游戏效果及功能实现:
1.规则
2.基本功能实现
3.技术要点
4.实现思路
5.游戏效果呈现
二、Win32 API介绍
1.WindowsAPI函数简单介绍
2.控制台程序(Console)
cmd命令窗口打开方式
控制cmd控制台的长度宽度命令
title命令
3.vs中的控制台窗口
4.设置控制台相关属性
system函数执行系统命令5.控制台屏幕上的坐标COORD
5.GetStdHandle函数
6.GetConsoleCursorInfo函数(检测光标大小和可见性)
CONSOLE_CURSOR_INFO
7.SetConsoleCursorInfo(设置光标大小和可见性)
8.SetConsoleCurPosition(设置光标坐标位置)
9.GetAsyncKeyState(获取键盘虚拟键值)
检测键盘输入的内容:"虚拟键代码"
三、贪吃蛇游戏设计与分析
1.地图/界面
本地化
类项
setlocale函数
打印宽字符
地图坐标
2.蛇身与食物
3数据结构设计
四、具体代码实现
1.文件管理
2.头文件的声明准备
define预处理
蛇的状态、游戏状态的枚举类型声明
3.控制台的定位
4.隐藏光标
5.游戏界面初始化
欢迎界面
游戏说明界面
游戏准备界面
6.蛇的初始化
7.食物的生成
8.游戏的初始化
9.蛇的移动
蛇头出现
10.吃食物
判定食物
蛇移动、吃食物变长的逻辑
11.死亡判定
撞墙死亡
撞到自身死亡
12.键盘操控相关
加速减速
空格暂停
13.GameStart函数
14.GameRun函数
15.GameEnd函数
五、贪吃蛇源代码展示:
snake.h
snake.c
test.c
贪吃蛇游戏::
一、游戏效果及功能实现:
1.规则
2.基本功能实现
3.技术要点
4.实现思路
5.游戏效果呈现
二、Win32 API介绍
1.WindowsAPI函数简单介绍
2.控制台程序(Console)
cmd命令窗口打开方式
控制cmd控制台的长度宽度命令
title命令
3.vs中的控制台窗口
4.设置控制台相关属性
system函数执行系统命令
5.控制台屏幕上的坐标COORD
6.GetStdHandle函数
7.GetConsoleCursorInfo函数(检测光标大小和可见性)
CONSOLE_CURSOR_INFO
8.SetConsoleCursorInfo(设置光标大小和可见性)
9.SetConsoleCurPosition(设置光标坐标位置)
10.GetAsyncKeyState(获取键盘虚拟键值)
检测键盘输入的内容:"虚拟键代码"
三、贪吃蛇游戏设计与分析
1.地图/界面
<locale.h>本地化
类项
setlocale函数
打印宽字符
地图坐标
2.蛇身与食物
3数据结构设计
四、具体代码实现
1.文件管理
2.头文件的声明准备
define预处理
蛇的状态、游戏状态的枚举类型声明
3.控制台的定位
4.隐藏光标
5.游戏界面初始化
欢迎界面
游戏说明界面
游戏准备界面
6.蛇的初始化
7.食物的生成
8.游戏的初始化
9.蛇的移动
蛇头出现
10.吃食物
判定食物
蛇移动、吃食物变长的逻辑
11.死亡判定
撞墙死亡
撞到自身死亡
12.键盘操控相关
加速减速
空格暂停
13.GameStart函数
14.GameRun函数
15.GameEnd函数
五、贪吃蛇源代码展示:
Snake.h
Snake.c
Test.c
相关文章:
[项目实战2]贪吃蛇游戏
目录 贪吃蛇游戏:: 一、游戏效果及功能实现: 1.规则 2.基本功能实现 3.技术要点 …...
关于FPGA中添加FIR IP核(采用了GOWIN EDA)
文章目录 前言一、IP核二、MATLAB文件三、导出系数COE文件1.设计滤波器2.用官方的matlab代码或者直接用文本文件 四、进行模块化设计源文件 前言 FIR滤波器的特点是其输出信号是输入信号的加权和,权值由滤波器的系数决定。每个系数代表了滤波器在特定延迟位置上的“…...
1. 使用springboot做一个音乐播放器软件项目【前期规划】
背景: 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴,资金又比较紧张,是那么的不友好。作为程序员的我,也是喜欢听着歌,敲着代码。 最近就想做一个音乐播放器的软件,在内网中使…...
【Dify】Dify自定义模型设置 | 对接DMXAPI使用打折 Openai GPT 或 Claude3.5系列模型方法详解
一、Dify & DMXAPI 1、Dify DIFY(Do It For You)是一种自动化工具或服务,旨在帮助用户简化操作,减少繁琐的手动操作,提升工作效率。通过DIFY,用户能够快速完成任务、获取所需数据,并且可以…...
【Rust自学】10.8. 生命周期 Pt.4:方法定义中的生命周期标注与静态生命周期
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 10.8.1. 方法定义中的生命周期标注 还记得在上一篇文章 10.7. 生命周期 Pt.3 中所提到的省略生命周期的三条规则吗: 规则1&…...
121 买入股票的最佳时机
思路1: 买的那天一定是卖的那天之前的最小值。 每到一天,维护那天之前的最小值即可。 假设第一天是最小值,最大值初始化为0,当以后某天的价格小于最小值时,将最小值更新 当天价格大于最小值,说明有利可图…...
PID学习资料
TI公司的CONTROLSUITE https://www.ti.com.cn/tool/cn/CONTROLSUITE学点PID专栏-小麦大叔PID控制器算法系列TI公开培训(中文字幕) 电机控制,PI控制器,PID控制器和现场定向控制 书籍: Advanced PID Control先进PID控制及其MATLAB仿真Practic…...
采用标准化的方式开展设计-研发中运用设计模式
概述 实现规范化、标准化的引导式设计,以业务需求为输入,识别业务特点,并通过引导式设计,找到最适合的设计模式、具体方案,汇总成为应用的设计,拉齐各应用的设计一的致性。 采用标准化的方式开展设计…...
【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Scala语言的数据库交互
Scala语言的数据库交互 引言 在当今互联网应用的开发中,数据库几乎是每一个应用程序中不可或缺的一部分。选择合适的编程语言和工具与数据库进行交互,对于提升开发效率和应用性能至关重要。Scala作为一种现代的多范式编程语言,结合了面向对…...
字节青训十五题-Java-数字字符串格式化
问题 问题描述 小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程…...
搭建一个本地轻量级且好用的学习TypeScript语言的环境
需求说明 虽然 TypeScript 的在线 Playground 很方便 https://www.tslang.com.cn/play/,但毕竟是在浏览器中使用,没有本地的 IDE 那么顺手。所以我想搭建一个本地类似 Playground 的环境,这样在学习 TypeScript 的过程中,可以更方…...
apex安装
安装过程复杂曲折,网上说的很多办法,貌似成功了,实际还是没起作用。 先说成功过程,执行下面命令,安装成功(当然,前提是你要先配置好编译环境): (我的环境&a…...
会员制电商创新:开源 AI 智能名片与 2+1 链动模式的协同赋能
摘要:本文聚焦于电商领域会员制的关键作用,深入探讨在传统交易模式向数字化转型过程中,如何借助开源 AI 智能名片以及 21 链动模式商城小程序,实现对会员数据的精准挖掘与高效利用,进而提升企业的营销效能与客户洞察能…...
Vue 3 和 Electron 来构建一个桌面端应用
我们将使用 Vue 3 和 Electron 来构建一个桌面端应用,该应用可以通过 Websocket 与服务器进行通信,并实现心跳检测、客户端上线、获取资产信息以及修改资产状态的功能。以下是实现步骤的概述: 项目结构:创建一个 Vue 3 项目&…...
生物医学信号处理--绪论
前言 参考书籍:刘海龙,生物医学信号处理,化学工业出版社 生物医学信号分类 1、由生理过程自发或者诱发产生的电生理信号和非电生理信号 • 电生理信号:ECG/心电、EEG/脑电、EMG/肌电、 EGG/胃电、 EOG/眼电 • 非电生理信号&am…...
STM32之CAN通讯(十一)
STM32F407 系列文章 - CAN通讯(十一) 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…...
在macOS上安装MySQL
macOS的MySQL有多种不同的形式: 1、本机包安装程序,它使用本机macOS安装程序(DMG)引导您完成MySQL的安装。有关详细信息,请参阅第2.4.2节,“使用本机包在macOS上安装MySQL”。您可以将包安装程序与macOS一…...
netty解码器LengthFieldBasedFrameDecoder用法详解
Netty Netty是一个高性能、异步事件驱动的网络应用程序框架,它提供了对并发和异步编程的抽象,使得开发网络应用程序变得更加简单和高效。 在Netty中,EventLoopGroup是处理I/O操作的多线程事件循环器。在上面的示例中,我们创建了两个EventLoopGroup实例:bossGroup和worker…...
在循环链表中用头指针和用尾指针的好处
循环链表是一种特殊的链表结构,其中最后一个节点的指针指向链表的头部,形成一个环。这种结构在某些情况下可以提供便利,特别是在需要循环访问元素或者实现循环队列时。使用头指针和尾指针来操作循环链表各有其优势: 使用头指针的…...
Step3-VL-10B Base版实战指南:Gradio界面源码解读+processing_step3.py定制化修改
Step3-VL-10B Base版实战指南:Gradio界面源码解读processing_step3.py定制化修改 1. 引言:从使用者到开发者 如果你已经用上了Step3-VL-10B的Web界面,上传图片、提问、获取回答,觉得这个多模态模型确实好用,那么恭喜…...
如何在不安装Steam的情况下获取创意工坊模组
如何在不安装Steam的情况下获取创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 对于许多游戏爱好者来说,Steam创意工坊是一个宝库,里面充满…...
CLIP-GmP-ViT-L-14模型蒸馏实战:基于STM32F103C8T6的轻量化部署探索
CLIP-GmP-ViT-L-14模型蒸馏实战:基于STM32F103C8T6的轻量化部署探索 1. 引言 想象一下,一个只有指甲盖大小、成本低廉的微控制器,能够理解一张图片和一段文字是否匹配。这听起来像是科幻电影里的场景,但今天,我们就要…...
C编码小技巧(代码注释,日志开启/关闭,#pragma once)
文章目录 1、代码注释2、功能模块 日志开启和关闭3、防止.h重复定义 1、代码注释 代码注释 除了//,/**/,还有 条件编译 : #if 0#endif2、功能模块 日志开启和关闭 #if 0 #define APP_ERR(format,...) do { \printf("[keys_task] erro…...
Youtu-Parsing模型重装系统后快速恢复:开发环境与模型服务一键配置脚本
Youtu-Parsing模型重装系统后快速恢复:开发环境与模型服务一键配置脚本 每次重装系统或者换新电脑,最头疼的是什么?对我来说,就是重新搭建开发环境。特别是那些依赖复杂的AI模型项目,比如Youtu-Parsing模型࿰…...
ArcHydroTools中DEM修正的关键参数优化与效果对比分析
1. ArcHydroTools与DEM修正的核心价值 第一次接触ArcHydroTools的DEM修正功能时,我和大多数初学者一样充满疑惑——为什么需要对原始DEM数据进行修正?直到在某个流域分析项目中,我亲眼看到未经修正的DEM导致水流路径完全偏离实际河道…...
2026年流媒体视频转文字工具大横评踩完8款坑差距竟然这么大,低调黑马才是真效率天花板
做职场效率博主这三年,我前前后后测过不下20款音视频转文字工具,最近为了做2026年的工具横评,特意把市面上最火的8款都拉出来测了半个月,踩坑踩得我头都大,最后得出来的结论非常明确:听脑AI是同类工具里最值…...
深度学习回归任务中的五大误差指标解析(RMSE、MSE、MAE、MAPE、SMAPE)
1. 深度学习回归任务为什么需要误差指标? 做深度学习回归任务时,我们经常会遇到这样的困惑:模型训练好了,但怎么判断它到底好不好?这时候误差指标就是我们的"裁判"。想象一下,如果没有这些指标&a…...
ANSYS APDL循环建模中的高效数据交互技巧
1. ANSYS APDL循环建模与MATLAB数据交互的核心价值 在工程仿真领域,ANSYS APDL的循环建模能力堪称自动化分析的利器。我曾在某型风力发电机叶片参数化分析项目中,用循环建模一次性完成了178组不同翼型参数的强度计算,整个过程从原来的两周缩短…...
QML实战解析:从ListModel到ListView,构建动态数据列表的完整指南
1. 为什么需要ListModel和ListView? 刚开始接触QML的时候,我总觉得显示列表数据是个特别麻烦的事情。直到遇到了ListModel和ListView这对黄金搭档,才发现原来动态列表可以这么简单。想象一下,你要做一个联系人列表,或者…...
