Jakby kto z javą miał wspólnego tyle co ja z drogimi samochodami czyli nic, to tak można to zbudować:
$ javac -d build **/**.java
$ java -cp build marcin.gameClasses.App
Namęczyłem się, a wystarczyłoby, żeby była informacja w README, jak to w ogóle zbudować. No ale się przynajmniej czegoś nauczyłem.
for (int i = 1; i < posList.size(); i++) {
for (int j = 0; j < posList.size(); j++) {
if (posList.get(i).compSqrPos(posList.get(j)) && i != j) {
gameState = GameState.GAME_OFF;
}
}
}
Nie musisz sprawdzać każdego segmentu z każdym. Wystarczy, że sprawdzisz czy głowa w nic nie wali. Tym bardziej, że
- nie wychodzisz z pętli jak już znajdziesz dwa segmenty w tej samej pozycji, tylko lecisz dalej ze sprawdzaniem
- sprawdzasz tę samą parę elementów po dwa razy, np. i == 1, j == 2 oraz i == 2, j == 1
actualOrt
- actual to po angielsku rzeczywisty, prawdziwy. Chodzi ci o "current".
Dalej, cała konstrukcja wydaje mi się chybiona. Jedna klasa Snake, która robi wszystko - przechowuje stan węża, rysuje elementy, pobiera eventy i kręci bączki. Na mój chłopski rozum, to powinno raczej wyglądać tak, że jest klasa Snake, która obsługuje węża, jest klasa Board, która obsługuje rysowanie, jest klasa Game, która przechowuje wynik, uruchamia główną pętlę i spina to wszystko w całość.
Ale ogólnie jeśli programujesz od niedawna, to całkiem spoczko.