Watt Skrevet 17. desember 2010 Del Skrevet 17. desember 2010 (endret) er relativt ny i C# og holder på å lage en hangman. Programmet henter et tilfeldig ord og lagrer det i en string, oldWord. ordet blir gjort om til "_ _ _ _osv.." som blir lagret i en annen string, newWord.. Det jeg sliter med er å sette inn bokstaver som blir funnet i newWord.. er det en enkel måte å gjøre dette med regular expressions? får til å erstatte bokstaven som blir funnet med "_".. men det hjelper lite : void hangmman(string letter) { if (Regex.IsMatch(oldWord, letter)) { string pattern = letter; string replacement = " _"; Regex rgx = new Regex(pattern); newWord = rgx.Replace(oldWord, replacement); MessageBox.Show("nice!"); } label1.Text = newWord; } Endret 17. desember 2010 av Watt Lenke til kommentar
MailMan13 Skrevet 17. desember 2010 Del Skrevet 17. desember 2010 (endret) Noe sånt du er ute etter? void hangmman(string letter) { if (Regex.IsMatch(oldWord, letter)) { string pattern = "[^" + letter + "]"; string replacement = " _"; Regex rgx = new Regex(pattern); newWord = rgx.Replace(oldWord, replacement); MessageBox.Show("nice!"); } label1.Text = newWord; } Patternet bør vel også akkumulere opp alle gjettede bokstaver om det skal bli noe fremgang... Endret 17. desember 2010 av MailMan13 Lenke til kommentar
Watt Skrevet 17. desember 2010 Forfatter Del Skrevet 17. desember 2010 Noe sånt du er ute etter? void hangmman(string letter) { if (Regex.IsMatch(oldWord, letter)) { string pattern = "[^" + letter + "]"; string replacement = " _"; Regex rgx = new Regex(pattern); newWord = rgx.Replace(oldWord, replacement); MessageBox.Show("nice!"); } label1.Text = newWord; } Patternet bør vel også akkumulere opp alle gjettede bokstaver om det skal bli noe fremgang... ypperlig! akkurat det jeg var ute etter hehe, selfølgelig. Er ikke riktig ferdig enda Lenke til kommentar
GeirGrusom Skrevet 18. desember 2010 Del Skrevet 18. desember 2010 class Hangman { public string Sentance { get; set; } private List<char> Guessed { get; set; } public void Guess(char c) { if(!Guessed.Contains(c)) Guessed.Add(c); } public Hangman() { Guessed = new List<char>(); } public string ToString() { return new string(Sentance.Select(c => Guessed.Contains(c) ? c : '_').ToArray()); } public bool CheckResult(out string result) { result = ToString(); return !result.Contains('_'); } } Lenke til kommentar
Watt Skrevet 18. desember 2010 Forfatter Del Skrevet 18. desember 2010 (endret) byttet ut regex med stringbuilder.. kanskje ikke veldig elegant, men funker til mitt bruk void hangman(string letter, Label l) { int found = word.IndexOf(letter); StringBuilder sb = new StringBuilder(hiddenWord); if (found != -1) { if (lettersEntered.Contains(letter)) MessageBox.Show("Letter is already entered!"); else { while (found != -1) { sb.Remove(found, 1); sb.Insert(found, letter); found = word.IndexOf(letter, ++found); } hiddenWord = sb.ToString(); hiddenWordLabel.Text = hiddenWord; lettersEntered.Add(letter); } } else { if (lettersEntered.Contains(letter)) MessageBox.Show("Letter is already entered!"); else { lettersEntered.Add(letter); label1.Text += " " + lettersEntered.Last(); } } l.Enabled = false; } Endret 18. desember 2010 av Watt Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå