Gå til innhold

Anbefalte innlegg

Skrevet

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!

Videoannonse
Annonse
Skrevet

Tilfeldige bokstaver:

static class MyProgram
{
 private static readonly Random Randomizer = new  Random()
 static char RandomChar()
 {
   return 'A' + Randomizer.Next() % ('Z' - 'A');
 }
}

  • Liker 2
Skrevet

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?

Skrevet

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! :)

Skrevet

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()))))

  • 1 måned senere...
Skrevet (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 av angeland89
Skrevet (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 av GeirGrusom
  • Liker 1
  • 2 uker senere...
Skrevet (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 av 0stepop

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...