首页 > 编程语言 >基于C++控制台的吃豆人小游戏

基于C++控制台的吃豆人小游戏

时间:2023-04-22 23:31:41浏览次数:50  
标签:豆子 怪兽 方向键 游戏 C++ 玩家 小游戏 控制台

访问【WRITE-BUG数字空间】_[内附完整源码和文档]


玩家目标是吃掉所有豆豆,途中,若玩家撞到怪兽则游戏结束。游戏中存在超级豆子,吃到后,所有怪兽静止,且玩家进入无敌状态(可撞怪兽使之回到初始位置)。玩家可使用键盘方向键进行选择、控制移动,回车键确定,Esc 键返回,空格键暂停。

控制台小游戏——吃豆豆

一、概述

1.1 主要内容:

吃豆豆大作战基础参考,实现了运行在 Windows 控制台下的一个吃豆豆小游戏。玩家目标是吃掉所有豆豆,途中,若玩家撞到怪兽则游戏结束。游戏中存在超级豆子,吃到后,所有怪兽静止,且玩家进入无敌状态(可撞怪兽使之回到初始位置)。玩家可使用键盘方向键进行选择、控制移动,回车键确定,Esc 键返回,空格键暂停。

1.2 已实现的目标:

  • 地图支持自定义编辑(可编辑地图中的:空地、墙、豆子、超级豆子、小怪初始位置及数量、吃豆人初始位置)
  • 可选择游戏难度(即设定不同的小怪移动速度)
  • 怪兽可追踪吃豆人位置,往吃豆人的所在位置靠近
  • 可查看历史记录 TOP 10,并且可对游戏记录进行回放
  • 在回放的过程中,支持按下方向键后,退出回放模式,在当前情形下,操纵吃豆人,进入正常的游戏模式,继续游戏
  • 有用户友好的 UI 界面(比如:吃到超级豆子后吃豆人变彩色闪烁,且下方显示进度条倒计时;选择界面高亮显示选项)

二、主要类的设计

2.1 依次介绍各个类的设计:

Position 类

由于是在控制台下实现本游戏,所以显示界面的所有元素都是字符,而一些较为美观,且符合游戏中的元素的特殊字符一般都是 2 个英文字符的宽度,所以这里界面设计的主要思想使将整个控制台运行窗口看成一个二维的画布,横坐标以每两个英文字符的宽度为单位,纵坐标则以每行为单位。

而有了画布之后,画布上的每一个点其实可以看作一个数据结构,这就是 Position 类的意义。

基于C++控制台的吃豆人小游戏_方向键

基于C++控制台的吃豆人小游戏_方向键_02

基于C++控制台的吃豆人小游戏_回车键_03

基于C++控制台的吃豆人小游戏_方向键_04

标签:豆子,怪兽,方向键,游戏,C++,玩家,小游戏,控制台
From: https://blog.51cto.com/u_16075443/6215722

相关文章

  • C++创建对象时,有哪些内容?
    数据成员在类的作用域中,数据成员类似全局变量,而成员函数是操作数据成员的函数成员函数内联函数介绍目的:为了提高运行时的效率注意:在内联函数体中不要有复杂结构(如循环语句和switch语句)在类中声明内敛函数的方式:将函数体放在类的声明中使用inline关键词举例classPoin......
  • c++ vector容器类元素初始化,resize,reserve
    vector<Person>p;//此处Person为类名,仅此一行代码,会调用p(即vector本身)的构造函数,此时p是空的,其元素的构造函数并未被调用//p.reserve(3);//reserve函数预留空间,一下为源码template<typename_Tp,typename_Alloc>voidvector<_Tp,_Alloc>::reserve(size_ty......
  • [C++基础] 面向对象、C 与 C++ 区别篇
    [C++基础]面向对象、C与C++区别篇 一、面向对象1面向对象与面向过程的含义?1、面向对象面向对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象。对同类对象抽象出其共性,即类,类中的大多数数据,只能被本类的方法进行处理。类通过一些简单的外部接口与......
  • c++打卡训练(14)
    三色球问题:一共十二个球,红色白色都是三个,黑色有六个,摸出八个球,问有几种可能?流程图:伪代码:源代码:#include<stdio.h>intmain(){ intred,white,black; for(red=0;red<=3;red++){ for(white=0;white<=3;white++){ black=8-red-white; if(black<=6){ printf("红色:%d,......
  • 【CMU15-445 FALL 2022】Project #0 - C++ Primer
    关于参考&鸣谢课程官网CMU15445vscode/clionclang12cmake环境配置C++调试窗口显示“forstringvariable【CMU15-445数据库】bustubProject#0:Trie树实现(C++Primer)2022CMU15-445学习群——152391370前言按照课程要求,本文并不会给出实现代码,可以当做是我遇到问题的总......
  • C++课本第四章例题
    个人银行账户管理程序1#include<iostream>2#include<cmath>3usingnamespacestd;4classSavingsAccount{//储蓄账户类5private:6intid;//账号7doublebalance;//余......
  • VC++ | DLL的创建和使用
    文章目录DLL的创建和使用动态链接库概述1.新建项目1-1.新建文件1-2.生成动态链接库2.Dumpbin命令2-1.用法3.从DLL中导出函数4.参考DLL的创建和使用动态链接库概述1.新建项目1-1.新建文件新建DLL1.cpp#include"pch.h"intadd(inta,intb){ return(a+b);}intsubtract(i......
  • C++的拓扑排序实现
    template<typenameT=CString,typename_Data=CString> structUnion_node//!<节点 { Union_node():nColor(0){} std::vector<Union_node*>vecNodeSon; Tkey;//!<关键数据 _Datadata;//!<卫星数据 mutableintnColor;//0:白色节点(未发现),1:灰色节点(发现),......
  • 初学者代码训练Day5(c/c++)
    打鱼还是晒网要求中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。流程图  代码1#include<iostream>2usingnamespacestd;34intmain()5{intyear=0,month=0,day=......
  • C++恶意软件开发(五)Linux shellcoding
    什么是shellcode?Shellcode通常指的是一段用于攻击的机器码(二进制代码),可以被注入到目标计算机中并在其中执行。Shellcode的目的是利用目标系统的漏洞或弱点,以获取系统控制权或执行恶意操作。它的名称来自于它经常被注入到攻击者编写的恶意软件的shell环境中,以便让攻击者可以更......