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

版本号:1.4

嗨,我是一块铌金属。

对的,我期末考试考完了,又闲了。

那就……做游戏吧!

首先,为了我们的游戏像德芙一样丝滑,我使用了_kbhit()函数。

这个函数的作用是:判断是否有按键按下。

可是改完之后,又有问题出现了。

就是如果按住一个键不放,按下之后会等待0.5秒才会继续。

为此,我花了两个小时的时间,终于找到了解决方案!!!

就是这个函数:GetKeyState(int)

这个函数的作用就是判断某个按键是否按下。

那好,改一改。

#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[8] = {"################################# ################################# #################################", "#                               ###                               ###                               #","#                               *                                 *                                E#","#                             #####                             W####                             W##","#                            #### #                             W## #                             W##","#          #   #   #        ##### #                             W## #                             W##","#         ## # # # # #     ###### #                             W## #                             W##","################################# ########M###MMM###MM############# ########M###MMM###MM#############",
};int Bx = 6;
int By = 1;
int x = 6;
int y = 1;
bool flag = 0;
bool costume = 0;void check() {if (a[x][y] == 'M') {x = Bx;y = By;}if (a[x][y] == '*') {Bx = x;By = y;}if (a[x][y] == 'W') {costume = 1;} else {costume = 0;}if (a[x][y] == 'E') {flag = 1;}
}int main() {while (1) {Sleep(50);if (a[x + 1][y] != '#' && a[x + 1][y] != 'W' && x + 1 < 8) {x++;check();}Clear_Screen();printf("   嗨~欢迎来到字符酷跑,在这里,I是你,#是墙,M是岩浆,碰到了就会死了,W是水,可以游上去,*是存档点  \n");printf("                          E就是终点,还有,w往上跳,a向左走,d向右走,加油~                          \n");for (int i = 0; i < 8; i++) {int len = a[i].size();for (int j = 0; j < len; j++) {if (i == x && j == y) {if (costume == 0) {color(6);printf("I");} else {color(1);printf("U");}continue;} switch (a[i][j]) {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 'E':color(14);printf("%c", a[i][j]);break;default:color(0xF);printf("%c", a[i][j]);break;}}printf("\n");}if (flag) {break;}color(0xF);if (GetKeyState('A') < 0 && a[x][y - 1] != '#') {y--;}if (GetKeyState('D') < 0 && a[x][y + 1] != '#') {y++; check();}if (GetKeyState('W') < 0 && (a[x - 1][y] == 'W' || a[x + 1][y] == 'W')) {costume = 1;x--;} else if (GetKeyState('W') < 0 && a[x + 1][y] == '#') {costume = 0;int t = x;for (int i = t; i >= t - 4; i--) {if (a[i][y] == '#') {break;}x--;check();}}if (GetKeyState('S') < 0 && (a[x - 1][y] == 'W' || a[x + 1][y] == 'W') && a[x + 1][y] != '#') {x++;costume = 1;check();}}system("cls");printf("You Win!");return 0;
}

那……就这样?

噢,当然了,就这样结束了。

吗……?

不,当然不是啦。

虽然发文助手已经提醒我可以发文了,但是,我还是感觉空虚了点。

 那……添加一下怪物系统吧……

首先,创建一下怪物的逻辑。

我也懒得想太多,就设定他为走来走去吧。

于是我匆匆忙忙地写了个类。

他喵的,怪物呢? 

噢,没显示啊~

现在就让你出现!

 (箭头所指的怪物)

欸不是,你别跑啊!回来!你这怎么还卡墙上了????

(呜呜呜问号啊,你没得好惨啊!)

这是个bug,得治!

尾声

花费一天时间,终于是把怪物系统做好了,还希望大家能点个关注,下次更新游戏就不用担心找不到我啦~

下一次更新嘛……要等我啃完依稀_yixy大佬的EGE教程再说吧!

相信你们已经知道我下期要干嘛了……同样的,Backrooms的研发同样得等一会。

(突然发现代码没放上来)

