我是C ++的初学者,目前正在研究文本RPG。我已经能够实现各种功能,这些功能可以帮助用户检查位置,与物品进行交互,检查库存,环顾四周等等,但是似乎无法获得一个好的工作移动系统。
现在,我知道OOP显然比使用函数路线要高效得多,并且不会感到沮丧,但是我正在为一个类这样做,而且我们还没有了解任何有关类/对象的知识(我们还没有在我们的课程中甚至都没有讨论过向量/数组。
这是我的代码,尝试使机芯正常工作:
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
void movement(string action, int& currentRoom) {
if (action == "MOVE NORTH") {
if (currentRoom == 1) {
currentRoom = 2;
// This part is just to check if the loop happened and changed values.
cout << currentRoom << " " << "You are now in room two." << endl;
}
}
}
int main() {
int currentRoom;
string action;
cout << "Type 'move [direction]'" << endl;
currentRoom = 1;
getline(cin, action);
boost::to_upper(action);
// This is to check (for testing purposes for me) to see if the string
// converted to uppercase properly.
cout << action << endl;
getline(cin, action);
movement(action, currentRoom);
}
现在,这不是我要在游戏中实现的最终代码。我刚刚创建了一个小文件,尝试计算此移动功能的逻辑/语法。当我运行此代码时,我可以输入'move north'并将其成功转换为MOVE NORTH,但是该函数似乎没有调用或执行任何操作。我在这里做错了什么?我有什么办法可以在不完全依赖OOP的情况下使自己更轻松?
就像我说的那样,除了我在网上完成一些阅读工作外,我还无法学习课程/对象,我觉得我现在会花太多时间去尝试学习/实现它们在这么短的时间内正确地进行...但是如果这样做的话也许会更好?我不确定。
非常感谢您的帮助和投入。
答案 0 :(得分:0)
int main() {
int currentRoom;
string action;
cout << "Type 'move [direction]'\n";
currentRoom = 1;
getline(cin, action);
boost::to_upper(action);
cout << action << '\n'; // here you verify
getline(cin, action); // but then you read again from stdin
movement(action, currentRoom); // and pass it on without changing it toupper.
}