Вот значит мы и подошли к завершению нашей тренировочной игры с кругами, через две недели начинаем превращать ее в «игру с пиксельным человечеком, монстрами и прочим»=)
А пока что заканчиваем:
В GameManager добавляем следующие проверки:
private void checkCollision() { SimpleCircle circleForDel = null; for (EnemyCircle circle : circles) { if(mainCircle.isIntersect(circle)) { if(circle.isSmallerThan(mainCircle)){ mainCircle.growRadius(circle); circleForDel=circle; calculateAndSetCirclesColor(); break; } else { gameEnd(); return; } } } if (circleForDel!=null) { circles.remove(circleForDel); } if(circles.isEmpty()){ gameEnd(); } }
Что такое growRadius? Вспоминаем геометрию=)
public void growRadius(EnemyCircle circle) { rad = (int)Math.sqrt(Math.pow(rad, 2)+Math.pow(circle.rad, 2)); }
Ну и добавим сообщения о результатах игры — вин/луз
Исправим gameEnd’ы
gameEnd("YOU LOSE!"); return; } } } if (circleForDel!=null) { circles.remove(circleForDel); } if(circles.isEmpty()){ gameEnd("YOU WIN!"); } } private void gameEnd(String text) { viewCanvas.showMessage(text); mainCircle.initRadius(); initEnemyCircles(); viewCanvas.redraw();
Далее showMessage добавляем в наш интерфейс, а прописываем его во viewCanvas
public void showMessage(String text) { if (toast !=null) { toast.cancel(); } toast=Toast.makeText(getContext(),text,Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER,0,0); toast.show(); }
Запускаем, проверяем, все работает — ура=)
До новых встреч!=)