SkazOff Blog

Programming | Part#14

Было несколько сообщений на тему, что не получается сделать границы для кругов и они все равно вылетают за экран. Показываю как это делается:

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 у нас идет как интерфейс! Это важно, не перепутайте.

Пожалуй хватит=) Думаю, что в следующем посте мы закончим тестовый пример и займемся  уже нашим пиксельным человечеком и монстрами =) До новых встреч =)

Оставить комментарий