Реализовать несколько экземпляров объекта Bitmap Game - PullRequest
0 голосов
/ 18 февраля 2012

Я новичок в разработке Android.

Я создал игру.Одна битовая карта (1) является управляемой, другая битовая карта (2) действует при столкновении с первой.Работает отлично.Вопрос;Как мне создать несколько экземпляров (2), которые, во-первых, будут одинаково реагировать на столкновение с (1).

То, что я построил до сих пор;

В MainGamePanel я создаю два растровых изображения:

  basket = new basket(BitmapFactory.decodeResource(getResources(), R.drawable.basket01), 50, 50);
  apple = new apple(BitmapFactory.decodeResource(getResources(), R.drawable.apple_red01));

MainThread выполняет обновление и рисует холст на панели

В обновлении (в MainGamePanel) я проверяю конфликты между(1) и (2), проверка координат.

Если обнаружено столкновение, я устанавливаю координаты для яблока (2), оно становится «щелевым».

Тогда, если яблоко (2)я коснулся, я перемещаю его в случайную позицию на экране и устанавливаю логическое место в ложь.

... это то, где я застрял, 2 вопроса (я должен разделить их здесь наТАК?)

  1. Как создать несколько экземпляров растрового изображения (2)?
  2. Как получить максимальные значения X и Y для холста или вида, который не являетсясоздан внутри самого класса?

Спасибо!

Текущий фрагмент кода для tРастровое изображение (2) "яблоко":

     public void draw(Canvas canvas) {
  canvas.drawBitmap(bitmap, X - width/2, Y - height/2, null);
 }

Что касается вопроса два (рассмотрите генератор случайных чисел, мне нужно установить максимальные значения);

    if (slotted){
     if (eventX >= (X - width/ 2) && (eventX <= (X + width/2))) {
           if (eventY >= (Y - height/ 2) && (eventY <= (Y + height/ 2))) {
    // basket touch
    Random Rnd = new Random();

    float nX=Rnd.nextInt(HOWTOMAXOFVIEWORCANVAS);
    float nY=Rnd.nextInt(HOWTOMAXOFVIEWORCANVAS)+80; 

// the +80 is to prevent the apple from returning in the 'slotted' area (the basket can't get there ;)

    setX(nX);
    setY(nY);
    slotted = false;

1 Ответ

1 голос
/ 18 февраля 2012

Очень простым способом было бы создать list яблок вместо отдельных экземпляров яблока:

ArrayList<apple> appleList = new ArrayList<apple>();
int nApples = 5;
for (int i=0; i<5; i++)
      appleList.add(new apple();

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

Максимальные значения X и Y холста определяются размерами View, которые выприближаются.Как только ваш View будет надут и вытянут, вы сможете получить эти значения из представления.

...