百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物

ztj100 2024-10-29 18:21 30 浏览 0 评论

接上文《C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!》如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧!

三、蛇的运动

上次我已经教大家画出蛇了,现在我就教大家让蛇动起来。为了让大家更好理解,蛇的移动就用最简单的办法,这里就不用链表,顺序队列什么的了。蛇的移动就是头往前移动,然后后面的身体移动到前一节身体原来的位置上。就像这样:

那蛇头怎么办呢?

为了确定蛇头的位置,我们定义一个变量原来存储蛇现在的方向。

intdirection; //蛇的方向

我们可以通过direction的值来标记现在蛇的方向。比如0代表上,1代表下。。。

为了方便,我们定义一些常量

//定义direction的每个值代表的方向

#defineUP 0

#defineDOWN 1

#defineLEFT 2

#defineRIGHT 3

这样,我们就可以这样写:

写好的move函数如下

然后move写好了,我们还要写个循环,这样就可以让蛇一直动了。地图画完一次并且画了蛇之后,我们要把光标移动到起始位置。最简单的办法是每一次画地图的时候都把光标移动到(0,0)。

修改drawMap函数为下面这样。在开头加一个设置位置的语句。

然后建立一个循环,不断地画蛇,移动。

然后观察一下,蛇确实走了,但是蛇的痕迹还在。

这样我们可以在蛇移动函数里面,擦去上一次的尾巴。

修改过后的move函数如下

运行一下,蛇动起来了。

然后试试修改下方向。在init函数最后写一个

好,感觉很正常。

现在我们可以通过给direction变量赋值来改变蛇的前进方向了。

接下来,我们试试用键盘控制它。

写一个新函数key,用来处理键盘输入。

我们的输入不能在屏幕上有痕迹,并且不能输入一个按键就回车一下。。。所以我们用getch函数。

加conio.h头文件。然后getch会暂停程序等待输入,而设置在转弯的时候需要输入。所以我们就需要一个判断有没有输入的函数

然后通过输入的字符是w还是a还是s或者d来控制蛇的方向。

好了,现在我们就能通过wasd这四个按键控制蛇到处走了。(进入游戏先切换为英文输入法

下面附这一步的完整代码。

好了,现在食物能正常投放了

接下来我们就来实现一下蛇吃到食物的变长功能吧。

首先设置一个变量标记蛇是否吃到食物

bool eated=false; //标记是否吃到食物

然后在main里面的判断吃到食物时,使eated变为true

然后在move函数里面加下面的代码

这样在下面的坐标移动环节,就不会舍弃掉上一次的尾巴节点。蛇就变长了。

来看看效果:

蛇可以变长了。不过有时候玩着玩着有事,又舍不得玩了这么长的蛇,要是有个暂停功能就好了。接下来我们就来顺便实现下。

在key函数里面的switch里面加一个case

这样就可以实现按p键暂停了。(记得玩的时候切换为英文输入法呀)

来看看到现在为止的代码:

后续更新:

现在就来实现一下game over的功能吧。

写个函数判断蛇是否撞到自己或者撞到墙:

然后在main里面加这个实现gameOver

主函数

接下来,我们来显示一下成绩。

声明一个变量来记录分数

intscore=0;//得分

然后当吃到食物时分数增加(main里面)

然后写一个printScore函数来写分数

记得在main里面调用啊。看看效果:

以上就是本期分享的全部内容,希望对大家有帮助哦!

微信公众号:C语言编程学习基地,欢迎关注~

学习C/C++编程知识,想要成为一个更加优秀的程序员,或者你学习C/C++的时候有难度,可以关注+私信小编【C/C++编程】笔者的C语言C++零基础编程学习圈,里面不仅有学习视频和文件源码,还有更多志同道合的朋友,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

相关推荐

从IDEA开始,迈进GO语言之门(idea got)

前言笔者在学习GO语言编程的时候,GO语言在国内还没有像JAVA/Php/Python那样普及,绕了不少的弯路,要开始入门学习一门编程语言,最好就先从选择一个好的编程语言的开发环境开始,有了这个开发环...

基于SpringBoot+MyBatis的私人影院java网上购票jsp源代码Mysql

本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍基于SpringBoot...

基于springboot的个人服装管理系统java网上商城jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍基于springboot...

基于springboot的美食网站Java食品销售jsp源代码Mysql

本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍基于springboot...

贸易管理进销存springboot云管货管账分析java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目描述贸易管理进销存spring...

SpringBoot+VUE员工信息管理系统Java人员管理jsp源代码Mysql

本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目介绍SpringBoot+V...

目前见过最牛的一个SpringBoot商城项目(附源码)还有人没用过吗

帮粉丝找了一个基于SpringBoot的天猫商城项目,快速部署运行,所用技术:MySQL,Druid,Log4j2,Maven,Echarts,Bootstrap...免费给大家分享出来前台演示...

SpringBoot+Mysql实现的手机商城附带源码演示导入视频

今天为大家带来的是基于SpringBoot+JPA+Thymeleaf框架的手机商城管理系统,商城系统分为前台和后台、前台用的是Bootstrap框架后台用的是SpringBoot+JPA都是现在主...

全网首发!马士兵内部共享—1658页《Java面试突击核心讲》

又是一年一度的“金九银十”秋招大热门,为助力广大程序员朋友“面试造火箭”,小编今天给大家分享的便是这份马士兵内部的面试神技——1658页《Java面试突击核心讲》!...

SpringBoot数据库操作的应用(springboot与数据库交互)

1.JDBC+HikariDataSource...

SpringBoot 整合 Flink 实时同步 MySQL

1、需求在Flink发布SpringBoot打包的jar包能够实时同步MySQL表,做到原表进行新增、修改、删除的时候目标表都能对应同步。...

SpringBoot + Mybatis + Shiro + mysql + redis智能平台源码分享

后端技术栈基于SpringBoot+Mybatis+Shiro+mysql+redis构建的智慧云智能教育平台基于数据驱动视图的理念封装element-ui,即使没有vue的使...

Springboot+Mysql舞蹈课程在线预约系统源码附带视频运行教程

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的Springboot+Mysql舞蹈课程在线预约系统,系统项目源代码在【猿来入此】获取!https://www.yuan...

SpringBoot+Mysql在线众筹系统源码+讲解视频+开发文档(参考论文

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的在线众筹管理系统,主要实现了普通用户在线参与众筹基本操作流程的全部功能,系统分普通用户、超级管理员等角色,除基础脚手架外...

Docker一键部署 SpringBoot 应用的方法,贼快贼好用

这两天发现个Gradle插件,支持一键打包、推送Docker镜像。今天我们来讲讲这个插件,希望对大家有所帮助!GradleDockerPlugin简介...

取消回复欢迎 发表评论: