2015-04-12 3 views
0

У меня проблема с моей программой. Я работаю над небольшим проектом 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, в данном случае это не имеет отношения к делу.

Решение этой проблемы, я думаю, было бы принести все изображения с пилюлями спереди. Проблема в том, что я не нахожу простой способ сделать это.

+0

Вы рисуете фон перед рисованием таблеток? – user4759923

+0

«Решение этой проблемы» - вы не указали, в чем проблема. – RealSkeptic

+0

Я думаю, что ответ на этот вопрос до и после из-за структуры maze.txt, например, когда программа импортирует таблетку, он заполнит фон сразу после того, как он попадет в «1», что происходит на 90% –

ответ

0

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

Смежные вопросы