零基础用c++实现诺基亚上的贪吃蛇,我惊呼爷青回!

2024-01-19 11:40

本文主要是介绍零基础用c++实现诺基亚上的贪吃蛇,我惊呼爷青回!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天是六一儿童节,奖励了自己一瓶旺仔牛奶,觉得还是意犹未尽,作为六岁零170个月的小孩子,我翻出了大一写的贪吃蛇小游戏,玩起来虽然粗糙,但是惊呼“爷青回”啊,让我回到了小板砖一样诺基亚上的贪吃蛇时代。

在这里插入图片描述

六一儿童节,建议大家收藏找回童年嗷,哈哈哈,喜欢作者的希望一键三连点个关注。在文章最后附有完整代码。

本文实现的是一个基于控制台的贪吃蛇小游戏,当时还不会界面这些操作,但是就是因为这样才有童年那味!

C++实现贪吃蛇小游戏

  • 界面展示
  • 设计思路
    • 绘制边框等操作
    • 如何表现位置
    • 如何表现蛇身
    • 如何表现食物
    • 如何移动
    • 检验碰撞
    • 速度升级
    • 源代码

界面展示

初始界面中有一些游戏提示信息,还有贪吃蛇和食物的初始位置,以及四周的边框。
#标识我们的贪吃小蛇,*表示食物,●表示边框。
在这里插入图片描述
游戏结束图:
在这里插入图片描述

设计思路

设计一个蛇的类,如图所示:
在这里插入图片描述

绘制边框等操作

具体实现可看下面源码

class snake;
void Init_Console();//控制台初始化
void gotoPos(SHORT x = 0, SHORT y = 0);//光标坐标控制
void Init_Map();//画边框
void KeyConctrl(snake &, int);//键盘控制函数
void is_gameover();//结束提示
void Prompt_info(int, int);//提示信息
void dis_date(int, int, double, int);//得分信息

如何表现位置

蛇身和食物的位置都是使用的COORD结构。

COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标。

typedef struct _COORD {
SHORT X; // horizontal coordinate   
SHORT Y; // vertical coordinate   } COORD;

如何表现蛇身

使用“#”表示蛇身,每吃一个食物就变长一个“#”。

如何表现食物

使用“*”表现食物,每吃掉一个食物,下一个食物就会随机出现在地图里。

如何移动

用"#"表示贪吃蛇,每次移动从蛇头开始,所以蛇不能反向移动,也就是不能倒车。每次输入方向键后,蛇头就会朝着方向移动,然后蛇身在该点也改变自身的方向。
方向分为停止、左、右、上、下。

enum direction { go_stop = 0, go_left, go_right, go_up, go_down }dir;

每一次移动,都要进行碰撞检测,检测是否发生了碰撞。

//    //移动bool move(){switch (this->dir){case go_stop:break;case go_left:in_Pos.X -= 2;if (check_snk(in_Pos)){return true;}dis();save_date();check_bit();break;case go_right:in_Pos.X += 2;if (check_snk(in_Pos)){return true;}dis();save_date();check_bit();break;case go_up:in_Pos.Y--;if (check_snk(in_Pos)){return true;}dis();save_date();check_bit();break;case go_down:in_Pos.Y++;if (check_snk(in_Pos)){return true;}dis();save_date();check_bit();break;}return false;}
};

检验碰撞

检验膨胀边框比较简单,就是测试蛇头的坐标有没有超过边框的范围。

//撞蛇 撞边检测bool check_snk(COORD snk_Pos){//边界检测if (snk_Pos.Y <= 1 || (snk_Pos.Y >= 23) || (snk_Pos.X <= 1) || snk_Pos.X >= 45){return true;}for (int i = clear_bit; i <= print_bit; i++){if (_Pos[i].X == snk_Pos.X && _Pos[i].Y == snk_Pos.Y) return true;}return false;}

速度升级

每当贪吃蛇吃掉五个食物,得到500分之后,速度就会+1,速度最高设置为5。

void up_speed(){if (this->speed < 5)(this->speed)++;}

这篇关于零基础用c++实现诺基亚上的贪吃蛇,我惊呼爷青回!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622311

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont