Funkar inte :(

C/C++

7 svar · 276 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Trådstart#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();

	}

}
Medlem 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.

Medlem 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;?

Medlem 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;
}
Medlem 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.

Medlem 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?

Medlem sedan okt. 20013 217 inlägg
#7

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

Medlem sedan maj 20002 993 inlägg
#8

ja

253 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)