public Burbuja(Point posicion,Laberinto laberinto) : base(8, 8, posicion) { this.laberinto = laberinto; estado = EstadoBurbuja.Estable; this.puntos = 10; }
public override void vivir() { if (estado == EstadoBurbuja.Rev2) { laberinto.reventarBurbuja(this); return; } if (estado == EstadoBurbuja.Rev1) { estado = EstadoBurbuja.Rev2; return; } if (getPosicion().X < Laberinto.TBloque || getPosicion().X>laberinto.getAncho()-Laberinto.TBloque) { estado = EstadoBurbuja.Rev1; return; } foreach (Jugador jugador in laberinto.Jugadores) { if (!jugador.Muerto) { if (colisionaCon(jugador)) { if (jugador.getPosicion().Y == getPosicion().Y + getAlto()) { } else { if (jugador.Direccion == Direccion.derecha) { if (getPosicion().X >= jugador.getPosicion().X + getAncho() - 1) { } else { jugador.sumarPuntos(this.puntos); pinchar(); return; } } else { if ((getPosicion().X + getAncho() - 1) <= jugador.getPosicion().X) { } else { jugador.sumarPuntos(this.puntos); pinchar(); return; } } } } } } //count++; //if (count < delay) return; //count = 0; /*int x=(getPosicion().X/2)*2; int y=(getPosicion().Y/2)*2; Bloque b1 = laberinto.bloqueEn(x, y); Bloque b2 = laberinto.bloqueEn(x + 2, y); Bloque b3 = laberinto.bloqueEn(x, y + 2); Bloque b4 = laberinto.bloqueEn(x + 2, y + 2);*/ //if (b1 is Pared || b2 is Pared || b3 is Pared || b4 is Pared) /*{ estado = EstadoBurbuja.Rev1; return; }*/ int arriba = 0; int abajo = 0; int izquierda = 0; int derecha = 0; /*if (b1 is Aire) { switch (((Aire)b1).DireccionCorriente) { case DireccionCorriente.Arriba: arriba++; break; case DireccionCorriente.Abajo: abajo++; break; case DireccionCorriente.Derecha: derecha++; break; case DireccionCorriente.Izquierda: izquierda++; break; } } if (b2 is Aire) { switch (((Aire)b2).DireccionCorriente) { case DireccionCorriente.Arriba: arriba++; break; case DireccionCorriente.Abajo: abajo++; break; case DireccionCorriente.Derecha: derecha++; break; case DireccionCorriente.Izquierda: izquierda++; break; } } if (b3 is Aire) { switch (((Aire)b3).DireccionCorriente) { case DireccionCorriente.Arriba: arriba++; break; case DireccionCorriente.Abajo: abajo++; break; case DireccionCorriente.Derecha: derecha++; break; case DireccionCorriente.Izquierda: izquierda++; break; } } if (b4 is Aire) { switch (((Aire)b4).DireccionCorriente) { case DireccionCorriente.Arriba: arriba++; break; case DireccionCorriente.Abajo: abajo++; break; case DireccionCorriente.Derecha: derecha++; break; case DireccionCorriente.Izquierda: izquierda++; break; } }*/ for (int x = 0; x < getAncho(); x++) { for (int y = 0; y < getAlto(); y++) { Bloque b = laberinto.bloqueEn(getPosicion().X + x, getPosicion().Y + y); if (b is Aire) { switch (((Aire)b).DireccionCorriente) { case DireccionCorriente.Arriba: arriba++; break; case DireccionCorriente.Abajo: abajo++; break; case DireccionCorriente.Derecha: derecha++; break; case DireccionCorriente.Izquierda: izquierda++; break; } } } } int m = mayor(arriba, abajo, izquierda, derecha); switch(m) { case 1: subirUno(); break; case 2: bajarUno(); break; case 3: izquierdaUno(); break; case 4: derechaUno(); break; } }
public virtual void pinchar() { this.estado = EstadoBurbuja.Rev1; }