void ShowCommands()
{
	//acciones de palabras simples
	std::string action = stackCommands.Consult().c_str();
	int i = 0;
	char result = 's';
	switch (Hashit(Upcase(action)))
	{
	case	ayuda:

			printf(HELP_LIST);
			colortext(WHITE); printf(LEAVE); colortext(LIGHTGREY); printf(HELP_LEAVE);
			colortext(WHITE); printf(OPEN_DOOR); colortext(LIGHTGREY); printf(HELP_OPEN_DOOR);
			colortext(WHITE); printf(CLEAR_SCREEN); colortext(LIGHTGREY); printf(HELP_CLEAR_SCREEN);
			colortext(WHITE); printf(PICKUP); colortext(LIGHTGREY); printf(HELP_PICKUP);
			colortext(WHITE); printf(EAST); colortext(LIGHTGREY); printf(HELP_EAST);
			colortext(WHITE); printf(PUT_IN_BAG); colortext(LIGHTGREY); printf(HELP_PUT_IN_BAG);
			colortext(WHITE); printf(INV); colortext(LIGHTGREY); printf(HELP_INV);
			colortext(WHITE); printf(LOOK); colortext(LIGHTGREY); printf(HELP_LOOK);
			colortext(WHITE); printf(NORTH); colortext(LIGHTGREY); printf(HELP_NORTH);
			colortext(WHITE); printf(WEST); colortext(LIGHTGREY); printf(HELP_WEST);
			colortext(WHITE); printf(EXITS); colortext(LIGHTGREY); printf(HELP_EXITS);
			colortext(WHITE); printf(DROP); colortext(LIGHTGREY); printf(HELP_DROP);
			colortext(WHITE); printf(GET_FROM_BAG); colortext(LIGHTGREY); printf(GET_FROM_BAG);
			colortext(WHITE); printf(SOUTH); colortext(LIGHTGREY); printf(HELP_SOUTH);
			
			break;
	case	mirar:
		NewRoom();
		break;
	case	norte:
		if (myMap.CheckN(myPlayer.GetLatitude(), myPlayer.GetLongitude()) > 0 && myMap.CheckN(myPlayer.GetLatitude(), myPlayer.GetLongitude()) < 100)
		{
			myPlayer.SetLatitude(myPlayer.GetLatitude() - 1);
			NewRoom();
		}
		else printf(NO_EXITS);
		break;
	case	sur:
		if (myMap.CheckS(myPlayer.GetLatitude(), myPlayer.GetLongitude())> 0 && myMap.CheckS(myPlayer.GetLatitude(), myPlayer.GetLongitude()) < 100)
		{
			myPlayer.SetLatitude(myPlayer.GetLatitude() + 1);
			NewRoom();
		}
		else printf(NO_EXITS);
		break;
	case	este:
		if (myMap.CheckE(myPlayer.GetLatitude(), myPlayer.GetLongitude())> 0 && myMap.CheckE(myPlayer.GetLatitude(), myPlayer.GetLongitude()) < 100)
		{
			myPlayer.SetLongitude(myPlayer.GetLongitude() + 1);
			NewRoom();
		}
		else printf(NO_EXITS);
		break;
	case	oeste:

		if (myMap.CheckW(myPlayer.GetLatitude(), myPlayer.GetLongitude())> 0 && myMap.CheckW(myPlayer.GetLatitude(), myPlayer.GetLongitude()) < 100)
		{
			myPlayer.SetLongitude(myPlayer.GetLongitude() - 1);
			NewRoom();
		}
		else printf(NO_EXITS);
		break;
	case	salidas:
		myMap.ShowExits(myPlayer.GetLatitude(), myPlayer.GetLongitude());
		break;
	case	cls:
		system("cls");
		break;
	case	inventario:
		printf(INVENTORY);
		if (bag.GetState() == 's')
			printf(Show_Item(bag.GetDescription().c_str()));

		if (myPlayer.inventory.Size() > 0)
		{
				for (int i = 0; i < myPlayer.inventory.Size(); ++i)
					printf(Show_Item(myPlayer.inventory.GetDescPosN(i).c_str()));
		}
			else
				if ( bag.GetState() != 's' ) printf( NOTHING_TO_SHOW );
		break;
	default:
		result = 'n';
		break;
	}
	//acciones de 2 palabras
	action = GetWord(stackCommands.Consult().c_str());
	Item::Node *tmp;
	switch (Hashit(Upcase(action)))
	{
	case	coger:
		action = CutFirstWord(stackCommands.Consult().c_str());
		action = GetWord(action.c_str());
	
		if (action == BAG)
		{
			bag.ToInventory(myPlayer.GetLatitude(), myPlayer.GetLongitude());
		}
		else
		{
			tmp = myMap.GetFromMap(myPlayer.GetLatitude(), myPlayer.GetLongitude(), action);
			if (tmp != nullptr)
			{
				printf(Pick(action.c_str()));
				myPlayer.inventory.Push(tmp->name, tmp->description);
				if (tmp->name == "espada") // habitacion - El burladero de la esquina sur este.
				{
					colortext(YELLOW);
					printf(GAME_OVER);
					gameState = endLoop;
					return;
				}
				delete tmp;
			}
			else
			{
				printf(Not_found(action.c_str()));
			}
		}
		break;
	case	tirar:
		action = CutFirstWord(stackCommands.Consult().c_str());
		action = GetWord(action.c_str());

		if (action == BAG)
		{
			bag.DropItem(myPlayer.GetLatitude(), myPlayer.GetLongitude());
	
		}
		else
		{
			tmp = myPlayer.GetInventory(action);
			if (tmp != nullptr)
			{
				printf(Drop_Item(action.c_str()));
				myMap.DropToMap(myPlayer.GetLatitude(), myPlayer.GetLongitude(), tmp);
				delete tmp;
			}
			else
			{
				printf(Inventory_void(action.c_str()));
			}
		}
		break;
	case guardar:

		if (bag.GetState() != 's')
			printf(NO_BAG);
		else
		{
			action = CutFirstWord(stackCommands.Consult().c_str());
			action = GetWord(action.c_str());

			tmp = myPlayer.GetInventory(action);
			if (tmp != nullptr)
			{
				printf(Put_in_bag(action.c_str()));
				bag.ilist.Push(tmp->name, tmp->description);
				delete tmp;
			}
			else
			{
				if (action == BAG) printf(BAG_IN_BAG);
				else printf(Inventory_void(action.c_str()));
			}
		}
		break; case sacar:

			if (bag.GetState() != 's')
				printf(NO_BAG);
			else
			{
				action = CutFirstWord(stackCommands.Consult().c_str());
				action = GetWord(action.c_str());
				tmp = bag.GetFromContainer(action);
				if (tmp != nullptr)
				{
					printf(Pick(action.c_str()));
					myPlayer.inventory.Push(tmp->name, tmp->description);
					delete tmp;
				}
				else
				{
					printf(Not_In_bag(action.c_str()));
				}
			}
			break;
		case abrir:
			if (myPlayer.inventory.Size() > 0)
				if (myPlayer.inventory.HaveItem("llave"))
				{
					action = CutFirstWord(stackCommands.Consult().c_str());
					action = GetWord(action.c_str());
					switch ((Hashit(Upcase(action))))
					{
					case sur:
						myMap.OpenDoor(myPlayer.GetLatitude() + 1 , myPlayer.GetLongitude());
						break;
					case norte:
						myMap.OpenDoor(myPlayer.GetLatitude() - 1, myPlayer.GetLongitude());
						break;
					case este:
						myMap.OpenDoor(myPlayer.GetLatitude(), myPlayer.GetLongitude() + 1);
						break;
					case oeste:
						myMap.OpenDoor(myPlayer.GetLatitude(), myPlayer.GetLongitude() - 1);
						break;
					default:
						break;
					}
				}
				else
					printf(Inventory_void("llave"));
			else
					printf(Inventory_void("llave"));
				break;
		default:
			if (result == 'n')
				printf(NO_ACTION);
		break;
	}

	Prompt();
	stackCommands.Pop();
}