webForumDet fria alternativet

Funkar inte :(

7 svar · 257 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
#1

Gör ett textbaserat rpg spel... har problem med menyerna... om man går in i inventory menyn åker man direkt ut ifrån den och sen börjas > tecken skrivas hela tiden :(

void Game()
{
	string command;
	int value;

	InitMonsters();
	InitItems();

	system("cls");

	while (1)
	{
		cout << "> ";
		cin >> command >> value;

		if (command == "inventory")
		{
			Inventory();
		}

		if (command == "fight")
		{
			Fight(player, monsterTypes[value]);
		}

		if (command == "exit")
			break;

	}

}
void Inventory()
{
	string command;
	string var1;
	int var2;
	int i;

	system("cls");

	cout << "*****************************************\n";
	cout << "************    INVENTORY    ************\n";
	cout << "*****************************************\n";
	cout << "\n";
	cout << "  " << player.name << "  ";

	switch (player.charClass)
	{
		case 0: cout << "[Barbaian]\n";
		break;
		case 1: cout << "[White Knight]\n";
		break;
		case 2: cout << "[Evil Mage]\n";
		break;
		case 3: cout << "[Choas Dwarf]\n";
		break;
	}

	cout << "\n";
	cout << "  Helm:              " << itemTypes[player.helm].name << "\n";
	cout << "  Chest plate:       " << itemTypes[player.chestPlate].name << "\n";
	cout << "  Weapon:            " << itemTypes[player.weapon].name << "\n";
	cout << "  Ring:              " << itemTypes[player.ring].name << "\n";

	cout << "\n";

	for (i=0;i<10;i++)
	{
		cout << "  Slot #" << i+1 << ": " << itemTypes[player.slot[i]].name << "\n";
	}

	cout << "\n\n\n\n";

	cout << "Command: " << endl;

	cin >> command >> var1 >> var2;

	if (command == "set")
	{
		if (var1 == "helm")
			player.helm = player.slot[var2-1];

		if (var1 == "chestplate")
			player.chestPlate = player.slot[var2-1];

		if (var1 == "weapon")
			player.weapon = player.slot[var2-1];

		if (var1 == "ring")
			player.ring = player.slot[var2-1];

		Inventory();

	}

}
Marcus EMedlem sedan maj 20021 466 inlägg
#2

Detta har varit uppe många gånger förut. Sök på cin t.ex.

Prova cin.get() efter cin >> x.

Alpha IIMedlem sedan maj 20002 993 inlägg
#3

tack :)

Hur gör jag så att det ska gå att skriva "inventory" utan att behöva skriva ett till ord efteråt eftersom det står cin >> command >> value;?

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

det funkar fortfarande inte :(

efter att inventory är klart flippar spelet ut totallt och skiter i cin

while (1)
{
	if (world[playerPosX][playerPosY].monster > -1)
		Fight(monsterTypes[world[playerPosX][playerPosY].monster]);

	cout << "> ";
	cin >> command >> value;
	cin.get();
	if (command == "go")
	{
		if (value == "north")
			playerPosX = playerPosX - 1;
		if (value == "south")
			playerPosX = playerPosX + 1;
		if (value == "west")
			playerPosY = playerPosY - 1;
		if (value == "east")
			playerPosY = playerPosY + 1;
	}
	if (command == "inventory")
		Inventory();
	if (command == "exit")
		break;
}
developerMedlem sedan aug. 2001458 inlägg
#5

Du behöver inte posta all din kod varje gång. Posta istället kortast möjliga reproducerbara exempel på problemet så ökar sannolikheten att någon tittar på ditt problem.

Dessutom kommer du själv lättare hitta problemet om du lyckas isolera kod-raden där dett uppstår.

Alpha IIMedlem sedan maj 20002 993 inlägg
#6

Men nu är det väl inte så mycket kod. :)

Varför struntar programmet i cin efter att Inventory() har anropats?

BeatboxMedlem sedan okt. 20013 217 inlägg
#7

Lämnar programmet Inventory () så den inte fastnar där ?

Alpha IIMedlem sedan maj 20002 993 inlägg
#8

ja

135 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)