Я работал над игрой «Морской бой» для школьного задания в Eclipse, используя последнюю версию Java, Java 6, пока не понял, что мне нужно обеспечить совместимость с JRE 1.4.2.
Я старался не использовать какие-либо функции и библиотечные классы, которые недоступны в компиляторе 1.4.2, и мой код компилируется нормально.Проблема в том, что фоновое изображение для игры не отображается должным образом - отображается только маленький угол в верхнем левом углу.
Для справки, вот скриншоты, показывающие мою проблему:
Рендеринг игры должным образом в среде выполнения Java 6
Ссылка на изображение (я пока не могу их встроить.)
Только угол, отображаемый в соответствии с 1.4.2JRE
Ссылка на изображение (я пока не могу их встроить.)
И, конечно, нет разницы в коде на двух скриншотах, просто разныесреды выполнения.
Фон рисуется на JPanel, который является видимым, и добавляется в JFrame с помощью setContentPane()
.Нет ошибок при загрузке изображения в программу.
Я провел большое тестирование и заметил, что мой обработчик ввода реагирует только на ввод в пределах того небольшого угла, в котором есть изображение, чтоозначает, что мой JPanel не заполняет весь экран - однако я дважды проверил его размер и он соответствует размеру JFrame (800 x 600).
А вот мой код рендеринга:
public void render() {
Graphics2D g = (Graphics2D) getGraphics();
Graphics2D gb = (Graphics2D) buffer.getGraphics();
gb.drawImage(background, 0, 0, null);
gb.setColor(new Color(45, 45, 45));
gb.setFont(new Font("Arial", Font.BOLD, 18));
gb.drawString("Outwit the computer. Are you up for the challenge?", 175, 185);
cont.draw(gb, contState);
//Draw buffer to screen
g.drawImage(buffer, 0, 0, null);
}
Этот метод вызывается повторно для визуализации фреймов игры.Это часть класса JPanel.
Я перепробовал почти все, и это мое последнее средство.Может ли это быть ошибкой в более старой среде выполнения?Любая идея будет принята с благодарностью!
Большое спасибо заранее.:)