Hjälp med ja eller nej kod C#

Trädvy Permalänk
Medlem
Registrerad
Sep 2011

Hjälp med ja eller nej kod C#

Hejsan! Googlat igenom och försökt hitta alternativ till att stoppa in en funktion för "Ja eller nej frågor". Hittade Messagebox men av någon anledning kan jag inte använda det i visual studios (nånting jag måste missat men som ej nämnts). Har någon något tips på andra sätt?

Håller på med ett liknande spel till hänga gubben och det är när gissningen av själva ordet blivit rätt jag vill att den ställer frågan spela igen?, OM JA, spelas igen, OM NEJ, återgå till meny/EXIT

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Mar 2011

@skriy:

Är det i ett gränssnitt du menar?
Använder du Windows Forms eller WPF (eller arbetar du med webb - MVC t.ex.)?

Windows Forms (kodexempel längst ned):
MessageBox

WPF:
MessageBox

Trädvy Permalänk
Medlem
Plats
åkersberga, Täby
Registrerad
Jun 2004

https://msdn.microsoft.com/en-us/library/system.windows.forms...

MessageBox(NULL, "meddelande", "din felkod", NULL);

Dator 1.
FX 8350 4.7Ghz | 24GB ram | MSI Radeon RX 480 | Kingston SSD | Fractal design R2.0 | PSU : Fractal 650W
Dator 2 (Bärbar). HP Folio 9470m

Trädvy Permalänk
Medlem
Registrerad
Sep 2011
Skrivet av debben:

@skriy:

Är det i ett gränssnitt du menar?
Använder du Windows Forms eller WPF (eller arbetar du med webb - MVC t.ex.)?

Windows Forms (kodexempel längst ned):
MessageBox

WPF:
MessageBox

Skrivet av martin_cs:

Det är detta jag menar: https://i.gyazo.com/46d1d500287f05308d3cd54927a58b9b.png

Borde jag implementera "using system.Windows.form;"?
Det funkar inte för mig för att jag missar något

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Apr 2009

@skriy: Det ser ut som att du göra en konsol-applikation. Då kan du inte använda några funktioner för gränssnitt utan du får koda en lösning baserad på konsol-gränssnittet.

Hur har du gjort när du frågar om vilken bokstav spelaren vill gissa på?

Trädvy Permalänk
Medlem
Registrerad
Sep 2011
Skrivet av Golvmopp:

@skriy: Det ser ut som att du göra en konsol-applikation. Då kan du inte använda några funktioner för gränssnitt utan du får koda en lösning baserad på konsol-gränssnittet.

Hur har du gjort när du frågar om vilken bokstav spelaren vill gissa på?

Ah alright, det är inte hänga gubben grej det här, utan mer en simplare variant

edit: Just nu om man gissar rätt går den direkt till meny och alltså inte igenom messagebox osv.

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Apr 2009
Skrivet av skriy:

Ah alright, det är inte hänga gubben grej det här, utan mer en simplare variant

https://gyazo.com/67b4aeff0499b9fabdb0d7887c2c39ea

edit: Just nu om man gissar rätt går den direkt till meny och alltså inte igenom messagebox osv.

Jag skulle ha lagt en loop runt hela programmet som körs så länge en variabel är sann. Sedan ställa frågan "vill du fortsätta spela?" och låta användaren svara med en ReadLine. Beroende på vad användaren svarar så manipulerar du variabeln som styr huvud-loopen.

Psuedokod:

bool keepPlaying = true;

