4 svar
156 visningar
kapk behöver inte mer hjälp
kapk 4
Postad: 21 nov 2023 17:37 Redigerad: 21 nov 2023 18:10

Spara highscore

using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Uppdrag3._1
{
    internal class Program
    {
        static void Main(string[] args)
        {


            //Menyloop fram till användaren avslutar
            while (true)
            {
                Console.WriteLine("Välkommen till Gissa talet");
                Console.WriteLine("[S]pela spelet");
                Console.WriteLine("[H]ighscore");
                Console.WriteLine("[Q]uit");
                string menySelection = Console.ReadLine();
                int? highscore = null;


                if (menySelection == "S" || menySelection == "s")
                {
                    Random randomerare = new Random();
                    int tal = randomerare.Next(1, 101);
                    int antalGissningar = 0;
                    int maxGissningar = 10;
                    
                    //Välkomsttext
                    Console.WriteLine("Välkommen till Gissa talet!");
                    //Hämta användarens gissning
                    Console.WriteLine("Skrivn in ett tal mellan 1 och 100: ");
                    int gissning;



                    do
                    {


                        gissning = int.Parse(Console.ReadLine());
                        antalGissningar++;
                        //Slumpgenerator

                        //Olika svar beroende på inmatning från avändaren
                        if (gissning > 100)
                        {
                            Console.WriteLine("Du måste gissa på ett tal mellan 1 och 100");

                        }
                        if (tal < gissning)
                        {
                            Console.WriteLine("För högt gissat");
                        }
                        if (tal > gissning)
                        {
                            Console.WriteLine("För lågt gissat");
                        }
                        if (gissning == tal)
                        {
                            Console.WriteLine("Rätt");
                            Console.ReadKey();
                            if (!highscore.HasValue || antalGissningar < highscore)
                            {
                                highscore = antalGissningar;
                                Console.WriteLine("Grattis! Nytt highscore");
                                Console.WriteLine("Ditt nya highscore är: " + highscore);
                                Console.ReadKey();
                            }
                            




                        }
                    } while (antalGissningar != maxGissningar && gissning != tal);



                }

                    //Loop om tal och gissning ej stämmer överens
                
                else if (menySelection == "H" || menySelection == "h")
                {
                    Console.WriteLine("Ditt rekord är: " + highscore);
                }
                else if (menySelection == "Q" || menySelection == "q")
                {
                    break;
                }
                else
                {
                    Console.WriteLine("Var god välj något av alternativen.");
                }





            }


        }
    }
}

Hej!

Som så många andra har jag problem med uppgiften gissa tal. Verkar få allting att fungera utan att publicera ett uppdaterat highscore från menyn. Eller är jag ute och cyklar när det gäller menyn? Mina kommentarer sitter fel då jag klippt och klistrat som en dåre.

Mvh

anders_k 237
Postad: 21 nov 2023 18:25 Redigerad: 21 nov 2023 18:28

Du skall nog inte skriva

if (!highscore.HasValue || antalGissningar < highscore)

utan

if (highscore == null || antalGissningar < highscore)

Du har också några ReadKeys anrop, det kanske är bättre att du skriver ut på skärmen att användaren skall trycka på en knapp innan du ReadKey eller helt enkelt ta bort dem helt.

 

kapk 4
Postad: 21 nov 2023 18:33
anders_k skrev:

Du skall nog inte skriva

if (!highscore.HasValue || antalGissningar < highscore)

utan

if (highscore == null || antalGissningar < highscore)

Du har också några ReadKeys anrop, det kanske är bättre att du skriver ut på skärmen att användaren skall trycka på en knapp innan du ReadKey eller helt enkelt ta bort dem helt.

 

Hjärtligt tack för så snabbt svar! Har lite att snygga till med lite WriteLines och liknande, men ville inte lägga för mycket tid på det innan jag visste om jag skulle få det att fungera eller om jag skulle behöva göra helt.
Provade att göra förändringen som du föreslog, men highscoret uppdateras fortfarande inte och jag kan inte heller se det via menyn.

anders_k 237
Postad: 21 nov 2023 19:02 Redigerad: 21 nov 2023 19:03

Flytta också ut highscore ur din do loop över meny så att den inte blir satt till null varje gång så skall nog highscore fungera också

 

            //Menyloop fram till användaren avslutar
            int? highscore = null;
            while (true)
            {
                Console.WriteLine("Välkommen till Gissa talet");
                Console.WriteLine("[S]pela spelet");
                Console.WriteLine("[H]ighscore");
                Console.WriteLine("[Q]uit");
                string menySelection = Console.ReadLine();
...
kapk 4
Postad: 21 nov 2023 22:09
anders_k skrev:

Flytta också ut highscore ur din do loop över meny så att den inte blir satt till null varje gång så skall nog highscore fungera också

 

            //Menyloop fram till användaren avslutar
            int? highscore = null;
            while (true)
            {
                Console.WriteLine("Välkommen till Gissa talet");
                Console.WriteLine("[S]pela spelet");
                Console.WriteLine("[H]ighscore");
                Console.WriteLine("[Q]uit");
                string menySelection = Console.ReadLine();
...

Det var den detaljen som gjorde det! Tack för att du tog dig tiden!

Svara
Close