EirikYeah Skrevet 25. mai 2012 Skrevet 25. mai 2012 Hei! Jeg skal lage et program som generer en tilfeldig bokstav (upper case), for så å la brukeren skrive på tastaturet hvilken bokstav som vises, med påfølgende rett/galt melding. Så mitt spørsmål er, hvordan gjør jeg dette? Hvordan genererer jeg tilfeldige bokstaver, og hvordan sjekker jeg om brukeren trykker rett? Setter pris på all hjelp!
GeirGrusom Skrevet 25. mai 2012 Skrevet 25. mai 2012 Tilfeldige bokstaver: static class MyProgram { private static readonly Random Randomizer = new Random() static char RandomChar() { return 'A' + Randomizer.Next() % ('Z' - 'A'); } } 2
EirikYeah Skrevet 25. mai 2012 Forfatter Skrevet 25. mai 2012 Tilfeldige bokstaver: static class MyProgram { private static readonly Random Randomizer = new Random() static char RandomChar() { return 'A' + Randomizer.Next() % ('Z' - 'A'); } } Takk! Men hvordan får jeg bokstaven som generes til å vises in en TextBox?
GeirGrusom Skrevet 25. mai 2012 Skrevet 25. mai 2012 Du setter tekstboksen .Text egenskap lik resultatet av RandomChar funksjonen. Mulig du må bruke .ToString() på resultatet også.
torbjørn marø Skrevet 27. mai 2012 Skrevet 27. mai 2012 Tilfeldige bokstaver: static class MyProgram { private static readonly Random Randomizer = new Random() static char RandomChar() { return 'A' + Randomizer.Next() % ('Z' - 'A'); } } Den var ganske elegant!
Jorndel Skrevet 30. mai 2012 Skrevet 30. mai 2012 Hvis du ønsker og gjøre det globalt, kan du buke: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx Eks: [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] public static extern short GetAsyncKeyState(int vkey); Inni en timer: if(Convert.ToBoolean(GetAsyncKeyState(int bar = int.Parse(Letter.ToString())))) MessageBox.Show("Correct"); Else MessageBox.Show("Inncorrect"); Hust og legg til: char Letter = 'A'; private static readonly Random Randomizer = new Random() static char RandomChar() { return 'A' + Randomizer.Next() % ('Z' - 'A'); } Husk at du må gjøre slik at du får satt verdien til : Letter Håper det funker, er ikke helt sikker på måten og gjøre det. Men mener jeg har gjort noe lignende før. Hvis du ønsker og gjøre det globalt, kan du buke: http://msdn.microsof...s646293(v=vs.85).aspx Eks: [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] public static extern short GetAsyncKeyState(int vkey); Inni en timer: if(Convert.ToBoolean(GetAsyncKeyState(int bar = int.Parse(Letter.ToString())))) MessageBox.Show("Correct"); Else MessageBox.Show("Inncorrect"); Hust og legg til: char Letter = 'A'; private static readonly Random Randomizer = new Random() static char RandomChar() { return 'A' + Randomizer.Next() % ('Z' - 'A'); } Husk at du må gjøre slik at du får satt verdien til : Letter Håper det funker, er ikke helt sikker på måten og gjøre det. Men mener jeg har gjort noe lignende før. PS: Gjorde en feil: if(Convert.ToBoolean(GetAsyncKeyState(int bar = int.Parse(Letter.ToString())))) Til: if(Convert.ToBoolean(GetAsyncKeyState(int.Parse(Letter.ToString()))))
angeland89 Skrevet 8. juli 2012 Skrevet 8. juli 2012 (endret) Blir vel noe i denne duren ser jeg formeg. string noe; public void main(){ noe = (string)RandomChar(); lable1.Text = noe; } private void ButtonClick1(noeObject EventArgnoe) { if(TextBox1.Text== noe) lable1.Text = "great success"; else lable1.Text = "all aboard the fail train"; } private static readonly Random Randomizer = new Random() static char RandomChar() { return 'A' + Randomizer.Next() % ('Z' - 'A'); } Endret 8. juli 2012 av angeland89
GeirGrusom Skrevet 9. juli 2012 Skrevet 9. juli 2012 (endret) PS: Gjorde en feil: if(Convert.ToBoolean(GetAsyncKeyState(int bar = int.Parse(Letter.ToString())))) Til: if(Convert.ToBoolean(GetAsyncKeyState(int.Parse(Letter.ToString())))) Det er ikke slik GetAsyncKeyState fungerer. public enum KeyState : short { KeyDown = 0x8000, KeyPressed = 0x1 } [DllImport("user32")] static extern KeyState GetAsyncKeyState(Keys key); Altså: GetAsyncKeyState forteller to ting: om knappen er trykket ned, og om knappen var trykket ned forrige gang man kalte GetAsyncKeyState. Dersom man bare er interessert i om knappen er nede eller ikke, må man teste mot mest signifikante bit. if((GetAsyncKeyState('A') & KeyState.KeyDown) == KeyState.KeyDown) Endret 9. juli 2012 av GeirGrusom 1
0stepop Skrevet 24. juli 2012 Skrevet 24. juli 2012 (endret) return 'A' + Randomizer.Next() % ('Z' - 'A'); Ikke nødvendig med modulo operasjon her. Kan forenkles (og korrigeres) til: return (char) Randomizer.Next('A','Z'); Endret 24. juli 2012 av 0stepop
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å