C语言小项目——小游戏贪吃蛇的实现

这篇具有很好参考价值的文章主要介绍了C语言小项目——小游戏贪吃蛇的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、Win32API处理控制台界面

 1.设置控制台界面大小以及控制台标题

我们可以使用mode命令来设置控制台的大小,使用title命令来设置控制台标题。在C语言中调用库函数system来使用这些作用于控制台的命令。使用代码如下:C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言

采用该命令后控制台界面大概如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

2.定位光标位置以及隐藏光标

控制台坐标系以控制台左上角为原点从上往下y轴坐标增大,从左往右x轴坐标增大。GOORD是一个结构体表示一个字符在控制台的坐标。GetStdHandle是⼀个WindowsAPI函数。它⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标准错误)中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备。GetConsoleCursorInfo检索有关指定控制台屏幕缓冲区的光标⼤⼩和可⻅性的信息。那么我们可以将定位光标坐标封装为一个函数 如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言
 

 二、蛇身的定义以及维护

 1.蛇身的定义

我们采用链表来定义蛇,可以使用一个结构体定义蛇身一个节点的x坐标以及y坐标,使用链表链接。具体如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言

2.蛇的维护

同样利用结构体,定义出蛇头的位置,食物的位置以及蛇的运动方向,蛇本身的状态,蛇每次运动的休眠时长,每个食物的分值,玩家的得分。 其中蛇的运动方向以及本身的状态可以通过枚举变量的方法来定义。具体实现如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言

三、游戏的开始界面

1.打印欢迎界面

欢迎界面的打印主要在于将光标定在一个合适的位置,让打印变得好看些,还有pause命令的使用,这点较为简单不过多赘述。实现代码如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

2.地图的打印

为了降低代码维护难度,我们可以在头文件中定义墙的符号,蛇身的符号以及代表食物的符号。如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

首先要使用setlocale将C语言环境改为本地环境,支持打印宽字符。然后将符号打印为宽字符。具体打印过程如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

3.初始化蛇

为降低代码维护难度我们将第一个节点的坐标定义在头文件:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

然后采用链表的头插的方法将每个节点链接在一起,然后打印出蛇身,再将蛇的状态设置好。

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

4.初始化食物位置

由于食物的位置是随机的,所以食物的坐标可以使用rand函数来取随机值,那么主函数要调用一次srand函数:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

然后为保证食物在地图里面且能被蛇吃掉我们x坐标必须是二的倍数且取值范围在2-54,y坐标在1-25。然后将食物打印出来:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言

5.帮助信息的打印

也就是游戏的操作问题,找一个合适的位置打印即可。

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

然后游戏的开始界面就实现完毕了:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

四、游戏的运行

 1.得分信息的打印以及蛇运动的方向

得分信息的打印跟上面帮助信息一样,找个合适的时间打印即可,蛇的运动方向的改变我们可以使用do...while循环来实现。其中于我们的按键有关,GetAsyncKeyState函数可以检测按键,如果按了最低位为1否则为0,我们可以在头文件定义一个宏来实现对按键的判断。

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言

2.按下空格时的暂停

写一个死循环让它一直停止直到再次按下空格即可:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

3.蛇的运动

根据蛇的运动方向获取蛇头的下一个位置的坐标,然后如果下一个位置有食物的话蛇身变长,没有食物将原来蛇的最后一个节点打印为空格,总长度不变。每走一步判断一次蛇是否死亡。具体实现过程如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言

(1)下个位置有无食物的判断及蛇身变化

下个位置是否是食物直接比较坐标即可,实现代码如下:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言  

如果是食物的话就是吃食物,就是蛇身加长然后再次在地图上更新一个食物:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

没有食物就是继续往下走,将原来蛇身最后一个节点打印为空格:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

(2)蛇是否死亡的判断

蛇死亡有两种情况:第一是撞墙死亡,还有就是蛇头撞到蛇身的任一坐标。知道这两点之后实现起来就很简单:

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

五、游戏结束

游戏结束分三种情况:第一为正常结束,也就是玩家按下ESC键结束。第二种是撞到自己最后一种是撞到墙。结束后将蛇身的每个节点释放了即可。

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

在写完每个函数接口后,我们在主函数调用即可,为保证玩家能够多次游玩,我们可以用一个循环来实现,然后用getchar来接收玩家每次开始输入的字符。

C语言小项目——小游戏贪吃蛇的实现,c语言,开发语言 

到这里我们贪吃蛇的实现就完成了,也可以有更多别的功能待大家发掘。如果有问题可以评论哦,博主看到必回的。 

 文章来源地址https://www.toymoban.com/news/detail-859481.html

到了这里,关于C语言小项目——小游戏贪吃蛇的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言-------实现贪吃蛇小游戏

    Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序

    2024年04月29日
    浏览(19)
  • C语言之实现贪吃蛇小游戏篇(2)

    目录 🎇测试游戏test.c 🎇游戏头文件包含函数声明snake.h 🎇游戏实现snake.c 屏幕录制 2023-12-02 204515   ✔✔✔✔✔最后感谢大家的阅读,若有错误和不足,欢迎指正!乖乖敲代码哦!  代码---------→【唐棣棣 (TSQXG) - Gitee.com】 联系---------→【邮箱:2784139418@qq.com】

    2024年02月05日
    浏览(40)
  • C语言从零实现贪吃蛇小游戏

    制作不易,点赞关注一下呗!!! 文章目录 前言 一.  技术要点 二、 WIN32API介绍 三、 贪吃蛇游戏设计与分析         1.游戏开始前的初始化         2.游戏运行的逻辑  总结 当我们掌握链表这样的数据结构之后,我们就可以用它来做一些小项目,比如童年小游戏贪吃蛇

    2024年02月20日
    浏览(21)
  • c语言及数据结构实现简单贪吃蛇小游戏

    目录 一·贪吃蛇简单介绍: 二·贪吃蛇的实现的开始准备: 2.1:欢迎界面的实现: 2.2地图的绘制: 2.3.1初始化蛇: 2.3.2初始化食物:  三·贪吃蛇的运行操作: 3.1辅助信息的打印: 3.2蛇的下一步移动操作: 3.2.1判断玩家按键情况: 3.2.2下一步遇到食物: 3.2.3下一步不是食物:

    2024年04月27日
    浏览(27)
  • 【C语言小游戏】贪吃蛇

      使⽤C语⾔在Windows环境的控制台中模拟实现经典⼩游戏贪吃蛇 实现基本的功能: 贪吃蛇地图绘制 蛇吃⻝物的功能 (上、下、左、右⽅向键控制蛇的动作) 蛇撞墙死亡 蛇撞⾃⾝死亡 计算得分 蛇⾝加速、减速 暂停游戏 游戏指引页面 游戏页面 指针; 动态内存; 结构体;

    2024年01月19日
    浏览(19)
  • C语言——贪吃蛇小游戏

    目录 一、ncurse 1.1 为什么需要用ncurse: 1.2 ncurse的输入输出: 1.2.1 如何使用ncurse: 1.2.2 编译ncurse的程序: 1.2.3 测试输入一个按键ncurse的响应速度: 1.3 ncurse上下左右键获取: 1.3.1 如何查看宏定义的.h文件: 1.3.2 ncurse上下左右键获取: 二、地图规划 2.1 地图规划算法显示第一

    2024年02月07日
    浏览(21)
  • 项目实践---贪吃蛇小游戏(下)

    对于贪吃蛇小游戏,最主要的还是主函数部分,这里就和大家一一列举出来, 上一章已经写过头文件了,这里就不多介绍了。 首先就是打印桌面,也就是背景,则对应的代码为: 然后就是打印墙体,在打印墙体之前,要先声明一下类型,用 #define ,来定义。则对应的代码为:

    2024年04月28日
    浏览(22)
  • 小游戏:人生中写的第一个小游戏——贪吃蛇(C语言)

            小编开了一个关于游戏的专栏,主要是运用easyx图形库进行的。        第一章:人生中写的第一个小游戏——贪吃蛇(C语言)         这个游戏的代码我在gitee上发布了,大家如果不嫌弃,可以进入这个网址进行查看和复制:https://gitee.com/rising-sun-1。      

    2024年02月09日
    浏览(32)
  • 游戏开发丨基于Pygame的AI版贪吃蛇小游戏

    本期内容 基于pygame的AI版贪吃蛇小游戏 所需环境 python pycharm或anaconda pygame 下载地址 https://download.csdn.net/download/m0_68111267/88789665 本游戏使用Pygame模块开发,不需要玩家操纵贪吃蛇,贪吃蛇会自动吃掉屏幕上随机出现的食物,每吃一个食物贪吃蛇长度增加一节。如果贪吃蛇撞到

    2024年02月20日
    浏览(35)
  • 【C语言】做一个贪吃蛇小游戏,完整代码&附带视频演示

    视频演示: https://www.bilibili.com/video/BV1pt421a7Nu/?spm_id_from=333.999.0.0vd_source=82b65865be0947de29bd55efc8cdb40a 编译环境:linux(Vmware16.2.4 + Ubantu20.04.3); 小蛇🐍只能在固定的范围内活动; 可以利用键盘方向键控制小蛇🐍的前进方向; 活动范围内会随机生成食物; 小蛇🐍吃到食物,身

    2024年02月21日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包