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

本文记录了C++游戏制作过程中的移动功能实现,包括使用_conio.h_库的_getch()函数获取用户输入,进行角色的键盘控制,并介绍了初步的跳跃逻辑,为构建跑酷游戏奠定了基础。
摘要由CSDN通过智能技术生成

版本号: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;
}

我们游戏的雏形,就出来了

小结

我们今天制作了这个跑酷游戏的雏形,下一次,我们要加上战斗的元素

(也不知道什么时候有时间把下一篇补上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值