5 svar
295 visningar
bjork123 behöver inte mer hjälp
bjork123 4
Postad: 21 apr 2022 16:11

While loopar - huvudmeny

Hej alla! 

Jag har lite problem, jag har en huvudmeny som sedan har 4/5 val. 

Om man går in i ett av dessa val så vill jag att man ska kunna gå tillbaka till huvudmenyn. Alla "val" är med i den stora while loopen samt att alla har sin egna lilla loop. när jag lägger till break; så kommer de bara tillbaka till "val" menyn och inte den stora huvudmenyn. 

Vet inte riktigt vad jag ska ta mig till, finns det någon som kan hjälpa mig?

Här är hela koden.. 

 

using System;

namespace Godismaskin
{
class Program
{
static void Main(string[] args) {
try
{
static void Val1(string läsk, string storlek, string pris)
{
Console.WriteLine("Du har valt " + läsk + " " + storlek + " kostar: " + pris + ".\n");
Console.WriteLine("Skulle du ångra dig, tryck Enter för att gå tillbaka");
Console.ReadKey();
Console.Clear();
}
static void Spel(string vilket, string consol, string pris)
{
Console.WriteLine("Detta är " + vilket + " som går att spela på " + consol + ", priset: " + pris + ".\n");
Console.WriteLine("Skulle du ångra dig, tryck Enter för att gå tillbaka");
Console.ReadKey();
Console.Clear();
}
static int Dator(string vilkentyp, int timmar)
{
int dyrdator = 550;
int billigdator = 350;
if (vilkentyp == "billiga")
{
return billigdator * timmar;
}
else if (vilkentyp == "dyra")
{
return dyrdator * timmar;
}
else
{
Console.WriteLine("Du har gjort ett ogiltigt val, testa igen genom att tycka Enter");
Console.ReadKey();
Console.Clear();
return 0;
}
}
int val = 0;
Console.WriteLine("Hej och välkommen till Kajsas gaming hörna!\n Hos oss har du 4:a val.\nSkriv in med en siffra vilket val du väljer.");
Console.WriteLine("________________________________________\n");
Console.WriteLine("1.Läsk att köpa\n2.Datorer att spela på\n3.Statistik\n4.Vilka spel som säljs\n\n5.Avsluta maksinen..");
val = Convert.ToInt32(Console.ReadLine());
while (true)
{
switch (val)
{
case 1:
Console.Clear();
Console.WriteLine("1.Läsk");
break;
case 2:
Console.Clear();
Console.WriteLine("2.Datorer");
break;
case 3:
Console.Clear();
Console.WriteLine("3.Statistik");
break;
case 4:
Console.Clear();
Console.WriteLine("Dataspel");
break;
case 5:
Console.Clear();
Console.WriteLine("Avsluta maskinen..");
break;
}
if (val == 1)
{
while (true)
{
Console.WriteLine("Vi har 3 olika läsk att välja mellan:\nCola - Fanta - Sprite\nSkriv ut vilken du skulle vilja ha.\nVill du gå tillbaka till stora menyn, skriv ut 'Gå tillbaka");
string läsk = Console.ReadLine();
Console.Clear();
if (läsk == "Cola")
{
Val1("Cola", "33cl", "20kr");
}
else if (läsk == "Fanta")
{
Val1("Fanta", "50cl", "30kr");
}
else if (läsk == "Sprite")
{
Val1("Sprite", "33cl eller 50cl", "20kr eller 30kr");
}
else if (läsk == "Gå tillbaka")
{
break;
}
else
{
Console.WriteLine("Du har gjort ett ogiltigt val, testa igen genom att tycka Enter");
Console.ReadKey();
Console.Clear();
}
}
}
else if (val == 2)
{
while (true)
{
Console.WriteLine("Vi har två olika datorer att välja på, den dyra datorn eller den billiga.\nSkriv nedan vilken sort.");
string vilkentyp = Console.ReadLine();
Console.WriteLine("Hur många timmar vill du spela?");
int timmar = Convert.ToInt32(Console.ReadLine());
int slutpris = Dator(vilkentyp, timmar);
if (slutpris != -1)
{
Console.WriteLine("Du kommer att få betala " + slutpris + "kr.");
Console.ReadLine();
}
else if (vilkentyp == "Gå")
{
break;
}
else
{
Console.WriteLine("Du har gjort ett ogiltigt val, testa igen genom att tycka Enter");
Console.ReadKey();
Console.Clear();

}
}
}
else if (val == 3)
{
while (true)
{
Console.Clear();
Console.WriteLine("Det är alltid roligt och se hur många tjejer eller killar det är här hos oss. Vi visar alltid förra veckans statistik.");
char[] gender = { 'm', 'f', 'm', 'm', 'm', 'f', 'f', 'f', 'f', 'f', 'f' };
int male = 0, female = 0;
foreach (char g in gender)
{
if (g == 'm')
male++;
else if (g == 'f')
female++;
}
Console.WriteLine("Vi hade såhär många killar = {0}", male);
Console.WriteLine("Vi hade såhär många tjejer = {0}", female);
Console.ReadLine();
break;
}
}
else if (val == 4)
{
while (true)
{
Console.Clear();
Console.WriteLine("Vi har lite olika spel som vi säljer just nu. Dessa är några av mina favoriter.\nMario party\nZela the forgotten land\nPokemon\nHalo reach\nSkriv ut hela namnet på den du vill kolla.");
string vilken = Console.ReadLine();
Console.Clear();
if (vilken == "Mario party")
{
Spel("Mario party", "Nintendo switch", "599kr");
}
else if (vilken == "Zelda the forgotten land")
{
Spel("Zelda the forgotten land", "Wii", "299kr");
}
else if (vilken == "Pokemon")
{
Spel("Pokemon", "Nintendo switch", "659kr");
}
else if (vilken == "Halo reach")
{
Spel("Halo reach", "Xbox", "499kr");
}
else if (vilken == "Gå tillbaka") {
}
}

}
else if (val == 5)
{
Console.Clear();
Console.WriteLine("Du har valt att avsluta min lilla meny.");
Console.WriteLine("Tryck Enter för att avsluta!");
Console.ReadKey();
Console.Clear();
Console.WriteLine("Tack för att du hälsat på Kajsas gaming hörna, Vi ses nästa gång!");
break;
}
else
{
Console.Clear();
Console.WriteLine("Du gjorde dessvärre inget giltigt val,\ngå tillbaka till menyn för att göra ett nytt försök");
Console.WriteLine("Tryck Enter för att gå tillbaka");
Console.ReadKey();


} // catched felhantering , while loopar på alla som behöver break med else if
}
}
catch
{
Console.WriteLine("Du gjorde inget giltigt val, testa igen! Tryck på enter för att avsluta och testa igen.");
Console.ReadKey();
}
}
}
}

Mega7853 211
Postad: 22 apr 2022 09:51

Kopiera gärna in koden med kod-taggen. Den ser ut som "{;}" i verktygsfältet. Då kommer indenteringen med så är det lättare att läsa.

Jag har inte läst din kod, men tänk på att ett break-statement endast tar sig ur den innersta loopen, den som break står i. Vill du ta dig längre ut får du lägga till fler breaks i de yttre looparna.

Mega7853 211
Postad: 22 apr 2022 11:25

Nu har jag läst koden. Vill du att man ska komma tillbaka till huvudmenyn när man skriver "Gå tillbaka"? Det verkar inte finnas någon loop runt huvudmenyn så man kan inte komma tillbaka till den.

bjork123 4
Postad: 22 apr 2022 22:38

Hela koden är ju i en enda stor while loop, vet inte hur jag behöver lägga till en till loop :/ 

Laguna Online 30472
Postad: 23 apr 2022 08:21

Den första loopen börjar efter att du har läst in input från användaren.

bjork123 4
Postad: 23 apr 2022 08:44

TACK SÅÅÅÅÅ MYCKET!!!!! DET LÖSTE SIG! Tackkkkkkk!!!!

Svara
Close