4 svar
545 visningar
Ace.Canon behöver inte mer hjälp
Ace.Canon 7
Postad: 9 dec 2022 14:13

Spara spelomgångar C#

Hej, jag läser Programmering 1 på Hermods och behöver lite hjälp i del 2 av uppgiften 'Gissa det hemliga talet'. Vi ska använda oss av en Do While loop, användaren får 10 chanser på sig att gissa rätt och efter 10 gissningar så får dem frågan om dem vill spela igen eller inte. Om spelaren väljer att avsluta spelet så ska programmet skriva ut poängen för alla rundorna

Plus den omgången som tog minst antal försök. Det är här jag har fastnat. Jag vet inte riktigt hur jag ska spara omgångarna och knyta samman dem med spelarens försök, för att sen hitta den bästa av dem.

Jag har börjat med att skapa en Vektor men är osäker på hur jag ska fortsätta eller om det ens är rätt väg att gå, om en 'List' är bättre?

Tack på förhand.

Lindehaven 820 – Lärare
Postad: 9 dec 2022 16:43

Hej, och välkommen till Pluggakuten!

Här kan du få hjälp, men då behöver du till att börja med visa vad du försökt (se Regler).

Eftersom vi håller på med programmering i denna del av PA, så är det lämpligt att du infogar din källkod med verktyget "Infoga programmeringskod" (symbolen {;}). Beskriv också mer konkret vad du behöver hjälp med.

Ace.Canon 7
Postad: 9 dec 2022 20:01 Redigerad: 9 dec 2022 20:45
 static void Main(string[] args)
        {
            //sparar poängen, rundorna och försöken i listor, men sparas det verkligen?//
            List<int> allRounds = new List<int>();
            //behöver jag lägga in vektorer för att allt ska sparas??//
            List<int> allTries = new List<int>();

 //efter tex 5 omgångar så vill jag att datorn räknar ut den bästa omgången, dvs omgången som tog minst försök//
            int bestResult = 0;


                if (answer == "J")
                {
                    PlayAgain = true;
                    rounds++;
                    allRounds.Add(rounds +1);
                    allTries.Add(tries);  //har skapat lista för alla omgångar + försök, sparas det?//
                    guessLimit = 10; //startar om försöken, behöver skriva 10 för att den ska göra rätt, får inte till det//
                    Console.Clear();
                }

Tillägg: 9 dec 2022 20:14

Ja förlåt.

 Spelaren kan spela hur många omgångar dem vill, dem har 10 försök på sig och när spelaren väljer att avsluta spelet så ska poängen skrivas ut samt den bästa rundan, vilket är rundan som tog minst antal försök.

Det jag behöver hjälp med hur jag ska spara försöken/tries och omgångarna/rounds för att sedan jämföra dem olika omgångarna och hitta den som tog minst antal försök. Tex att om spelaren spelar 4 omgångar och omgång 2 är den som var bäst:
"Din bästa omgång var Runda 2 där du gissade rätt på 'antalet försök'."

Jag har googlat, letat på youtube, hittar inget som förklarar hur jag ska börja skriva.

Fermatrix 7841 – Fd. Medlem
Postad: 9 dec 2022 23:07

Du behöver ha någon sorts loop. Uppgiften ber dig använda en do while.

Ace.Canon 7
Postad: 10 dec 2022 19:07

Jag är klar med loopen, har detta kvar att lösa. Kan posta hela koden istället.


Tillägg: 10 dec 2022 19:10


    internal class Program
    {
        //skapa en vektor/lista för att lagra minst försök i rundor// 

        static void Ou(string number) //här la jag in en metod för att slippa ha en massa text av samma//
        {
            Console.WriteLine("Du måste skriva in ett tal mellan 1 och 100!");
            Console.WriteLine("Skriv in ett nytt tal");
            int guess = Convert.ToInt32(Console.ReadLine());
        }
        static void Main(string[] args)
        {
            //sparar poängen, rundorna och försöken i listor, men sparas det verkligen?//
            List<int> allRounds = new List<int>();
            
            //behöver jag lägga in vektorer för att allt ska sparas??//
            List<int> allTries = new List<int>();

            //efter tex 5 omgångar så vill jag att datorn räknar ut den bästa omgången, dvs omgången som tog minst försök//
            int bestResult = 0;

           //random, försöken, rundorna och poängen//
            Random tal = new Random();
            int tries = 1;
            int guessLimit = 9;
            int points = 0;
            int guess = 0;
            int rounds = 1;
            //använder bool för att köra om loopen igen//
            bool PlayAgain = true;

            do
            {   //lägger random i loopen för att skapa ett nytt tal varje omgång//
                int slumptal = tal.Next(1, 101);
                Console.WriteLine("Välkommen, du har 10 försök på dig att gissa rätt tal.");
                Console.WriteLine("Gissa på ett hemligt nummer:");
                string strNr = Console.ReadLine();
                guess = Convert.ToInt32(strNr);

                if (guess < 1 || guess > 100)
                {
                    Ou(""); //Här har jag lagt in en metod för att inte behöva ha mycket text i och utanför loopen//
                }

                do
                { 
                    if (guess < 1 || guess > 100)
                    {
                        Ou(""); //metod//
                    }

                    if (guess < slumptal) //om spelaren gissar för lågt//
                    {
                        Console.WriteLine("Talet var för lågt, Försök igen!");
                        Console.WriteLine("Nu har du " + guessLimit + " försök kvar.");
                        guess = Convert.ToInt32(Console.ReadLine());
                        guessLimit--;
                        tries++;
                    }

                    else if (guess > slumptal) //om spelaren gissar för högt//
                    {
                        Console.WriteLine("Talet var för högt, Försök igen!");
                        Console.WriteLine("Nu har du " + guessLimit + " försök kvar.");
                        guess = Convert.ToInt32(Console.ReadLine());
                        guessLimit--;
                        tries++;
                    }
                    if (guess == slumptal)
                    {
                        Console.WriteLine("Snyggt du gissade rätt!");
                        points++;
                        break;
                    }
                    if (guessLimit == 0) //om man inte lyckas gissa rätt på 10 försök//
                    {
                        Console.WriteLine("Du har inga fler försök.");
                        points--;
                        break; //lägger in break för att avsluta den aktuella loopen//
                    }
                }
                while (guess != slumptal);

                //frågar om spelaren vill spela igen//
                Console.WriteLine("Vill du spela igen? \nJ/N");
                string answer = Console.ReadLine();
                answer = answer.ToUpper();

                if (answer == "J")
                {
                    PlayAgain = true;
                    rounds++;
                    guessLimit = 9; //startar om försöken//
                    Console.Clear();
                }
                else
                {
                    PlayAgain = false;
                    Console.Clear();
                }
               
            } while (PlayAgain);

            // detta avslut om spelaren väljer att avsluta efter flera omgångar//
            //behöver skapa en vektor/lista för att hitta bästa rundan//
            Console.WriteLine("Din bästa omgång var: " + bestResult + ".");
            Console.WriteLine("Du valde att avsluta spelet.");
            Console.WriteLine("Du fick " + points + " poäng på " + rounds + " omgångar.");
            Console.WriteLine("Hoppas att du tyckte om att spela 'Gissa det hemliga talet'. \nTryck Enter för att avsluta");
            Console.ReadKey();
        }





    }
Svara
Close