C++ 字符跑酷#4 游戏制作实录

版本号:1.3

嗨,我是一块铌金属

上次的字符酷跑,我做完之后,还是觉得不太满意,正好,题刷完了,作业也做完了,那就……做游戏吧

但是,在我刚想开一个新坑的时候,我看到了这样一篇文章:

C/C++代码实现各种控制台游戏,大神请收下我的膝盖!_Python编程导师的博客-CSDN博客_c++控制台游戏

那顿时让我精神一振啊,就想起了我之前做的酷跑游戏,好吧,那就继续做。

注:本篇有借鉴上面的那篇文章的内容,在此谢过~

首先,我们把sytrem函数替换掉,把它变成评论里的函数

 然后,添加说明,就像这样:

我把 * 换成存档点了,E就是真正的终点。

把函数改一下,基本本期的内容就差不多结束啦!

#include <bits/stdc++.h>
#include <conio.h>
#include <windows.h>using namespace std;void Clear_Screen() {    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);COORD coordScreen = {0, 0};SetConsoleCursorPosition(hConsole, coordScreen);
}char a[10][175] = {"   嗨~欢迎来到字符酷跑,在这里,I是你,#是墙,M是岩浆,碰到了就会死了,W是水,可以游上去,*是存档点  ","                          E就是终点,还有,w往上跳,a向左走,d向右走,加油~                          ", "################################# ################################# #################################", "#                               ###                               ###                               #","#                               *                                 *                                E#","#                             #####                             W####                             W##","#                            #### #                             W## #                             W##","#          #   #   #        ##### #                             W## #                             W##","#I        ## # # # # #     ###### #                             W## #                             W##","################################# ########M###MMM###MM############# ########M###MMM###MM#############",
};int Bx = 7;
int By = 1;
int x = 7;
int y = 1;
bool flag = 0;void check(int xad, int yad) {if (a[x + xad][y + yad] == '*') {a[x][y] = ' ';Bx = x + xad;By = y + yad;x = Bx;y = By;a[x][y] = 'I';} else if (a[x + xad][y + yad] == 'E') {flag = 1;} else if (a[x + xad][y + yad] == 'M') {a[x][y] = ' ';x = Bx;y = By;a[x][y] = 'I';} else if (a[x + xad][y + yad] == 'W' && a[x][y] == 'U') {a[x][y] = 'W';x += xad;y += yad;a[x][y] = 'U';} else if (a[x + xad][y + yad] == 'W' && a[x][y] == 'I') {a[x][y] = ' ';x += xad;y += yad;a[x][y] = 'U';} else if (a[x + xad][y + yad] == ' ' && a[x][y] == 'U') {a[x][y] = 'W';x += xad;y += yad;a[x][y] = 'I';} else {a[x][y] = ' ';x += xad;y += yad;a[x][y] = 'I';}
}int main() {char c;while (1) {c = _getch();if (a[x + 1][y] != '#' && a[x + 1][y] != 'W') {check(1, 0);}if (c == 'a') {if (a[x][y - 1] != '#') {check(0, -1);}} else if (c == 'd') {if (a[x][y + 1] != '#') {check(0, 1);}} else if (c == 'w' && (a[x - 1][y] == 'W' or a[x + 1][y] == 'W')) {check(-1, 0);} else if (c == 'w' && a[x + 1][y] == '#') {a[x][y] = ' ';for (int i = 0; i < 4; i++) {if (a[x - 1][y] != '#') {check(-1, 0);}}a[x][y] = 'I';} else if (c == 's') {if (a[x + 1][y] == 'W') {check(1, 0);}}Clear_Screen();for (int i = 0; i < 10; i++) {puts(a[i]);}if (flag) {break; }}system("cls");printf("You Win!");return 0;
}

这样就结束了吗?

不!

我们要添加颜色!

首先,我们把输出改一下,改成一个一个输出,这样就能判断了

然后,我们从其他地方搬来改变局部颜色的函数

