Было несколько сообщений на тему, что не получается сделать границы для кругов и они все равно вылетают за экран. Показываю как это делается:
public void moveOnStep() { x += dx; y += dy; checkBounds(); } private void checkBounds() { if (x>GameManager.getWidht() || x<0) { dx = -dx; } if (y>GameManager.getHeight()||y<0){ dy=-dy; }
Добавим проверку пересечения, изменяем GameManager следующим образом:
public void onTouchEvent(int x, int y) { mainCircle.moveMainCircleWhenTouchAt(x, y); checkCollision(); moveCircles(); } private void checkCollision() { for (EnemyCircle circle : circles) { if(mainCircle.isIntersect(circle)) { gameEnd(); } } } private void gameEnd() { mainCircle.initRadius(); initEnemyCircles(); viewCanvas.redraw(); } private void moveCircles() { for (EnemyCircle circle: circles) { circle.moveOnStep(); } }
А во ViewCanvas добавляем:
public void redraw() { invalidate(); }
Проверяем — работает, ура!
Отмечу только , что redraw у нас идет как интерфейс! Это важно, не перепутайте.
Пожалуй хватит=) Думаю, что в следующем посте мы закончим тестовый пример и займемся уже нашим пиксельным человечеком и монстрами =) До новых встреч =)