project java kulki

0

Witam ostatnio dostałem weny i <ort>zaczołem </ort>troche pisac w J2ME, jako efekt mojej pracy chcialem zrobic grę kulki.

Projekt nie jest zbytni skomplikowany, w zasadzie chyli sie ku końcowi jednak brakuje mu 2 metod (które są zasadniczo najtrudniejsze i najwazniejsze). Prosiłbym o pomoc bardziej doświadczonych kolegów.

pierwsza z nich to szukajdrogi(); to metoda w oparciu o którą program sprawdza czy można przenieść kulke z pozycji startowej na pozycje końcową (z zachowaniem zasad czyli musi byc dostępna droga na mapce, nie mozna po skosach). Wydaje mi się, że najprosciej do zrealizowania by to było za pomocą szukania drogi w grafie (bądź tez jej odmianą), każde pole w grze to wierzchołek na grafie a sąsiadujące pole było by połączone sciężką.
druga to zbijkulki(); czyli przeglądanie grafu i eliminowania conajmniej 5 w szeregu kulek o tym samym kolorze (w programie są to odpowiednio liczby od 1 do 6).

Obecnie roboczo plansze przechowuje w macierzy 9x9, która jest wykorzystywana takze do wyrysowywania mapki na ekranie ( 0 to tło, 1 to kulka czerwona 2 niebieska etc.).

Nie pisałem zbyt wielu programów w których przechowywalem dane w grafach, więc prosiłbym o pare wskazówek oraz czy da rade napisac te 2 metody na tablicy dwuwymiarowej? (pierwsza metoda by byla raczej bardzo złozona). Prosiłbym o porady pozdrawiam.

0

Grafy drogi itp rzeczy to dla mnie czarna magia :)

Ja to bym pewnie ściągnął źródła jakiś kulek i zrobił kopiuj-wklej.
Natomiast tak z głowy to może coś takiego:

Szukanie drogi:

  1. Robisz tablicę współrzędnych i dodajesz do niej punkt kulki którą chcesz przenieść.
  2. Ustawiasz index na pierwszy element tablicy.
  3. Dodajesz do tablicy wszystkie punkty sąsiadujące z punktem z indexu, które nie mają kulek.
    (Ważne: dodajesz do tablicy punkt tylko jeśli wcześniej nie został dodany, ma to być tablica unikatowych punktów)
  4. Jeśli dodajesz punkt docelowy tzn. że da się kulkę przenieść.
  5. Jeśli nie to zwiększasz index i ponownie krok 3 dopóki tablica się nie skończy...
  6. ...a jak się skończy tzn, że nie ma drogi.

Zbijanie kulek:

Jak by zastosować powyższy sposób szukania drogi to po prostu sprawdzasz kluki w 4 strony i usuwasz wpisując 0.

Pewnie to bardzo mało wydajny sposób, jeśli w ogóle zadziała.

0

Mały OT, oryginalna gra w kulki ma błąd algorytmu, niekiedy uznaje za niemożliwy ruch, który jest możliwy. Być może oznacza to, że napisanie algorytmu nie jest bardzo proste. Może warto dodać do programu funkcję: "wskazanie drogi przez gracza" dostępną gdy program uważa, że ruch jest niemożliwy.

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