Hjälp med en uppgift Programmering 1

Permalänk
Medlem

Hjälp med en uppgift Programmering 1

Hej,
Jag är en nybörjare inom programmering och studerar just nu Programmering 1 och håller på med min slutuppgift och har krockat lite. Hjälpmedlen vi fått tycker jag är väldigt otydliga och förklarar inte så att man förstår som en nybörjare så väldigt mycket känner jag mig förvirrad inom. IALLAFALL, för att komma fram till saken. Jag håller på med min slutuppgift och vad jag vill uppnå med min kod är först en meny med två val som användaren sedan ska skriva in vilket hen väljer. Efter användaren har valt så vill jag att det ska komma ytterligare val av en annan variant och i mitt val är det en pil-meny. Jag har koderna för båda programmen men jag förstår bara inte hur jag ska få båda att fungera tillsammans?? Någon som vet och kan förklara???
Här är koderna jag har:

using System; class MainClass { public static void Main (string[] args) { int x = 0; while (true) { Console.Clear(); Console.WriteLine("Välj något av nedanstående:"); Console.WriteLine("**************************"); Console.WriteLine("1.Stå och sola"); Console.WriteLine("2.Ligga och sola"); //för att få användarens val Console.WriteLine ("Skriv in ditt val"); x = Convert.ToInt32(Console.ReadLine()); //funktion för att få valet if (x == 1) { Console.Clear(); Console.WriteLine("Du valde Stå och sola"); Console.ReadKey(); } else if (x == 2) { Console.WriteLine("Du valde Ligga och sola"); break; } //om användare väljer ogiltigt val else{ Console.WriteLine("Du gjorde inget giltigt val\nTryck Enter för att gå tillbaka till menyn!"); Console.ReadKey(); } } string[] menuOptions = new string[] {"Rum.1\t\t", "Rum2.\t\t", "Rum3.\t\t", "Rum4.\t\t", "Avsluta\t\t"}; int menuSelect = 0; //variabel med användarens val while (true) { //loop Console.Clear(); //städa menyn Console.CursorVisible = false; //dölja cursor if(menuSelect == 0) { Console.WriteLine("* " + menuOptions[0] + "<--"); Console.WriteLine(menuOptions[1]); Console.WriteLine(menuOptions[2]); Console.WriteLine(menuOptions[3]); Console.WriteLine(menuOptions[4]); } else if(menuSelect == 1) { Console.WriteLine(menuOptions[0]); Console.WriteLine("* " + menuOptions[1] + "<--"); Console.WriteLine(menuOptions[2]); Console.WriteLine(menuOptions[3]); Console.WriteLine(menuOptions[4]); } else if(menuSelect == 2) { Console.WriteLine(menuOptions[0]); Console.WriteLine(menuOptions[1]); Console.WriteLine("* " + menuOptions[2] + "<--"); Console.WriteLine(menuOptions[3]); Console.WriteLine(menuOptions[4]); } else if(menuSelect == 3) { Console.WriteLine(menuOptions[0]); Console.WriteLine(menuOptions[1]); Console.WriteLine(menuOptions[2]); Console.WriteLine("* " + menuOptions[3] + "<--"); Console.WriteLine(menuOptions[4]); } else if(menuSelect == 4) { Console.WriteLine(menuOptions[0]); Console.WriteLine(menuOptions[1]); Console.WriteLine(menuOptions[2]); Console.WriteLine(menuOptions[3]); Console.WriteLine("* " + menuOptions[4] + "<--"); } var keyPressed = Console.ReadKey(); //för att pilen inte ska kunna gå över menyvalen if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length -1) { menuSelect++; } //samma fast åt andra hållet else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect >= 1) { menuSelect--; } else if (keyPressed.Key == ConsoleKey.Enter) { switch (menuSelect) { case 0: FirstChoise(); break; case 1: SecondChoise(); break; case 2: ThirdChoise(); break; case 3: FourthChoise(); break; case 4: FifthChoise(); break; } } } } public static void FirstChoise() { Console.WriteLine("Du valde Rum1."); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!"); Console.ReadKey(); } public static void SecondChoise() { Console.WriteLine("Du valde Rum2."); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!"); Console.ReadKey(); } public static void ThirdChoise() { Console.WriteLine("Du valde Rum3."); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!"); Console.ReadKey(); } public static void FourthChoise() { Console.WriteLine("Du valde Rum4."); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn!"); Console.ReadKey(); } public static void FifthChoise() { Console.WriteLine("Programmet avslutas!"); Console.ReadKey(); Environment.Exit(1); } }

Permalänk
Medlem

Jag förstår nog inte riktigt problemet men om det är så att du vill att en meny ska gå vidare till en annan meny så lägger du ju bara koden som det första menyvalet går till under det?

Permalänk
Medlem
Skrivet av danneee:

Jag förstår nog inte riktigt problemet men om det är så att du vill att en meny ska gå vidare till en annan meny så lägger du ju bara koden som det första menyvalet går till under det?

Jaa asså jag vill ju att den andra menyn ska ha en annan funktion och att valen som kommer därefter andra menyn också ska ha en annan typ av funktion än den första menyn. Vilket jag har skrivit där nere i koden men den andra menyn kommer inte upp när jag testkör

Permalänk
Medlem

Även om du skriver en 2:a i första menyn?

Permalänk
Medlem
Skrivet av annisen:

Jaa asså jag vill ju att den andra menyn ska ha en annan funktion och att valen som kommer därefter andra menyn också ska ha en annan typ av funktion än den första menyn. Vilket jag har skrivit där nere i koden men den andra menyn kommer inte upp när jag testkör

Den andra menyn kan bara visas om du väljer alternativ två, eftersom det är det enda stället du använder break, vilket avbryter loopen.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem
Skrivet av jensa86:

Även om du skriver en 2:a i första menyn?

Jag testkörde den igen och efter jag har valt menyval 2 så kommer det fram. Men skulle vilja att det kommer fram efter användaren väljer menyval 1 också. Och sen skulle jag vilja ha en text ovanför meny 2 där det står t ex "Vilket rum vill du ha:", går det att bara lägga till en Console.WriteLine till det?

Permalänk
Medlem
Skrivet av noMad17:

Den andra menyn kan bara visas om du väljer alternativ två, eftersom det är det enda stället du använder break, vilket avbryter loopen.

Går det om jag lägger till en break i alternativ 1 också eller kommer det första loopen?

Permalänk
Medlem
Skrivet av annisen:

Jaa asså jag vill ju att den andra menyn ska ha en annan funktion och att valen som kommer därefter andra menyn också ska ha en annan typ av funktion än den första menyn. Vilket jag har skrivit där nere i koden men den andra menyn kommer inte upp när jag testkör

Det ska väl inte spela någon roll, du kan nästla hur många loopar som helst i varandra och göra menyer på menyer utan att det spelar någon roll. Bara att komma ihåg vilken bool man ska ändra till false för att bryta loopen.
OM jag förstår ditt dilemma rätt alltså. Eller har du testat och det inte funkar?

edit: jag missuppfattar nog problemet helt hah

Permalänk
Medlem
Skrivet av annisen:

Går det om jag lägger till en break i alternativ 1 också eller kommer det första loopen?

Det enda sättet för den andra menyn att visas är ifall den första loopen avbryts, vilket du gör med break.
Ja, det går bra att lägga en sådan i alternativ 1 också.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem

Det löste sig!
Tack snälla för all hjälp ni är guld!!!!

Permalänk

Två små kommentarer...

Console.WriteLine("Du gjorde inget giltigt val\nTryck Enter för att gå tillbaka till menyn!"); Console.ReadKey();

Du skriver att man ska trycka på returtangenten men går vidare oavsett vilken tangent man trycker på.

"Choice" är felstavat på en massa ställen.