void Parser::block(std::string l) { while (input.getChar() != '}') { fin(); switch (input.getChar()) { case 'i': doIf(l); break; case 'w': doWhile(); break; case 'l': doLoop(); break; case 'r': doDoWhile(); break; case 'f': doFor(); break; case 'd': doDo(); break; case 'b': doBreak(l); break; default: assignment(); break; } fin(); } }
/* analisa e traduz um bloco de comandos */ void block(int exitLabel) { int follow; follow = 0; while (!follow) { switch (look) { case 'i': doIf(exitLabel); break; case 'w': doWhile(); break; case 'p': doLoop(); break; case 'r': doRepeat(); break; case 'f': doFor(); break; case 'd': doDo(); break; case 'b': doBreak(exitLabel); break; case 'e': case 'l': case 'u': follow = 1; break; default: other(); break; } } }
void Game::doAction(const Actions action) { switch (action) { case GO: doGo(); break; case QUIT: doQuit(); break; case PICK: doPick(); break; case DROP: doDrop(); break; case READ: doRead(); break; case BREAK: doBreak(); break; case SEE: doSee(); break; case OPEN: doOpen(); break; case FILL: doFill(); break; case USE: doUse(); break; case PUT: doPut(); break; case NOACTION: doNothing(); break; default: doNothing(); } }
void Game::doBreak() { if (object != verb) { Item toBreak = room_list[current_room]->getItem(object); if (toBreak.first != "NOITEM") { if (checkAction(toBreak, BREAK)) { cout << "What do you want to break the " << object << " with?" << endl; cout << ">"; getline(cin, object); Item result = player->getItem(object); if (checkAction(result, BREAK)) { room_list[current_room]->changeState(toBreak.first); room_list[current_room]->removeItem(toBreak.first); cout << "You broke the " << toBreak.first << " with the " << object << endl; } else { cout << "You can't break the " << toBreak.first << " with a " << object << endl; return; } } else cout << "You can't break a " << toBreak.first << endl; } else cout << "You don't have a " << object << endl; } else { cout << "What do you want to break?" << endl; cout << ">"; getline(cin, object); doBreak(); } }