Obsługa myszy w grze turowej

Obsługa myszy w grze turowej
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam.
Zacząłem niedawno pisać prostą gre turową i natrafiłem na problem obsługi myszki. Otóż skąd program ma wiedzieć w jaki kafelek kliknąłem? Trzymać wszystkie w jakiejś liście i w momencie kliknięcia przeszukiwać całą czy wykryto kolizje pomiedzy Point zrobionym z współrzędnych kliknięcia i którymś kafelkiem?

A drugie pytanie to jak rozróżnić w jakim celu kliknięto? (Tj. czy chodzi o ruch czy chodzi o atak itp.) Za pomocą kilku zmiennych trzymać informacje czy np teraz jest celowanie czy ruch?

Pozdrawiam

  • Rejestracja: dni
  • Ostatnio: dni
0

Skąd my mamy to wiedzieć? Nie podałeś żadnych istotnych informacji.

ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 629
0
  1. Jeśli kafelki są obrazami rysowanymi przez obiekt klasy Graphics (a wydaje mi się, że tak), to trzeba zrobić tak, jak ty mówisz.
  2. Innego wyjścia nie ma/nie znam.
  • Rejestracja: dni
  • Ostatnio: dni
0

A robić to tak czy jest jakis lepszy sposób?

Kopiuj
public static boolean kolizja(Rectangle r1, Rectangle r2){
		if(r1.intersects(r2)){
			return true;
		}else {
			return false;
		}
	}

a co do drugiego pytania to robic to tak ze przy public void keyPressed(KeyEvent e) zrobic switcha z tym co aktualnie jest?(czyli czy wybierany jest cel strzalu czy miejsce docelowe ruchy)

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Jeżeli wszystkie kafelki są tej samej wielkości, to przecież wystarczy zwykłe dzielenie.

Madaoo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 490
0

Hmmm, każdy kwadracik jest tej samej wielkości to możesz dać to np w TreeMapie i odpowiednio nazwac kwadraciki, i ich pozycj początkowe, a do Jpanelu lub JFrame musisz dodać

Kopiuj
implements MouseListener, MouseMotionListener 

i wtedy masz abstrakcyjne metody typu:

Kopiuj
public void mouseClicked(MouseEvent event)
public void mousePressed(MouseEvent event)
public void mouseReleased(MouseEvent event)
public void mouseEntered(MouseEvent event)
i chyba jeszcze 
public void mouseExited(MouseEvent event)
// to sa eventy od mouseListnera 
// eventy od  MouseMotionListener:
public void mouseDragged(MouseEvent event) // klik i przeciagnij ;)
public void mouseMoved(MouseEvent event) 
xfin
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Genewa
  • Postów: 597
0
  1. Proponuję rozpoznawać co jest na danym kafelku np. jeśli nic to domyślnie się poruszasz, a jeśli wrogi obiekt to kursor pełni rolę celownika ;)

EDIT: niemniej trudno jest podpowiedzieć, bo wiemy tylko, że to gra turowa z myszką i kafelkami :D

I2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 229
0

czyli plansza i pionki są reprezentowane jako grafika tak ? to jest jedyne rozwiazanie ?
Czyli aby osiągnąć efekt jak na filmiku:

to po przyciśnięciu na obrazek figury, podmieniamy tylko grafikę tak ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.