Система движения с функциями для текстовой RPG - PullRequest
0 голосов
/ 24 сентября 2018

Я начинающий студент C ++ и в настоящее время работаю над текстовой RPG.Мне удалось реализовать различные функции, которые помогают пользователю проверять местоположение, взаимодействовать с предметами, проверять инвентарь, осматриваться и т. Д., Но у меня не получается получить хорошую рабочую систему движений.

Теперь я понимаю, что ООП, очевидно, будет НАМНОГО более эффективным и менее расстраивающим, чем путь по функции, но я делаю это для класса, и мы еще ничего не узнали о классах / объектах(Мы даже не изучали векторы / массивы в нашем классе).

Вот мой код, чтобы попытаться заставить движение работать:

#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);
}

Теперь, это не окончательный код, который я внедряю в свою игру.Я только что создал небольшой файл, чтобы попытаться выработать логику / синтаксис этой функции перемещения.Когда я запускаю этот код, я могу набрать «переместить север», и он успешно переходит в «ДВИЖЕНИЕ СЕВЕР», но функция, похоже, не вызывает и не выполняет никаких действий.Что я здесь не так делаю?Можно ли как-нибудь сделать это проще для себя, не полностью опираясь на ООП?

Как я уже сказал, я не смог выучить классы / объекты, кроме того, что читал в Интернете.и я чувствую, что сейчас я бы взял на себя слишком много усилий, чтобы попытаться выучить / реализовать их должным образом за такое короткое время ... но, может быть, было бы к лучшему, если бы я это сделал?Я не уверен.

Любая помощь и вклад очень ценится.

1 Ответ

0 голосов
/ 24 сентября 2018
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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...