版本号:1.1
嗨~我是oneNBmetel~
上期,我们制作了一个简单的地图,这一期,我们就要实现激动人心的——移动功能!!!
既然我们是跑酷游戏,那最主要的当然就是跳跃,以及左右移动喽
跳跃有点复杂,暂且不提
那如何获取用户现在按下了那个按键呢?
很简单,只需要使用 conio.h 里的函数,_getch()
_getch(),它的返回值是一个字符,相当于用户按下的按键
这样,我们就能很顺利地实现键盘控制
但在移动之前,我们还需要把现在人物的坐标标记一下
我们可以先把原来小人的位置标会空格,然后 x 与 y 坐标变化,再在现在的 x 与 y 坐标上填上我们的小人。
现在的代码:
#include <bits/stdc++.h>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
char a[8][128] = {
"################################",
"# ",
"# #",
"# ##",
"# ###",
"# # # # # # # ####",
"#I ## # # # # # #####",
"################################",
};
int main() {
char c;
int x = 6;
int y = 1;
while (1) {
c = _getch();
if (c == 'a') {
if (a[x][y - 1] == ' ') {
a[x][y] = ' ';
y--;
a[x][y] = 'I';
}
}
if (c == 'd') {
if (a[x][y + 1] == ' ') {
a[x][y] = ' ';
y++;
a[x][y] = 'I';
}
}
system("cls");
for (int i = 0; i < 8; i++) {
puts(a[i]);
}
}
return 0;
}
好的,下面是我们的一大难点:跳跃了
我们要判断,如果人物脚下是空格,证明它在空中,就要下落。
我们这里是跳3格。
#include <bits/stdc++.h>
#include <cstdio>
#include <conio.h>
#include <windows.h>
using namespace std;
char a[8][128] = {
"################################",
"# ",
"# ",
"# ##",
"# ###",
"# # # # ####",
"#I ## # # # # # #####",
"################################",
};
int main() {
char c;
int x = 6;
int y = 1;
while (1) {
c = _getch();
if (a[x + 1][y] == ' ') {
a[x][y] = ' ';
x++;
a[x][y] = 'I';
}
if (c == 'a') {
if (a[x][y - 1] == ' ') {
a[x][y] = ' ';
y--;
a[x][y] = 'I';
}
}
if (c == 'd') {
if (a[x][y + 1] == ' ') {
a[x][y] = ' ';
y++;
a[x][y] = 'I';
}
}
if (c == 'w' && a[x + 1][y] == '#') {
a[x][y] = ' ';
for (int i = 0; i < 3; i++) {
if (a[x - 1][y] == ' ') {
x--;
}
}
a[x][y] = 'I';
}
system("cls");
for (int i = 0; i < 8; i++) {
puts(a[i]);
}
}
return 0;
}
我们游戏的雏形,就出来了
小结
我们今天制作了这个跑酷游戏的雏形,下一次,我们要加上战斗的元素
(也不知道什么时候有时间把下一篇补上)