@疯狂猜颜色小游戏

欢迎浏览

这是一个使用C++语言编写的控制台小游戏,详细代码如下,敬请参考,不足之处还请提出,我的联系方式:1207787189@qq.com

1、交互界面和功能

玩家进入游戏后可以选择游戏难度,选择成功后,系统将会显示相应个数的彩色汉字,玩家需要输入汉字的背景颜色编号,而不是汉字本身。
游戏主要有:
1.难度模式选择
2.汉字模块
3.系统工具模块
4.UI界面模块

//游戏模式代码.h(GameModes.h)

class GameModes
{public:// 该变量用于表示不同难度下生成的颜色序号列表int ColorNumList[MaxNum];// 该变量用于表示某个模式下的字符长度int modesLen;void SimpleModes();  // 简单模式 1个void NormalModes();  // 普通模式 3个void HardModes();    // 难度模式 5个void HellModes();    // 地狱模式 7个private:// 该函数根据选择的难度模式不同,生成对应不同的字符数据void getModesData(int mIndex);
public:GameModes();~GameModes();
};

//游戏模式代码.cpp(GameModes.cpp)

#include "stdafx.h"
#include "GameModes.h"
#include"SystemUI.h"GameModes::GameModes()
{//初始化颜色序号数组for (int i = 0; i <= MaxNum; i++) {ColorNumList[i]=0;}this->modesLen = 0;
}GameModes::~GameModes()
{}
void GameModes::SimpleModes() {this->modesLen = 1;getModesData(this->modesLen);
}
void GameModes::NormalModes() {this->modesLen = 3;getModesData(this->modesLen);
}
void GameModes::HardModes() {this->modesLen =5;getModesData(this->modesLen);
}
void GameModes::HellModes() {this->modesLen = 7;getModesData(this->modesLen);
}
void GameModes::getModesData(int mIndex) {ColorCharset *cc = new ColorCharset();for (int i = 0; i < mIndex; i++) {this->ColorNumList[i] = cc->getColorOneCharset();}// 停顿1秒Sleep(1000);system("CLS");
}

//汉字模式.h

class ColorCharset
{public:int colorIndex[5];  // 该变量用于表示字体颜色序号(有默认值)// 该函数用于表示随机生成一个有背景颜色的汉字// 返回值:该字符的颜色序号int getColorOneCharset();private:string charsetName[5];  // 该变量用于表示字符文字(有默认值)/* 该函数用于给字符串str添加序号为i(C++默认)的背景颜色4 - 红6 - 黄3 - 蓝2 - 绿7 - 白*/void addColor(string str, int i);// 该函数用于获取一个(0-4)的随机数(通过当前时间设置随机数)int getRand();
public:ColorCharset();~ColorCharset();
};

//汉字模式.cpp

#include "stdafx.h"
#include "ColorCharset.h"ColorCharset::ColorCharset()
{this->colorIndex[0] = Red;this->colorIndex[1] = Yellow;this->colorIndex[2] =  Blue;this->colorIndex[3] = Green;this->colorIndex[4] = White;this->charsetName[0] = "红";this->charsetName[1] = "黄";this->charsetName[2] = "蓝";this->charsetName[3] = "绿";this->charsetName[4] = "白";
}ColorCharset::~ColorCharset()
{}
int ColorCharset::getRand()
{SYSTEMTIME sys;GetLocalTime(&sys);Sleep(500);int temp = (int)sys.wMilliseconds;return (temp % 5);
}
void ColorCharset::addColor(string str, int i) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);cout << str << endl;
}
int ColorCharset::getColorOneCharset() {// 从字符数组中随机获取一个汉字string str = this->charsetName[this->getRand()];// 从颜色数组中随机获取一个颜色序号int i = this->colorIndex[this->getRand()];// 按照随机生成的str和i获取一个有背景颜色的汉字this->addColor(str, i);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);return i;
}

//系统工具.h

class SystemTool
{public:int CheckPlayerCinIndex();void ClearUI();
public:SystemTool();~SystemTool();
};

//系统工具.cpp

