You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Tuesday, November 28th 2006, 3:48pm

Problem mit KeyEventArgs

Hi, ich bins wieder mal ;)

Also Ausgangsstellung meines Problemes:
Ich habe eine PictureBox in einem Panel, welche ich mit Hilfe von Buttons in diesem Panel rumbewege habe.
Nun will ich ein Level höher gehen und die PictureBox nur mit den Pfeiltasten aufder Tastatur bewegen.

Fehler:
Es wird kein Fehler vom Compiler ausgegeben. Sobald ich das Projekt kompiliere und das Objekt mit den Pfeiltasten bewegen will, geschieht nichts. Also das Programm reagiert gar nicht erst auf die Pfeiltasten.


Infos:
WinXP
VC++.Net 2003 (Form wurde im Designer erstellt)

Mein bisheriger Code:

C Quellcode

1
2
3
this->Load += new System::EventHandler(this, frmGame_Load);
			//Eventhandler für die Pfeiltasten, hier könnte der Fehler liegen
			this->KeyDown += new System::Windows::Forms::KeyEventHandler(this, frmGame_KeyDown);


C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
private: System::Void frmGame_Load(System::Object *  sender, System::EventArgs* e)
			 {
 
				//Spieler laden
				picSpieler->Image = Image::FromFile("smiley.png");
 
				//Timer anhalten, weil er beim Laden der Form anfängt zu ticken :S
				gameTimer->Stop();
 
				//Stop-Button disablen
				btnStopTimer->Enabled = false;
 
			}
	private: System::Void frmGame_KeyDown(System::Object * sender, System::Windows::Forms::KeyEventArgs * f)
				 {
					 //Ränder des Panels deklarieren um Überschreitung zu verhindern
					int maxX = 375;
					int minX = -1;
					int maxY = 239;
					int minY = -1;
 
					//Hilfsvariable für Endlosschleife
					bool bolSpielen = true; 
 
 
					//Spielfunktion, ermöglicht es per Pfeiltasten 
					//den Spieler zu bewegen. Dazu wird eine EndlosSchleife
					//benutzt.
					do
					{
						//Location des Spielers ermitteln (Point)
						Point spielerLoc = Point(picSpieler->get_Location());
						//X- und Y-Koordinate des Spielers in Variablen speichern
						int spielerX = Convert::ToInt32(spielerLoc.get_X());
						int spielerY = Convert::ToInt32(spielerLoc.get_Y());
 
						switch(f->KeyCode){
 
							case System::Windows::Forms::Keys::Up:
								if((spielerY - 15) > minY){
									picSpieler->Location = Point(spielerX, spielerY - 15);
								}
								if((spielerY - 15) <= minY){
								}
								break;
 
							case System::Windows::Forms::Keys::Right:
								if((spielerX + 15) < maxX){
									picSpieler->Location = Point(spielerX + 15, spielerY);
								}
								if((spielerX + 15) >= maxX){
								}
								break;
 
							case System::Windows::Forms::Keys::Down:
								if((spielerY + 15) < maxY){
									picSpieler->Location = Point(spielerX, spielerY + 15);
								}
								if((spielerY + 15) >= maxY){
								}
								break;
 
							case System::Windows::Forms::Keys::Left:
								if((spielerX - 15) > minX){
									picSpieler->Location = Point(spielerX - 15, spielerY);
								}
								if((spielerX - 15) <= minX){
								}
								break;
						} 
					}while(bolSpielen = true);
				 }


Kann mir hier jemand weiterhelfen?
Habe keine grosse Ahnung von diesen KeyEventArgs und Eventhandlern, ich vermute, dass ich da gepatzt habe.

Danke im voraus.

Gruss jott

2

Monday, December 11th 2006, 8:21am

hat niemand ne Ahnung?

Gruss

Social bookmarks