最终代码:

#include <bits/stdc++.h>
#include <conio.h>
#include <windows.h>using namespace std;void Clear_Screen() {    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);COORD coordScreen = {0, 0};SetConsoleCursorPosition(hConsole, coordScreen);
}void color(int m) {HANDLE consolehend;consolehend = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(consolehend, m);
}string a[10] = {"   嗨~欢迎来到字符酷跑,在这里,I是你,#是墙,M是岩浆,碰到了就会死了,W是水,可以游上去,*是存档点  ","                          E就是终点,还有,w往上跳,a向左走,d向右走,加油~                          ", "################################# ################################# #################################", "#                               ###                               ###                               #","#                               *                                 *                                E#","#                             #####                             W####                             W##","#                            #### #                             W## #                             W##","#          #   #   #        ##### #                             W## #                             W##","#I        ## # # # # #     ###### #                             W## #                             W##","################################# ########M###MMM###MM############# ########M###MMM###MM#############",
};int Bx = 7;
int By = 1;
int x = 7;
int y = 1;
bool flag = 0;void check(int xad, int yad) {if (a[x + xad][y + yad] == '*') {a[x][y] = ' ';Bx = x + xad;By = y + yad;x = Bx;y = By;a[x][y] = 'I';} else if (a[x + xad][y + yad] == 'E') {flag = 1;} else if (a[x + xad][y + yad] == 'M') {a[x][y] = ' ';x = Bx;y = By;a[x][y] = 'I';} else if (a[x + xad][y + yad] == 'W' && a[x][y] == 'U') {a[x][y] = 'W';x += xad;y += yad;a[x][y] = 'U';} else if (a[x + xad][y + yad] == 'W' && a[x][y] == 'I') {a[x][y] = ' ';x += xad;y += yad;a[x][y] = 'U';} else if (a[x + xad][y + yad] == ' ' && a[x][y] == 'U') {a[x][y] = 'W';x += xad;y += yad;a[x][y] = 'I';} else {a[x][y] = ' ';x += xad;y += yad;a[x][y] = 'I';}
}int main() {char c;while (1) {c = _getch();color(0xF);if (a[x + 1][y] != '#' && a[x + 1][y] != 'W') {check(1, 0);}if (c == 'a') {if (a[x][y - 1] != '#') {check(0, -1);}} else if (c == 'd') {if (a[x][y + 1] != '#') {check(0, 1);}} else if (c == 'w' && (a[x - 1][y] == 'W' or a[x + 1][y] == 'W')) {check(-1, 0);} else if (c == 'w' && a[x + 1][y] == '#') {a[x][y] = ' ';for (int i = 0; i < 4; i++) {if (a[x - 1][y] != '#') {check(-1, 0);}}a[x][y] = 'I';} else if (c == 's') {if (a[x + 1][y] == 'W') {check(1, 0);}}Clear_Screen();for (int i = 0; i < 10; i++) {int len = a[i].size();for (int j = 0; j < len; j++) {switch (a[i][j]) {case 'I':color(6);printf("%c", a[i][j]);break;case '*':color(2);printf("%c", a[i][j]);break;case 'M':color(4);printf("%c", a[i][j]);break;case 'W':color(9);printf("%c", a[i][j]);break;case 'U':color(1);printf("%c", a[i][j]);break;case 'E':color(14);printf("%c", a[i][j]);break;default:color(0xF);printf("%c", a[i][j]);break;}}printf("\n");}if (flag) {break; }}system("cls");printf("You Win!");return 0;
}

这里,我使用了 switch-case 的语法来判断

这种判断方式比较简单,就是用 switch 后面的括号里的内容,一个一个的和下面的每一个 case 里的内容比较,相同进去,不相同就不进去,看下一个,和 if{} else if{} else{} 的逻辑是一样的。else代表了里面的 default

小结

今天我们给控制台无聊的黑底白字的内容改变了颜色,让我们的游戏更加丰富多彩,下一次,我们真正会加入怪物(有没有下期……不好说)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353346.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java单元测试学习(一)

