Java zdarzenia klawiszy

0

Witam!
Myślałem o zablokowaniu chodzenia na ukos w mojej mini-grze, ale nie jestem do końca pewien jak to osiągnąć.
Otóż myślałem o podaniu 2klawiszy na raz w 1 sprawdzaniu:

		if (e.getKeyCode() == KeyEvent.VK_W | KeyEvent.VK_D) {
			up = false;
			right = false;
			System.out.print("No move Up-Right");
		}

Oczywiście ten kod jest błędny. Czy ktoś może mnie naprowadzić jak takie coś napisać?(trzeba tworzyć else if razem z if czy może da się to jakoś napisać w 1 "if'e")

0

Tym sposobem:

if (e.getKeyCode() == KeyEvent.VK_W && e.getKeyCode() == KeyEvent.VK_D)

Lecz nie wiem, czy to w taki sposób zadziała.

1

Gdy ktoś wciska klawisz to ustawiasz mu kierunek i każesz iść.
Gdy ktoś puszcza klawisz, to sprawdzasz czy puszczany klawisz odpowiada aktualnemu kierunkowi gracza i jeśli tak, to każesz mu stanąć.
Ludzie sterując postaciami gdy chcą zmienić kierunek zwykle najpierw wciskają nowy kierunek, dopiero potem puszczają stary. robiąc tak jak podałem sprawiamy, że gdy ktoś trzyma UP i wciśnie LEFT, to postać zaczyna iść w lewo i przestaje w górę.. zaraz po tym gracz puści UP - co nie będzie miało o efektu i tak ma być. Wszystko inne będzie wkurwiające dla gracza.

0

getKeyCode()o; zwraca klawisz którego dotyczy aktualne zdarzenie.
Użyj mapy, albo tablicy do przechowywania stanów klawiszy, jeśli potrzebujesz. Lepiej jednak w tym wypadku przyjmować zawsze po prostu nowy kierunek przy keyPresssed.

1 użytkowników online, w tym zalogowanych: 0, gości: 1