#include "stdafx.h"
#include "SystemTool.h"SystemTool::SystemTool()
{}SystemTool::~SystemTool()
{}
int SystemTool::CheckPlayerCinIndex() {int index = 0;cin >> index;if (!cin) {cin.clear();cin.sync();return -1;}return index;
}
void  SystemTool::ClearUI() {system("PAUSE");system("CLS");system("PAUSE");
}

//系统UI.cpp

#include "stdafx.h"
#include "SystemUI.h"SystemUI::SystemUI()
{cout << "==================================================================" << endl;cout << "                欢迎进入猜颜色小游戏" << endl << endl;cout << "游戏规则:" << endl;cout << "    请正确选择出字体的颜色,输入正确的颜色序号即可" << endl;cout << "==================================================================" << endl;cout << "例如游戏界面如下:" << endl;cout << "红\n蓝\n绿\n" << endl;cout << "颜色序号如下所示:" << endl;cout << "0 - 红" << endl;cout << "1 - 黄" << endl;cout << "2 - 蓝" << endl;cout << "3 - 绿" << endl;cout << "4 - 白" << endl;cout << "按照刚刚游戏中汉字出现的顺序输入汉字的实际背景颜色序号(不要换行):" << endl;cout << "444" << endl;cout << "恭喜你,回答正确!" << endl;cout << "==================================================================" << endl;
}SystemUI::~SystemUI()
{}void SystemUI::StartGame() {int  iround;cout << "您希望游戏进行几局(不要换行)" << endl;cin >> iround;while (iround) {int index = ChoiceModesIndex();// 判断用户选择,创建对应的游戏模式,或者其他操作if (index == SimpleModes) {g.SimpleModes();}else if (index == NormalModes) {g.NormalModes();}else if (index == HardModes) {g.HardModes();}else if (index == HellModes) {g.HellModes();}else if (index == ExitIndex) {cout << "感谢体验该游戏!期待您下次的到来!"<< endl;break;  // 结束整个游戏循环}else {cout << "对不起,您的输入有误,请重新输入!"  << endl;continue; // 结束当前循环,重新开始选择}// 游戏显示后清屏,进入玩家输入阶段tool.ClearUI();// 游戏给出游玩界面后,用户进行回答// 判断用户的回答是否正确,给出相应的操作//int gradeintegral = 0;if (CheckResult()) {cout << "恭喜你,回答正确!" << endl;}else {cout << "好遗憾,回答错误!" << endl;}PAUSE;iround--;}
}
int SystemUI::ChoiceModesIndex() {cout << "游戏难度模式:" << endl;cout << "1、简单模式" << endl;cout << "2、普通模式" << endl;cout << "3、困难模式" << endl;cout << "4、地狱模式" << endl;cout << "5、退出" << endl;cout << "请选择您要挑战的游戏难度模式:" << endl;return tool.CheckPlayerCinIndex();
}
bool SystemUI::GetPlayerResult() {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);cout << "颜色序号如下所示:" << endl;cout << "0 - 红" << endl;cout << "1 - 黄" << endl;cout << "2 - 蓝" << endl;cout << "3 - 绿" << endl;cout << "4 - 白" << endl;cout << "按照刚刚游戏中汉字出现的顺序输入汉字的实际背景颜色序号(不要换行):" << endl;int result = tool.CheckPlayerCinIndex();if (result == -1) {cout << "对不起,您的输入有误!";return false;}// 通过除10取余的方式获取到每一个数字,并保存至数组中,最后一位用于保存数组实际长度this->resultList[MaxNum] = 0;for (int i = MaxNum - 1; i >= 0; i--) {resultList[i] = result % 10;result = result / 10;resultList[MaxNum]++;if (result == 0) break; // 如果数字统计完毕,则退出循环}return true;}bool SystemUI::CheckResult() {if (!GetPlayerResult()) return false;/*计算思路:resultList[MaxNum]是数组最后一位,表示这个数组中实际有效数字个数假设resultList[MaxNum]是3,即len = 3意味着resultList[MaxNum-1],resultList[MaxNum-2],resultList[MaxNum-3]三个数字有效且顺序分别是用户输入的最后一位、中间位、第一位因此想要正向获取数据时,应 resultList[MaxNum-len+i] (i从0开始)*/int len = resultList[MaxNum];for (int i = 0; i < len; i++) {int index =resultList[MaxNum - len + i];// cc->colorIndex[index]是根据用户输入的序号获取颜色序号列表// g->ColorNumList[i]是正确答案if (cc.colorIndex[index] != g.ColorNumList[i]) {return false;}}return true;}

//系统UI.h

#include"ColorCharset.h"
#include"GameModes.h"
#include"SystemTool.h"
class SystemUI
{public:GameModes g;  // 该指针变量用于指向具体的游戏模式对象SystemTool tool;  // 该指针变量用于指向具体的系统辅助工具ColorCharset cc;  // 该指针变量用于指向具体的颜色字符对象int resultList[MaxNum+1]; // 该数组用于保存用户输入的游戏结果,最后一位用于保存用户输入的实际长度string name;void StartGame();
private:int ChoiceModesIndex();  // 用于返回用户选择的游戏难度模式序号bool CheckResult();   // 用于返回用户输入的结果与游戏结果是否一致bool GetPlayerResult();  // 用于获取用户输入的颜色序号结果,返回是否成功获取结果
public:SystemUI();~SystemUI();
};

// 登陆.h

class DengLuGame
{public:string name;void SetName();string GetName(string name);
public:DengLuGame();~DengLuGame();
};

//登陆.cpp

#include "stdafx.h"
#include "DengLuGame.h"DengLuGame::DengLuGame()
{cout << "请为自己设置一个游戏昵称:" << endl;SetName();cout << "欢迎" <<this->GetName(name) << "进入游戏" << endl;cout << "请勿沉迷于游戏!!适度游戏!" << endl;PAUSE;
}DengLuGame::~DengLuGame()
{}
void DengLuGame::SetName()
{cin >> name;this->name = name;
}
string DengLuGame::GetName(string name)
{return name;
}

//主函数

#include "stdafx.h"
#include"SystemUI.h"
#include"DengLuGame.h"int main()
{string name;DengLuGame d;d.GetName(name);int iround;SystemUI s;s.StartGame();cout << "游戏已结束" << endl;return 0;
}

//stdafx.h(必须包含的头文件等)

#include<iostream>
#include<string>
#include<iomanip>
#include<windows.h>
using namespace std;
#define PAUSE system("pause")
#define CLS system("cls")
#define PC PAUSE;CLS
const int MaxNum = 7; // 该常量表示最大难度时的颜色个数const int SimpleModes = 1;  // 简单模式序号
const int NormalModes = 2;  // 普通模式序号
const int HardModes = 3;    // 困难模式序号
const int HellModes = 4;    // 地狱模式序号
const int ExitIndex = 5;   // 退出系统序号const int Red = 4;  // 红
const int Yellow = 6;  // 黄
const int Blue = 3;    // 蓝
const int Green = 2;    // 绿
const int White = 7;   // 白

疯狂猜颜色小游戏C++个人项目相关推荐

  1. 【Python学习笔记】猜颜色小游戏

    [Python学习笔记]猜颜色小游戏 前言 一.算法原理 1. 生成器部分 2. 检测器部分 二.代码 过程BUG汇总笔记 总结 前言 最近馋世界游戏大全51,心血来潮用Python写了个猜颜色,顺便 ...

  2. 初学JavaScript之颜色小游戏

    /*老师布置的的颜色小游戏的作业,根据问题显示的文字找出对应的颜色判断小游戏,可能有很多需要改进的代码,后面会多多改进的,谢谢2018-07-15 12:45:59*/<!DOCTYPE htm ...

  3. LabVIEW辨识颜色小游戏

    LabVIEW辨识颜色小游戏 功能介绍 程序实现 功能介绍 设计实现的功能是用不同的颜色来显示不同的颜色字符,让玩家辨识出所显示的字符的颜色.由于人们会下意识的说出字符显示的颜色,而非字符本身的颜色, ...

  4. 【Java速成教学】桌球游戏项目_教你用最短的时间开发桌球小游戏_Java初学者项目

    Java小游戏项目回归!今天给大家带来的是桌球游戏~ 本课程面向刚入门或者有一定Java基础的人群,帮助学员理解面向对象编程,并将基础知识进行实际应用,最终目标为开发出一个功能强大的桌球游戏.[Jav ...

  5. 【源码+图片素材】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java小游戏_Java初级项目_Java课程设计项目

    开发环境: jdk1.8 开发工具: IDEA JavaEE基础: 变量.数据类型.判断语句.循环结构.数组.集合.简单窗口创建.图形图片绘制.双缓存技术.事件-键盘事件.物体的碰撞检测.File [ ...

  6. 【python实战】使用 pygame 写一个 flappy-bird 类小游戏 | 涉及思路+项目结构+代码详解 | 新手向

    基于 pygame 的 Amazing-brick 实现 本文涉及三个 .py 文件: amazing_brick / amazing_brick_utils.py/ wrapped_amazing_ ...

  7. 魔塔小游戏Java版项目

    这是一款童年游戏4399网站上的魔塔仿制版,回忆童年,入手开发项目,全方面的代码解析 更多项目: 1.飞机大战Java版(Java+JavaSwing+多线程结构) 2.Java之马里奥游戏 3.大鱼 ...

  8. 【吞食鱼】大鱼吃小鱼,Java小游戏开发实战项目,一小时亲手做出自己的游戏

    大鱼吃小鱼,又称吞食鱼,是一款动作类小游戏.通过不断的吞吃比自己小的鱼类快速成长,最终成为海洋霸主. 本课程讲解一个大鱼吃小鱼游戏的详细开发过程.只要60分钟就可以完成一个你自己亲手开发出来的Java ...

  9. 魔塔小游戏Java版项目完整版

    这是一款童年游戏4399网站上的魔塔仿制版,回忆童年,入手开发项目,全方面的代码解析 ⭐本项目演示地址⭐ ⭐资源图片源代码私信博主⭐ 项目的完整结构图: 游戏部分闯关图: 源代码如下: 怪物数据代码:

最新文章

  1. HTTP协议类POST 和GET的区别
  2. android 8 esp8266,微信硬件平台(八) 1 esp8266从自己的服务器获取token
  3. mvc 一般注释_使用带有注释和JQuery的Spring MVC 3的Ajax
  4. react 全选反选_js中怎么将createElement出来的复选框实现全选,全不选,反选效果?...
  5. SpringMVC的URL路径映射@RequestMapping
  6. HDU2108 Shape of HDU【多边形凹凸】
  7. 智慧城市的宠儿 大数据为城市建设添彩
  8. 【优化算法】龙格-库塔优化算法【含Matlab源码 1799期】
  9. ios12完美深色模式插件_越狱插件(三)
  10. 如何在Microsoft Excel电子表格之间交叉引用单元格
  11. 日版IPhone5完美上3G
  12. 2016 word 安装6.9b mathtype后,灰色不可用
  13. 企业宣传软文怎么写?手把手教大家撰写企业宣传软文
  14. ASR项目实战-架构设计
  15. 新家未来验房电子报告版本第三代更新,验房师专业电子报告
  16. eclipse绿色版
  17. iOS 苹果2.1大礼包解决方法
  18. 互联网公司最常见的面试算法题大集合!
  19. 《运筹学基础》的思维导图
  20. 华硕笔记本k555拆机图解_华硕(ASUS)K54HR笔记本拆机清灰图解

热门文章

  1. 机房收费系统——退卡
  2. 中国防卫科技学院计算机,2014高考专业介绍:科技防卫
  3. 微信小程序关于页面不跳转的问题
  4. office2021下载|office2021安装包配置过程图文教程
  5. 计算机二级考过律,计算机二级考试考完后的这些事情你知道吗?
  6. QHeaderView 表头设置QWidget控件
  7. 软件测试用例的实际结果,软件测试结果归纳与分析
  8. C语言判断第几天(最简版)
  9. Windows平台下GTK 窗口在任务栏的隐藏问题以及解决办法
  10. Crossbar正式进入中国存储市场