Java单元测试学习&#xff08;一&#xff09; 使用TestContainer和docker结合启动redis 前提 docker环境 目录结构 依赖—这里有个小插曲 配置RedisTemplate时一直报错Error creating bean with name ‘redisConnectionFactory’ defined in class path resource [org/spr…

地震勘探基础(八)之地震动校正

地震动校正 在地震资料数字处理过程中&#xff0c;速度分析&#xff0c;动校正和水平叠加三个处理内容是相互关联的。水平叠加是为了提高地震资料的信噪比&#xff0c;要想得到好的叠加效果&#xff0c;必须做好动校正。而做好动校正&#xff0c;需要进行准确的速度分析。只有…

独立站卖家如何应对PayPal风险?3大策略教你安全收款!

PayPal是全球风险控制做得最好的第三方在线支付平台&#xff0c;PayPal付款是钱直接到卖家PayPal账户。但随着外贸交易的日益发展&#xff0c;恶意买家的问题也越来越多。如何防范风险&#xff0c;保证收款安全&#xff0c;成为独立站卖家们所关注的问题。下面为大家分享三种策…

pyhon的运算符和字符串格式化方式

pyhton的变量类型 这里可以值得一提的是&#xff0c;python是一种弱类型的语言&#xff0c;使用的感觉有些像C的auto变量类型&#xff0c;定义变量不需要写类型名字&#xff0c;只需要变量名就会自动匹配 # int a 10 # float b 10.333 # string c "nihao" # dic…

oracle自定义函数 for in loop示例

1、新建type&#xff0c;就是返回结果集有什么&#xff0c;这里就写什么&#xff08;相当于表的字段&#xff09; CREATE OR REPLACE TYPE "TYPE_NQ_FORM_STATISTICS" as object (recordid varchar2(500),form_name varchar2(200),sortone varchar2(100),sorttwo …

辨别MagicKeyboard的真伪(序列号验证版)

RT 楼主前两天海鲜市场买了一个magic Keyboard, 大概是这个样子的 起来感觉没啥差别&#xff0c;橙色也蛮好。 今天某位大佬告诉我鉴别真假的方法&#xff0c;看了之后我心都凉了 写出来给大家避避坑 将键盘用连接到Mac电脑上&#xff0c;打开系统报告&#xff0c;看USB下面的…

WinMerge使用

1、介绍&#xff1a;是一款运行于Windows系统下的免费开源的文件比较/合并工具&#xff0c;使用它可以非常方便地比较多个文档内容甚至是文件夹与文件夹之间的文件差异。 2、对于测试人员的作用&#xff1a;可以用来比较测试数据内容&#xff0c;如在进行回归测试报表数据的时…

windows系统上使用magic trackpad妙控触摸板

windows系统上使用magic trackpad妙控触摸板 另外出自用全新 jd自营随时可以全保换新 jd自营购买的 apple magic trakpad 妙控板 还有保险 随时可换新 前言 最近在家学习很少打游戏&#xff0c;想了一下翻出了我箱子里我之前mac mini用的trackpad&#xff0c;因为我之前的笔…

magic-api 框架使用

概述 先说一下为什么选择这个框架,在搬砖过程中百分之八十的代码是增删改查操作,复杂的逻辑只是占了不多部分,这个框架能够使简单增删改查的时间大大减少. magic-api 是一个基于Java的接口快速开发框架&#xff0c;编写接口将通过magic-api提供的UI界面完成&#xff0c;自动映…

Git for windows 和 cygwin

git for windows 根目录和安装目录 C:\Program Files\Gitcygwin 根目录和安装目录 C:\cygwin64建议环境变量设置. cygwin使用gitFW的命令 cygwin下装 vim插件 cygwin 配置 在当前目录打开cygwin(存在无法在中文路径下打开目录的问题) 计算机\HKEY_CLASSES_ROOT\Director…

