EirikYeah Skrevet 25. mai 2012 Del 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! Lenke til kommentar
GeirGrusom Skrevet 25. mai 2012 Del 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 Lenke til kommentar
EirikYeah Skrevet 25. mai 2012 Forfatter Del 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? Lenke til kommentar
GeirGrusom Skrevet 25. mai 2012 Del Skrevet 25. mai 2012 Du setter tekstboksen .Text egenskap lik resultatet av RandomChar funksjonen. Mulig du må bruke .ToString() på resultatet også. Lenke til kommentar
torbjørn marø Skrevet 27. mai 2012 Del 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! Lenke til kommentar
Jorndel Skrevet 30. mai 2012 Del 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())))) Lenke til kommentar
angeland89 Skrevet 8. juli 2012 Del 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 Lenke til kommentar
GeirGrusom Skrevet 9. juli 2012 Del 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 Lenke til kommentar
0stepop Skrevet 24. juli 2012 Del 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 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å