while(keepPlaying)
{
// Kod för spel

Console.WriteLine("Vill du fortsätta spela? Svara JA/NEJ");
String check = Console.ReadLine();

if(check.equals("JA")
{
//do nothing
}
else if(check.equals("NEJ")
{
keepPlaying = false;
}
}

Trädvy Permalänk
Medlem
Registrerad
Sep 2011
Skrivet av Golvmopp:

Jag skulle ha lagt en loop runt hela programmet som körs så länge en variabel är sann. Sedan ställa frågan "vill du fortsätta spela?" och låta användaren svara med en ReadLine. Beroende på vad användaren svarar så manipulerar du variabeln som styr huvud-loopen.

Psuedokod:

bool keepPlaying = true;

while(keepPlaying)
{
// Kod för spel

Console.WriteLine("Vill du fortsätta spela? Svara JA/NEJ");
String check = Console.ReadLine();

if(check.equals("JA")
{
//do nothing
}
else if(check.equals("NEJ")
{
keepPlaying = false;
}
}

Så om man väljer "JA" behöver man ingen kod för att spelet ska reloopas?

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Okt 2011
Skrivet av skriy:

Så om man väljer "JA" behöver man ingen kod för att spelet ska reloopas?

Koden för loopen är utanför, så länge variablen keepPlaying är sann kommer spelet fortsätta. När man inte vill fortsätta längre ändras den till falsk. while(keepPlaying) dvs. Så länge keepPlaying är sant så gör det som är inom klamrarna.

Corsair Vengeance LPX 2x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)

Trädvy Permalänk
Medlem
Registrerad
Sep 2011

Tack för alla ovanstående svar, är det någon som kan se vad jag gör för fel här? Då string svaret inte registreras vid "if"

Trädvy Permalänk
Medlem
Registrerad
Maj 2013
Skrivet av skriy:

Tack för alla ovanstående svar, är det någon som kan se vad jag gör för fel här? Då string svaret inte registreras vid "if"

https://gyazo.com/59b3ec8e5c1d8b1cd72fc0442ad30313

Du har skapat variabeln i ett annat "scope"( d.v.s brackets, { } ).
För att komma åt "svaret" så måste du använda den i samma scope som den skapades. Lägg

string svaret = Console.ReadLine();

ovanför if-satsen och försök igen

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Registrerad
Sep 2011
Skrivet av Pamudas:

Du har skapat variabeln i ett annat "scope"( d.v.s brackets, { } ).
För att komma åt "svaret" så måste du använda den i samma scope som den skapades. Lägg

string svaret = Console.ReadLine();

ovanför if-satsen och försök igen

https://gyazo.com/d498bdd0b5e0ba83276f1d3676e49ace

Sådär?

Trädvy Permalänk
Medlem
Registrerad
Maj 2013

Eftersom Console.ReadLine() blockerar tills dess att du skrivit in något, så kommer du alltså behöva skriva JA/NEJ innan du får se om du har skrivit rätt eller fel svar.
Släng in koden ovanför den andra if-satsen.

string svaret = Console.ReadLine(); if(svaret == "JA") { }

Något du även bör tänka på är att du gjort så att endast JA och NEJ kommer fungera. Skrivs ja eller nej så kommer inget att hända.
Det går att ordna med

if(svaret.ToLower() == "ja") { } else break;

-- du vill väl inte att det ska spela någon roll om användaren skriver nej? Allt du egentligen behöver veta är om användaren skriver ja...

En till sak som jag vill poängtera är att även fast du skriver in ett fel svar så kommer du få skriva in ja/nej, detta för varje ord i OrdVal.
Finns lite annat smått som du själv får klura ut sen

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Registrerad
Sep 2011
Skrivet av Pamudas:

Eftersom Console.ReadLine() blockerar tills dess att du skrivit in något, så kommer du alltså behöva skriva JA/NEJ innan du får se om du har skrivit rätt eller fel svar.
Släng in koden ovanför den andra if-satsen.

string svaret = Console.ReadLine(); if(svaret == "JA") { }

Något du även bör tänka på är att du gjort så att endast JA och NEJ kommer fungera. Skrivs ja eller nej så kommer inget att hända.
Det går att ordna med

if(svaret.ToLower() == "ja") { } else break;

-- du vill väl inte att det ska spela någon roll om användaren skriver nej? Allt du egentligen behöver veta är om användaren skriver ja...

En till sak som jag vill poängtera är att även fast du skriver in ett fel svar så kommer du få skriva in ja/nej, detta för varje ord i OrdVal.
Finns lite annat smått som du själv får klura ut sen

Tack så mycket! Vet att det är mycket fel, kan tänka mig att loopen är fel då den aldrig gått till "ja och nej frågan" sen jag började med koden, så ska börja läsa på allt igen.

Trädvy Permalänk
Medlem
Registrerad
Sep 2011

Försöker få den att loopa tills gissningen är korrekt, hur kan jag få den att känna igen om ordet är rätt i första if-satsen. Med tanke på att den just nu loopas runt oavsett rätt/fel svar.
Ska man inte använda sig av foreach här?

https://gyazo.com/a0a527fc2889b740b969d627da4f7d56

Trädvy Permalänk
Medlem
Plats
åkersberga, Täby
Registrerad
Jun 2004

Din loop är alltid "true".

Du får breaka den om användaren gissat rätt.

Jag hade inte skrivit while(true)

Utan skapat en variabel av typen boolean som sedan fått värdet false om användaren gissat rätt.

t.ex.

while(running){ if(gissat_rätt){ running = false; } }

Dator 1.
FX 8350 4.7Ghz | 24GB ram | MSI Radeon RX 480 | Kingston SSD | Fractal design R2.0 | PSU : Fractal 650W
Dator 2 (Bärbar). HP Folio 9470m