WINCE KITL工具

KITL(Kernel Independent Transport Layer)是基于Windows CE平台的一种软件技术&#xff0c;开发商基于它可以很容易地支持各种调试功能。因为WindowsCE的调试是一种远程调试&#xff0c;所以开发工作站&#xff08;运行PB的机器&#xff09;和设备端必须要有相应的通信通道&am…

Windows--cygwin

原文网址&#xff1a;Windows--cygwin_IT利刃出鞘的博客-CSDN博客 写在前头的话 cygwin只是模拟一个Linux环境&#xff0c;使用它无法进入Windows系统的盘的路径&#xff0c;个人认为不如git bash好用。 下载 Cygwin InstallationIndex of /cygwin/Index of /cygwin/ 安装 …

如何获取 C#程序 内核态线程栈

一&#xff1a;背景 1. 讲故事 在这么多的案例分析中&#xff0c;往往会发现一些案例是卡死在线程的内核态栈上&#xff0c;但拿过来的dump都是用户态模式下&#xff0c;所以无法看到内核态栈&#xff0c;这就比较麻烦&#xff0c;需要让朋友通过其他方式生成一个蓝屏的dump&…

win7配置magic mouse和keyboard

记录一下我是如何在win7下配置magic mouse 和keyboard的。 首先打开笔记本的蓝牙&#xff0c;然后进入到控制面板&#xff0c;找到添加设备。 键盘很好添加&#xff0c;当屏幕显示一串数字时&#xff0c;到键盘上去按对应的数字键就行了。 让我意外的鼠标的配置&#xff0c;…

NYOJ 348 Magic

题目链接&#xff1a;http://acm.nyist.net/JudgeOnline/problem.php?pid348 题意&#xff1a;给你n张牌&#xff0c;让你变一个魔术&#xff1a;第1次把上面的1张牌放到底部&#xff0c;然后最上面的牌就是1&#xff0c;然后拿走1。第2次把上面的2张牌依次放到底部&#xff…

D. Magic Gems

http://codeforces.com/contest/1117/problem/D 题意&#xff1a;n&#xff0c;m(1e18) &#xff1b;有一些魔法石&#xff0c;一个魔法石可以分裂成m个普通宝石&#xff0c;每个宝石站一个单位空间&#xff1b;问有多少集合使得站n个空间&#xff1b; 思路&#xff1a; #inc…

以全能之力造非凡旗舰:荣耀Magic3系列新品发布

8月12日&#xff0c;标志性全能科技旗舰荣耀Magic3系列新品正式发布&#xff0c;荣耀Magic3、荣耀Magic3 Pro、荣耀Magic3至臻版三款机型集中亮相。 融合秩序美学、高端材质、美妙破晓时刻&#xff0c;造就非凡设计&#xff1b;延续荣耀AI与影像优势&#xff0c;首次将电影工业…

【实用工具】magic-api接口快速开发框架

【实用工具】magic-api接口快速开发框架 magic-api是一个基于Java的接口快速开发框架&#xff0c;编写接口将通过magic-api提供的UI界面完成&#xff0c;自动映射为HTTP接口。 无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。 …

magics24安装教程|magics中文版下载

magics24是由Materialise公司推出的一款功能强大的平面数据处理软件&#xff0c;通过它&#xff0c;能够使用户用最短的前置时间提供高质量样品&#xff0c;并在此过程提供全部文件&#xff0c;非常实用。该软件在完整性、灵活性、强大行和易用性等各个方面都具有不可代替的优势…

C# Winform控件包 MaterialSkin使用教程 免费开源,支持中文!

如果没有拿到控件包DLL的可以去这篇文章里自取。C# Winform控件包分享&#xff0c;免费开源&#xff0c;支持中文&#xff01; 控件比较多&#xff0c;我会抽出时间分控件逐一书写教程&#xff0c;不定时更新&#xff0c;感兴趣的朋友可以关注我。 本文将在以下几个方面进行指…