Single Tech Games

5. The Obstacles Class

Los objetos obstacles mantienen un lista de objetos rectangulo llamados boxes. Cada objeto contiene la coordenada de la esquina de arriba a la izquierda y la longitud de cada lado del cuadrado.
Los metodos publicos en obstaculos estan sincronizados, ya que es posible para el hilo de eventos del juego agregar una caja a la lista y al mismo tiempo examinar o dibujar la lista
Declaramos las variables , el constructor y para agregar usamos la clase add

  private static final int BOX_LENGTH = 12;
  private ArrayList boxes;    // arraylist de objetos Rectangles
  private WormChase wcTop;
  public Obstacles(WormChase wc)
  { boxes = new ArrayList();
    wcTop = wc;
  }
  synchronized public void add(int x, int y)
  { boxes.add( new Rectangle(x,y, BOX_LENGTH, BOX_LENGTH));
    wcTop.setBoxNumber( boxes.size() );   // reporta un nuevo numero de cajas
  }

La clase Obstacles tiene su propio draw, para le dibujo.

  synchronized public void draw(Graphics g)
  // dibuja una serie de cajas azules
  {
    Rectangle box;
    g.setColor(Color.blue);
    for(int i=0; i < boxes.size(); i++) {
      box = (Rectangle) boxes.get(i);
      g.fillRect( box.x, box.y, box.width, box.height);
    }
  }  // fin de draw()

Worm se comunica con obstacles para determinar si la nueva cabeza se intersecta con alguna caja.

  synchronized public boolean hits(Point p, int size)
  // p se intersecta con alguno de los objetos
  {
    Rectangle r = new Rectangle(p.x, p.y, size, size);
    Rectangle box;
    for(int i=0; i < boxes.size(); i++) {
      box = (Rectangle) boxes.get(i);
      if (box.intersects(r))
        return true;
    }
    return false;
  }  // fin de intersects()

El metodo que se utiliza para llenar las cajas de texto en la parte de arriba del juego se llama con la funcion  getNumObstacles()

  synchronized public int getNumObstacles()
  {  return boxes.size();  }
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments