Exemple #1
0
 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;
                }
	}
}
Exemple #3
0
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();
	}
}
Exemple #4
0
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();
	}
}