Java Game - Самый простой способ рисовать здания - PullRequest
1 голос
/ 24 сентября 2010

Я впервые занимаюсь графическим интерфейсом Java, и у меня есть несколько вопросов.Я делаю простую игру с боковой прокруткой - планирую ее конкретно.Окно будет 800х800.

В процессе прокрутки игры будут отображаться здания (каждые 40 пикселей или около того).Я думаю, что я сделаю один черный прямоугольник 900px, а затем установлю его копии на разных высотах пикселей (чтобы изменить высоту новых зданий).Тогда нижняя часть прямоугольника будет автоматически обрезана.

(1) Это сработает?

В небе над крышами я собираюсь пролететь мимо целей, которые можно нажимать и сбивать дляточки.Я думал, что сделаю ImageIcon объекта, а затем нарисую его, перемещаясь по экрану.Но я думаю, что было бы трудно отследить координаты цели, а затем получить координаты щелчка мышью, а затем проверить, совпадают ли они.

(2) Есть ли какой-нибудь простой способ узнать, поражена ли цель щелчком мыши (без большого количества координат и математики)?

Есть также катание на скейтбордена крыше слева направо.Я думал, что поставлю за ним скрытый прямоугольник, а затем посмотрю, пересекается ли он с заданной прямоугольной крышей, чтобы определить, когда он приземлится.Но проблема в том, что они не будут пересекаться, пока он ВНУТРИ крыши.И я хочу, чтобы он был прямо над крышей.

Как узнать, когда скейтбордист находится чуть выше крыши (без тонны координатной математики)?

1 Ответ

1 голос
/ 24 сентября 2010

Там будут здания, нарисованные во время прокрутки игры (каждые 40 пикселей или около того). Я думаю, что я сделаю один черный прямоугольник 900px, а затем установлю его копии на разных высотах пикселей (чтобы изменить высоту новых зданий). Тогда нижняя часть прямоугольника будет автоматически обрезана.

Это было бы хорошо - нижняя часть была бы обрезана.

В небе над крышами я собираюсь пролететь мимо целей, на которые можно нажимать и сбивать за точки. Я думал, что сделаю ImageIcon объекта, а затем нарисую его, перемещаясь по экрану. Но я думаю, что было бы трудно отследить координаты цели, а затем получить координаты щелчка мышью, а затем проверить, совпадают ли они.

Я не могу придумать более простой способ сделать это. Проверка прямоугольной области на предмет попадания не слишком сложна:

if(mouseX >= targetX && mouseX < targetX+targetWidth &&
        mouseY >= targetY && mouseY < targetY+targetHeight){
    // is a hit
}

Для лучшего обнаружения столкновений у вас может быть цвет маски на целевом спрайте, который скрыт (или проверьте, равна ли альфа 0, если вы не используете маску). Если щелкнуть мышью на немаскированном пикселе в пределах области изображения цели, у вас есть удар. Для проверки событий мыши ищите MouseListener или MouseAdapter.

Там же скейтбордист катается на крышах слева направо. Я думал, что поставлю за ним скрытый прямоугольник, а затем посмотрю, пересекается ли он с заданной прямоугольной крышей, чтобы определить, когда он приземлится. Но проблема в том, что они не будут пересекаться, пока он ВНУТРИ крыши. И я хочу, чтобы он был прямо над крышей.

Вам не нужен невидимый прямоугольник. Изображение скейтбордиста должно иметь ширину и высоту, которые вы должны иметь в наличии. Изображения рисуются слева вверху, поэтому основой вашего скейтбордиста является позиция Y, на которой он нарисован, плюс высота изображения. Вы хотите, чтобы это значение не выходило за границы крыши.

...