具有文字RPG功能的运动系统

时间:2018-09-24 05:12:23

标签: c++ function

我是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的情况下使自己更轻松?

就像我说的那样,除了我在网上完成一些阅读工作外,我还无法学习课程/对象,我觉得我现在会花太多时间去尝试学习/实现它们在这么短的时间内正确地进行...但是如果这样做的话也许会更好?我不确定。

非常感谢您的帮助和投入。

1 个答案:

答案 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.
}