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
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.
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.
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();
...
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!