#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[9] = {"#####################################################################################################", "#                                                                                                   #","#                               *                                 *                                E#","#                             #####                             W####                             W##","#                            #### #                             W## #                             W##","#          #   #   #        ##### #                             W## #                             W##","#         ## # # # # #     ###### #                             W## #                             W##","################################# ########M###MMM###MM############# ########M###MMM###MM#############","#####################################################################################################"
};class monster {public:bool direc = 0;int Mx = 6;int My = 5;void move() {if (a[Mx + 1][My] != '#' && Mx + 1 < 8) {Mx++;}if (direc == 0) {if (a[Mx][My + 1] == '#') {int t = Mx;for (int i = t; i >= t - 3; i--) {if (a[i][My] == '#') {break;}Mx--;}}My = My + 1;} else {if (a[Mx][My - 1] == '#') {int t = Mx;for (int i = t; i >= t - 3; i--) {if (a[i][My] == '#') {break;}Mx--;}}My = My - 1;}if ((My == 98 && direc == 0) || (My == 1 && direc == 1)) {direc = !direc;} }
};int Bx = 6;
int By = 1;
int x = 6;
int y = 1;
bool flag = 0;
bool costume = 0;
monster Mons;void check() {if (a[x][y] == 'M') {x = Bx;y = By;}if (a[x][y] == '*') {Bx = x;By = y;}if (a[x][y] == 'W') {costume = 1;} else {costume = 0;}if (a[x][y] == 'E') {flag = 1;}
}int main() {while (1) {Sleep(50);Mons.move();if (a[x + 1][y] != '#' && a[x + 1][y] != 'W' && x + 1 < 9) {x++;check();}if (x == Mons.Mx - 1 || x == Mons.Mx || x == Mons.Mx + 1) {if (y == Mons.My - 1 || y == Mons.My || y == Mons.My + 1) {x = Bx;y = By;}}Clear_Screen();printf("   嗨~欢迎来到字符酷跑,在这里,I是你,#是墙,M是岩浆,碰到了就会死了,W是水,可以游上去,*是存档点  \n");printf("                          E就是终点,还有,w往上跳,a向左走,d向右走,加油~                          \n");for (int i = 0; i < 9; i++) {int len = a[i].size();for (int j = 0; j < len; j++) {if (i == x && j == y) {if (costume == 0) {color(6);printf("I");} else {color(1);printf("U");}continue;} if (i == Mons.Mx && j == Mons.My) {color(6);printf("?");continue;}switch (a[i][j]) {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 'E':color(14);printf("%c", a[i][j]);break;default:color(0xF);printf("%c", a[i][j]);break;}}printf("\n");}if (flag) {break;}color(0xF);if (GetKeyState('A') < 0 && a[x][y - 1] != '#') {y--;}if (GetKeyState('D') < 0 && a[x][y + 1] != '#') {y++; check();}if (GetKeyState('W') < 0 && (a[x - 1][y] == 'W' || a[x + 1][y] == 'W')) {costume = 1;x--;} else if (GetKeyState('W') < 0 && a[x + 1][y] == '#') {costume = 0;int t = x;for (int i = t; i >= t - 4; i--) {if (a[i][y] == '#') {break;}x--;check();}}if (GetKeyState('S') < 0 && (a[x - 1][y] == 'W' || a[x + 1][y] == 'W') && a[x + 1][y] != '#') {x++;costume = 1;check();}}system("cls");printf("You Win!");return 0;
}

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

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

相关文章

C语言实现钢琴块小游戏(低仿拉胯版)

声明&#xff1a;这篇文章中出现的代码并非凑字数&#xff0c;与叙述内容无关的均已用文字代替&#xff0c;还请耐心阅读 &#xff08;没错俺偷懒直接把作业报告改改&#xff08;其实没怎么改&#xff09;就发出来了&#xff09; &#xff08;虽然说是小游戏&#xff0c;但不知…

用unity做的简单小游戏------“小球酷跑“

游戏介绍: 游戏由小球和障碍物组成&#xff0c;在所布置的游戏背景中进行游戏&#xff0c;如图所示。 游戏主要以控制小球移动躲过障碍物继续行走为玩法&#xff0c;是一个简单的不够完整的小游戏&#xff0c;下面将会简单地介绍在unity中如何制作出这个小游戏。 场景设置: 先…

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

版本号&#xff1a;1.0 我是~~~oneNBmetel&#xff01;&#xff01;&#xff01;我知道metel错了但我懒得改&#xff08;逃 我们今天来做&#xff01;一个简简单单的C跑酷游戏&#xff01;&#xff01;&#xff01; 首先&#xff0c;既然是做游戏&#xff0c;那头文件是必不…

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

版本号&#xff1a;1.3 嗨&#xff0c;我是一块铌金属 上次的字符酷跑&#xff0c;我做完之后&#xff0c;还是觉得不太满意&#xff0c;正好&#xff0c;题刷完了&#xff0c;作业也做完了&#xff0c;那就……做游戏吧 但是&#xff0c;在我刚想开一个新坑的时候&#xff…

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…