Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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
  • 1 måned senere...

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 av angeland89
Lenke til kommentar

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 av GeirGrusom
  • Liker 1
Lenke til kommentar
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...