Permalänk

Hänga gubbe i C#

Hej!
har tagit bort information då denna info har används till fusk på en skola.

mvh

Visa signatur

----------------------------------
Min dator
Bitfenix Neos Röd/Vit - 500W EVGA - Intel Core i5 4460 - 16Gb 1600Mhz Kingston Hyper X Fury Ram - 2x120Gb SSD - GTX 960 2Gb - mATX ACER Inc MS-7869

Permalänk
Medlem

Ett enkelt sätt är att du loopar tecken för tecken i ordet, när du hittar ett tecken som motsvarar det tecken man gissar på så skriver du ut det på samma position i en annan sträng.

Ex:
Det ordet man ska gissa är "giraffhals"
Resultatsträngen från början är alltså "__________" (11 understreck)

Om man gissar på "a" så blir resultatsträngen: "___a___a__"
Gissar man vidare på "e" så händer ingenting: "___a___a__"
Gissar man på "f" så blir resultatsträngen: "___aff_a__"
osv osv....

Sen kan man lägga till att man får gissa på delar av ordet eller hela ord.

Jag rekommenderar verkligen att du gör en klass av detta om du har möjlighet och kunskapen till att göra det.
Ex:

class Hangman void init(string hiddenWord, int maxGuess); //Initierar Hangman-klassen med ett ord som ska gissas samt hur många gånger man får gissa void guessChar(char chr); //Gissar ett tecken string getResultString(); //Returnerar den nuvarande resultatsträngen osv....

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

Nu har jag kommit en bit.

...

Visa signatur

----------------------------------
Min dator
Bitfenix Neos Röd/Vit - 500W EVGA - Intel Core i5 4460 - 16Gb 1600Mhz Kingston Hyper X Fury Ram - 2x120Gb SSD - GTX 960 2Gb - mATX ACER Inc MS-7869

Permalänk
Medlem
Skrivet av hambergaren:

Hej igen!

nu har jag kommit en bit med spelet. Problemet som är kvar är att jag vill kunna testa den gissade bokstaven med det hemliga ordet (variabeln = slumpat). För att kunna skapa antalet fel man gör.
Har försökt med en if sats som testar den gissade bokstaven med ordet, men då blir det ett fel för varje bokstav i ordet som den inte är lika med.

ex
if (gissa == slumpat.Length)
{antal++;}

Hur gör jag för att få den att testa så att ifall bokstaven inte finns någonstans i ordet. Och om den inte finns alls i någon av bokstäverna så ska den göra; antal++;

nedan är hela koden. Ska också försöka skapa en klass med alla ord man lägger in. Första meny valet ska bli en egen klass.

"Hur gör jag för att få den att testa så att ifall bokstaven inte finns någonstans i ordet. Och om den inte finns alls i någon av bokstäverna"
Jag ser inte skillnaden mellan dessa två meningar.

Egentligen bör du inte vara intresserad av att testa om det är fel. Du bör kontrollera om det är rätt. Om det inte är rätt så räknar du det som ett fel. Men alla tänker olika så jag ska inte sätta käppar i hjulet för hur du väljer att lösa det.

Hur man testar om en sträng innehåller minst ett specifikt tecken

return "abc123".Contains('c'); //returnerar true return "abc123".Contains('d'); //returnerar false

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

...

Visa signatur

----------------------------------
Min dator
Bitfenix Neos Röd/Vit - 500W EVGA - Intel Core i5 4460 - 16Gb 1600Mhz Kingston Hyper X Fury Ram - 2x120Gb SSD - GTX 960 2Gb - mATX ACER Inc MS-7869

Permalänk

....

Visa signatur

----------------------------------
Min dator
Bitfenix Neos Röd/Vit - 500W EVGA - Intel Core i5 4460 - 16Gb 1600Mhz Kingston Hyper X Fury Ram - 2x120Gb SSD - GTX 960 2Gb - mATX ACER Inc MS-7869

Permalänk

Gör klass av val1 i programmet.

....

Visa signatur

----------------------------------
Min dator
Bitfenix Neos Röd/Vit - 500W EVGA - Intel Core i5 4460 - 16Gb 1600Mhz Kingston Hyper X Fury Ram - 2x120Gb SSD - GTX 960 2Gb - mATX ACER Inc MS-7869

Permalänk
Medlem
Skrivet av hambergaren:

Tack!!
Går det använda den i en if sats? har försökt men lyckas inte få den att fungera. Den säger bara att det inte går att convertera från char till string.

Självklart går det. Alla uttryck som resulterar i en bool (true/false) går att använda i en if-sats.

var guessedChar = 'c'; var hiddenWord = "abc"; if (hiddenWord.Contains(guessedChar)) Console.WriteLine("true"); else Console.WriteLine("false");

Skrivet av hambergaren:

Jag löste det så här!

string bokstav = Convert.ToString(gissa);

if (slumpat.Contains(bokstav))
{

}
else
{
antal++;
}

Det är helt ok. Contains() på string har överlagrade metoder som inte bara tar char, utan även string. Det är för att kontrollera om sekvensiella tecken existerar i lika följd i strängen.

Skrivet av hambergaren:

Hur kan man göra för att skapa en klass av Word arrayen.

Jag la över arrayen till en annan klass och det fungerar. men när jag ska lägga över tilldelningen av data till varje index av arrayen så fungerar det inte. Det ger felmeddeande. Vad gör jag för fel?
string[] word = new string[5]
orden.word[0] = "projekt";
orden.word[1] = "annanas";
orden.word[2] = "pytonorm";
orden.word[3] = "indian";
orden.word[4] = "stad";

Jag vet inte riktigt hur din kod ser ut för det.
Du behöver en instans av din Word-klass. Sen behöver du rimligtvis lite metoder för att arbeta med klassen på ett trevligare sätt.

word.addWord("projekt");

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

Håller även på med detta och det fungerar utom en sak, de ord som man som spelare kan skriva in sparas efteråt och när man listar dom men när man väl startar spelet så går den tillbaka till de ord jag lagt in i själva koden, frågan är vad som kan vara fel?