C++ Pfeiltasten Steuerung, wie?

04/01/2013 12:11 chaoswurm#1
Hallo zusammen,

Ich versuche mich gerade daran ein kleines Spiel zu schreiben... Zu meinem Problem, was eigentlich ganz Simple ist.
Ich will einen Button nach links, bzw. rechts steuern. Egal ob mit den Pfeiltasten oder WASD etc.
Ich habe ein KeyDown Ereignis angelegt und das ganze funktioniert auch schon mit den Standard Tasten von c++, also Space/Esc. Nun will ich, wie gesagt aber eigene Tasten verwenden. Wie ?
Habe natürlich auch schon gegoogelt, finde aber nur für mich unverständliches Zeug.

Das passiert bisher:
Code:
private: System::Void button1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) 
			 {
				 x=x+10;
				 this->button1->Location = System::Drawing::Point(x, y);
			 }
Nun will ich, dass diese Aktion nur Auftritt wenn ich z.b. die Rechte Pfeiltaste drücke, also VK_RIGHT, soweit ich das verstanden habe.
Ziemlich banales Problem...

Danke schön :)
04/01/2013 13:31 .SkyneT.#2
Also erstmal ist das C++/CLI, was kompletter Schwachsinn ist.

Hab dir mal nen Lösungsansatz in C# geschrieben, sollte leicht
in C++/CLI zu übersetzten sein.
Code:
private void KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.Right)
     {
           //Do Stuff
     }
}
04/01/2013 13:33 Rullx3#3
Sagen wir mal du hast n array feld [10][10] groß , dann deklarierst du einfach das zB beim tastendruck W das Y feld um eins gesenkt wird damit zb die figur oder sonst was hoch geht. für den rest genauso nur halt x achse + oder -1 weißt wie ich das mein?^^

Beispiel figur steht auf feld [4][3], du drückst W , nun steht die figur auf [3][3] , du drückst D und die figur geht nach [3][4]
04/01/2013 13:45 chaoswurm#4
Der Bewegungsablauf ist für mich schon verständlich, ich frage mich nur wie ich den Button die eigentliche Bewegung ausführen lassen soll, also mit was für einem Befehl.

Und, Rullx3...Das wäre eine möglichkeit, aber ohne Array ?,Ich will nur, dass sich der Button, wenn ich z.B D drücke 10 Pixel nach rechts verschoben wird, beim wiederholten drücken nochmal. Das geht ja im momment schon, nur eben mit der Leertaste, was ich ja nicht will.

Skynet´s lösung in C++ formuliert geht auch nicht. Da passiert garnichts. Wenigstens kein Error.

Code:
private: System::Void button1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) 
			 {
						if(e->KeyCode == Keys::Right)
						{
						x=x+10;
						this->button1->Location = System::Drawing::Point(x, y);
						}
			 }
04/01/2013 14:36 Schlüsselbein#5
Hast du das Event irgendwo "registriert"? Von wo soll das Framework wissen, welche Methode aufgerufen werden soll?

Und das ist _kein_ C++. Das ist C++/CLI aka Dünnschiss. Benutz C#.
04/01/2013 14:59 chaoswurm#6
Visual Studio eben, bekommen wir von der Schule so bereit gestellt.
Wenn der Befehl nicht bekannt wäre, würde Visual Studio dann nicht eine Fehlermeldung ausgeben.(?)

Ich hab es jetzt noch so versucht, was aber auch nicht geht:

Code:
#include "Windows.h"
.
.
.
int GetAsyncKeyState(int VirtualKeyCode)
       if (GetAsyncKeyState(VK_LEFT) !=0)
       {
           //DoThings
       }
04/01/2013 17:30 .SkyneT.#7
Quote:
Originally Posted by chaoswurm View Post
Visual Studio eben, bekommen wir von der Schule so bereit gestellt.
Wenn der Befehl nicht bekannt wäre, würde Visual Studio dann nicht eine Fehlermeldung ausgeben.(?)

Ich hab es jetzt noch so versucht, was aber auch nicht geht:

Code:
#include "Windows.h"
.
.
.
int GetAsyncKeyState(int VirtualKeyCode)
       if (GetAsyncKeyState(VK_LEFT) !=0)
       {
           //DoThings
       }
Dieses herumprobieren bringt dich nicht weiter, lern die
Sprache oder lass es sein...

btw: [Only registered and activated users can see links. Click Here To Register...]
04/01/2013 17:42 chaoswurm#8
Was denkst du, was ich gerade Versuche... Ist nur etwas schwer was zu lernen, wenn man keine gescheite Antwort bekommt!

Ich weis nicht wie ich C++ sage, was VK_KEY ist... bzw. wie auch immer ich das verwende, also falls noch jemand eine Antwort hat. danke