У меня проблема с моей программой. Я работаю над небольшим проектом pac man. В основном я пытаюсь отобразить таблетки в лабиринте, который уже нарисован.Принесите изображение перед графикой - Простой способ -
Итак, лабиринт g2-графики, я использовал простой текстовый файл, чтобы преобразовать числовой лабиринт в графический.
То, что я говорю в программе как следующее:
- если вы нажмете «1» вы положили дорогу (черный),
- если вы нажмете «2» вы положили таблетки (импорт таблетки изображения), и
- если вы нажмете «3» вы положили супер таблетки (импорт superpill изображение)
Вот часть кода, который необходим для получения более подробной информации
@Override
public void draw(Graphics g) {
for(int y=0;y<nbLin;y++){
for(int x=0;x<nbCol;x++){
if(charAt(x,y)!='0'){
g.fillRect(x*STEP-14,y*STEP-14,28,28); // put a road
}
if(charAt(x,y)=='2'){
g.drawImage(pill.getSubimage(0,0,28,28),x*STEP-14,y*STEP-14,null);// put a pill
}
if(charAt(x,y)=='3'){
g.drawImage(superpill.getSubimage((frame2/2)*30,0,28,28),x*STEP-14,y*STEP-14,null); //put a super pill
}
}
}
Если взять эту строку:
g.fillRect(x*STEP-14,y*STEP-14,28,28)
Причина, почему я умножать координату STEP
только потому, что я умножить размер экрана, тем же STEP
так что я должен изменить все новые координаты точек по те же пропорции, которые я считаю.
Причина, по которой я вычитаю 14, обусловлена размером pacman, который равен 28, поэтому я просто вычитаю половину размера pacman из каждой точки, чтобы центрировать вокруг него road
(Rect).
Не обращайте внимание на часть subImage
, в данном случае это не имеет отношения к делу.
Решение этой проблемы, я думаю, было бы принести все изображения с пилюлями спереди. Проблема в том, что я не нахожу простой способ сделать это.
Вы рисуете фон перед рисованием таблеток? – user4759923
«Решение этой проблемы» - вы не указали, в чем проблема. – RealSkeptic
Я думаю, что ответ на этот вопрос до и после из-за структуры maze.txt, например, когда программа импортирует таблетку, он заполнит фон сразу после того, как он попадет в «1», что происходит на 90% –