Hallo Ich möchte mir ein kleines "Spiel" in c# programmmieren. Dazu will ich ein Panel mit den Pfeiltasten oder den WASD Tasten herumschieben. Das schieben funktioniert, jedoch erst mittels der Buttons. Diese möchte ich ersetzen. Wie kann ich auswerten, welche Taste das gedrückt wurde? Bin absoluter C# anfänger! Vielen dank!
So?
1 | private void Form1_KeyDown(object sender, KeyEventArgs e) |
2 | {
|
3 | switch (e.KeyCode) |
4 | {
|
5 | case Keys.W: |
6 | //bewege Panel
|
7 | break; |
8 | |
9 | case Keys.A: |
10 | //bewege Panel
|
11 | break; |
12 | |
13 | case Keys.S: |
14 | //bewege Panel
|
15 | break; |
16 | |
17 | case Keys.D: |
18 | //bewege Panel
|
19 | break; |
20 | }
|
21 | }
|
den code musst du dann noch an den subscriber hängen. einfacher: in der "properties" toolbox auf den kleinen blitz klicken und da nach "keydown" suchen dann auf das leere feld doppelklicken. natürlich wenn dein hauptfenster gerade ausgewählt ist. die vorgehensweise bezieht sich auf visual studio 2010
Problem ist nur, so ziemlich jedes Element deines Formulars kann gerade aktiv sein. Deswegen sollte man auch jedes KeyDown-Event darauf zeigen lassen. Oder man bedient sich DirectX und wertet so die gedrückte Taste aus (damit kann man dann auch grafisch gute Spiele in c# programmieren). Aber wenn du Anfänger bist bleib erstmal bei KeyDown.
in dem fall müsste es ja reichen nach jedem keydown event ein Form1.Focus() dran zu hängen oder? ansonsten geb ich dir recht. interessante frage wie man das machen kann. könnte man sich nicht theoretisch ins windows messaging system reinhängen und da die keydowns abfangen?
Samuel K. schrieb: > Problem ist nur, so ziemlich jedes Element deines Formulars kann gerade > aktiv sein. Deswegen sollte man auch jedes KeyDown-Event darauf zeigen > lassen. Oder im Hauptformular KeyPreview = true setzen sollte meistens genügen http://msdn.microsoft.com/de-de/library/system.windows.forms.form.keypreview(v=VS.100).aspx > Oder man bedient sich DirectX und wertet so die gedrückte Taste aus > (damit kann man dann auch grafisch gute Spiele in c# programmieren). > Aber wenn du Anfänger bist bleib erstmal bei KeyDown.
Frank Meier schrieb: > könnte man sich nicht theoretisch ins windows messaging system > reinhängen und da die keydowns abfangen? Da wird es mit DX aber deutlich einfacher. Man muss das SDK jedoch installieren. Hier kannst du den Aufwand sehen, mehr als ein paar Zeilen sind es nicht (http://www.riemers.net/eng/Tutorials/DirectX/Csharp/Series1/tut9.php). Allerdings hab ich schon länger nichts mehr mit DX gemacht, eher XNA.
XNA ist auch, meiner Meinung nach, deutlich einfacher und Einsteigerfreundlicher als DX. Vor allem das verschieben von Rechtecken gestaltet sich mit der SpriteBatch wirklich wirklich wirklich trivial. Alternativ könntest du auch ein Panel nehmen und da dein Rechteck rein zeichnen und die Position verändern. Das geschieht mir Panlen.OnPaint() (oder so ähnlich). Dann kommst du mit Graphics g an Zeichenwerkzeug für solche einfachen dinge. Nachtrag: Ich habe bei schnellen Änderungen und gefüllten Flächen manchmal ein Flackern feststellen müssen. Ob ich nur zu doof bin, das in den Griff zu bekommen weiß ich aber nicht. Nachtrag 2: Für XNA gibbet von MS schon nen Tut für ein ganz einfaches "Spiel": http://msdn.microsoft.com/de-de/library/bb203893.aspx
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.