@Override
 public Koordinaten[] execute(Spielfeld input) {
   Koordinaten[] errors = new Koordinaten[0];
   if (input.countSterne() == 0) {
     errors = new Koordinaten[input.getBreite() * input.getHoehe()];
   }
   return errors;
 }
Пример #2
0
 /**
  * Der Konstruktor setzt die Farbe und Startposition der Figur
  *
  * @param farbe Farbe der Spielfigur
  * @param position Spielfeld auf der die Spielfigur startet
  */
 public Spielfigur(FarbEnum farbe, Spielfeld position, Spieler spieler) {
   if (farbe == null || position == null || position.getFigur() != null)
     throw new RuntimeException("Ungueltige Farbe oder Position der Spielfigur");
   if (spieler == null) throw new RuntimeException("Spieler muss vorhanden sein!");
   this.spieler = spieler;
   this.farbe = farbe;
   this.startPosition = position;
   this.position = startPosition;
   switch (this.farbe) {
     case rot: /*if(this.anz_rot >= 4)throw new RuntimeException("Mehr als 4 Figuren sind nicht erlaubt!");*/
       this.freiPosition = 0;
       this.anz_rot++;
       break;
     case blau: /*if(this.anz_blau >= 4)throw new RuntimeException("Mehr als 4 Figuren sind nicht erlaubt!");*/
       this.freiPosition = 10;
       this.anz_blau++;
       break;
     case gruen: /*if(this.anz_gruen >= 4)throw new RuntimeException("Mehr als 4 Figuren sind nicht erlaubt!");*/
       this.freiPosition = 20;
       this.anz_gruen++;
       break;
     case gelb: /*if(this.anz_gelb >= 4)throw new RuntimeException("Mehr als 4 Figuren sind nicht erlaubt!");*/
       this.freiPosition = 30;
       this.anz_gelb++;
       break;
   }
 }
Пример #3
0
 /** blendet Bild 'Gewonnen' ein Spieler erhaelt Erfahungspunkte */
 public void sterben() {
   Interface.player[0].erfahrungspunkteSammeln(Spieler.ERHALTERFAHRUNGSPUNKTE);
   Spielfeld.wertSetzenBeiXY(Interface.getLevel(), Interface.getRaum(), x, y, Interface.SIEG);
   StdDraw.picture(
       Interface.PIC1 + Interface.PIC2 * x,
       Interface.PIC1 + Interface.PIC2 * y,
       Interface.SIEGIMG);
 }
Пример #4
0
  /** KeyHandler */
  @Override
  public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    // nur bewegen wenn der Spieler aktiv ist
    if ((Spielfeld.spieler.aktiv) && (Spielfeld.spieler.beweglich)) {
      /** Taste A - Bewegung hoch */
      if ((key == KeyEvent.VK_A)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 1.5, Spielfeld.spieler.y + 26) != 1)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 2, Spielfeld.spieler.y + 32) != 1)) {
        Frame.dx = -1 * Spielfeld.spieler.speed;
        Spielfeld.spieler.checkShopItems();

        Spielfeld.spieler.links = true;
        Spielfeld.spieler.rechts = false;
        Spielfeld.spieler.hoch = false;
        Spielfeld.spieler.runter = false;
        Frame.image = Frame.Figur1_links.getImage();
        Spielfeld.richtung = "links";
        Raetsel.setFalse();
      }
      /** Taste D - Bewegun rechts */
      if ((key == KeyEvent.VK_D)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 30, Spielfeld.spieler.y + 26) != 1)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 30, Spielfeld.spieler.y + 32) != 1)) {
        Frame.dx = 1 * Spielfeld.spieler.speed;
        Spielfeld.spieler.checkShopItems();

        Spielfeld.spieler.links = false;
        Spielfeld.spieler.rechts = true;
        Spielfeld.spieler.hoch = false;
        Spielfeld.spieler.runter = false;
        Frame.image = Frame.Figur1_rechts.getImage();
        Spielfeld.richtung = "rechts";
        Raetsel.setFalse();
      }
      /** Taste W - Bewegung runter */
      if ((key == KeyEvent.VK_W)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 6, Spielfeld.spieler.y + 26) != 1)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 26, Spielfeld.spieler.y + 23) != 1)) {
        Frame.dy = -1 * Spielfeld.spieler.speed;
        Spielfeld.spieler.checkShopItems();

        Spielfeld.spieler.links = false;
        Spielfeld.spieler.rechts = false;
        Spielfeld.spieler.hoch = true;
        Spielfeld.spieler.runter = false;
        Frame.image = Frame.Figur1_oben.getImage();
        Spielfeld.richtung = "hoch";
        Raetsel.setFalse();
      }
      /** Taste S - Bewegung links */
      if ((key == KeyEvent.VK_S)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 6, Spielfeld.spieler.y + 32) != 1)
          && (Spielfeld.getBlockID(Spielfeld.spieler.x + 26, Spielfeld.spieler.y + 32) != 1)) {
        Frame.dy = 1 * Spielfeld.spieler.speed;
        Spielfeld.spieler.checkShopItems();

        Spielfeld.spieler.links = false;
        Spielfeld.spieler.rechts = false;
        Spielfeld.spieler.hoch = false;
        Spielfeld.spieler.runter = true;
        Frame.image = Frame.Figur1_unten.getImage();
        Spielfeld.richtung = "runter";
        Raetsel.setFalse();
      }

      /** Taste Enter - Interaktion mit Objekten und NPCs */
      if ((key == KeyEvent.VK_ENTER)) {
        if (Spielfeld.shop_trank) {
          if (Spielfeld.spieler.gold >= 50) {
            Spielfeld.spieler.gold -= 50;
            Spielfeld.spieler.item_trank += 1;
          } else if (Spielfeld.spieler.gold - 50 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_mana) {
          if (Spielfeld.spieler.gold >= 75) {
            Spielfeld.spieler.gold -= 75;
            Spielfeld.spieler.item_mana += 1;
          } else if (Spielfeld.spieler.gold - 75 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_supertrank) {
          if (Spielfeld.spieler.gold >= 100) {
            Spielfeld.spieler.gold -= 100;
            Spielfeld.spieler.item_supertrank += 1;
          } else if (Spielfeld.spieler.gold - 100 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_ruestung1) {
          if (Spielfeld.spieler.ruestung == 100) {
            Spielerinfo.ruestung_voll = true;
            Spielerinfo.info = false;
          } else if (Spielfeld.spieler.gold >= 150) {
            Spielfeld.spieler.ruestung = 100;
            Spielfeld.spieler.gold -= 150;
          } else if (Spielfeld.spieler.gold - 150 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_ruestung2) {
          if (Spielfeld.spieler.ruestung == 100) {
            Spielerinfo.ruestung_voll = true;
            Spielerinfo.info = false;
          } else if (Spielfeld.spieler.gold >= 100) {
            Spielfeld.spieler.ruestung += 50;
            Spielfeld.spieler.gold -= 100;
            if (Spielfeld.spieler.ruestung >= 100) {
              Spielfeld.spieler.ruestung = 100;
            }
          } else if (Spielfeld.spieler.gold - 100 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_stiefel) {
          if (Spielfeld.spieler.speed == 0.55) {
            Spielerinfo.speed_voll = true;
            Spielerinfo.info = false;
          } else if (Spielfeld.spieler.gold >= 150) {
            Spielfeld.spieler.speed = 0.55;
            Spielfeld.spieler.gold -= 150;
          } else if (Spielfeld.spieler.gold - 150 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_axt) {
          if (Spielfeld.spieler.axt) {
            Spielerinfo.item_vorhanden = true;
            Spielerinfo.info = false;
          } else if (Spielfeld.spieler.gold >= 500) {
            Spielfeld.spieler.axt = true;
            Spielfeld.spieler.gold -= 500;
            Spielfeld.spieler.waffe = 1;
          } else if (Spielfeld.spieler.gold - 500 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_schuss2) {
          if (Spielfeld.spieler.gold >= 30) {
            Spielfeld.spieler.gold -= 30;
            Spielfeld.spieler.Anzahl_Schüssen += 1;
          } else if (Spielfeld.spieler.gold - 50 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_bogen) {
          if (Spielfeld.spieler.bogen) {
            Spielerinfo.item_vorhanden = true;
            Spielerinfo.info = false;
          } else if (Spielfeld.spieler.gold >= 250) {
            Spielfeld.spieler.gold -= 250;
            Spielfeld.spieler.bogen = true;
            Spielfeld.spieler.waffe = 2;
            Spielfeld.waffe.ID = 2;
            Spielfeld.spieler.pfeile += 5;
          } else if (Spielfeld.spieler.gold - 250 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        } else if (Spielfeld.shop_pfeile) {
          if (Spielfeld.spieler.gold >= 100) {
            Spielfeld.spieler.gold -= 100;
            Spielfeld.spieler.pfeile += 10;
          } else if (Spielfeld.spieler.gold - 100 <= 0) {
            Spielerinfo.gold = true;
            Spielerinfo.info = false;
          }
        }
      }
      /** Taste N - Lebenstrank benutzen */
      if ((key == KeyEvent.VK_N)
          && (Spielfeld.spieler.aktiv)
          && (Spielfeld.spieler.leben < 100)
          && (Spielfeld.spieler.item_trank > 0)) { // Trank
        Spielfeld.spieler.leben += 40;
        Spielfeld.spieler.item_trank -= 1;
        if (Spielfeld.spieler.leben > 100) {
          Spielfeld.spieler.leben = 100;
        }
      }
      /** Taste M - Mana Trank benutzen */
      if ((key == KeyEvent.VK_M)
          && (Spielfeld.spieler.aktiv)
          && (Spielfeld.spieler.mana < 100)
          && (Spielfeld.spieler.item_mana > 0)) { // Mana
        Spielfeld.spieler.mana += 40;
        Spielfeld.spieler.item_mana -= 1;
        if (Spielfeld.spieler.mana > 100) {
          Spielfeld.spieler.mana = 100;
        }
      }
      /** Taste J - Supertrank beutzen */
      if ((key == KeyEvent.VK_J)
          && (Spielfeld.spieler.aktiv)
          && ((Spielfeld.spieler.mana < 100) | (Spielfeld.spieler.leben < 100))
          && (Spielfeld.spieler.item_supertrank > 0)) { // Mana
        Spielfeld.spieler.item_supertrank -= 1;
        Spielfeld.spieler.mana += 40;
        if (Spielfeld.spieler.mana > 100) {
          Spielfeld.spieler.mana = 100;
        }
        Spielfeld.spieler.leben += 40;
        if (Spielfeld.spieler.leben > 100) {
          Spielfeld.spieler.leben = 100;
        }
      }
      /** Leertaste - Schuss des Spielers */
      if ((key == KeyEvent.VK_SPACE)
          && (Spielfeld.spieler.aktiv)
          && (Spielfeld.spieler.mana >= 10)
          && (Spielfeld.spieler.xp >= 15)) {
        if (!Spielfeld.schuss_spieler.sichtbar) {
          Spielfeld.schuss_spieler.sichtbar = true;
          Spielfeld.schuss_spieler.setPos = false;
          Spielfeld.schuss_spieler.checkRichtung();
          Spielfeld.spieler.mana -= 10;
          Spielfeld.counter_schuss = 0;
          if (Spielfeld.multiplayer) {
            if (Spielfeld.spieler.current_room == Spielfeld.spieler2.current_room) {
              Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";schuss1;");
            }
          }
        }
      }
      /** Taste C - Schuss2 des Spielers */
      if ((key == KeyEvent.VK_C)
          && (Spielfeld.spieler.aktiv)
          && (Spielfeld.spieler.Anzahl_Schüssen > 0)
          && (Spielfeld.spieler.xp >= 75)) {
        if (!Spielfeld.schuss2_spieler.sichtbar) {
          Spielfeld.schuss2_spieler.sichtbar = true;
          Spielfeld.schuss2_spieler.setPos = false;
          Spielfeld.schuss2_spieler.checkRichtung();
          Spielfeld.spieler.Anzahl_Schüssen -= 1;
          Spielfeld.counter_schuss2 = 0;
          if (Spielfeld.multiplayer) {
            if (Spielfeld.spieler.current_room == Spielfeld.spieler2.current_room) {
              Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";schuss2;");
            }
          }
        }
      }
      /** Taste K - kleiner Cheat zu Testzwecken ;D */
      if ((key == KeyEvent.VK_K) && (Spielfeld.spieler.aktiv)) {
        Spielfeld.spieler.mana = 100;
        Spielfeld.spieler.leben = 100;
        Spielfeld.spieler.ruestung = 100;
        Spielfeld.spieler.xp += 100;
        Spielfeld.spieler.Anzahl_Schüssen = 10;
        Spielfeld.spieler.pfeile = 10;
        if (Spielfeld.multiplayer) {
          Spielfeld.client.send(
              Spielfeld.client.socket.getLocalPort()
                  + ";spielerleben;"
                  + Spielfeld.spieler.leben
                  + ";");
        }
      }
      /** Taste B - Angriff mit der jeweiligen Waffe */
      if ((key == KeyEvent.VK_B) && (Spielfeld.spieler.aktiv)) {
        if (Spielfeld.waffe.angriff == false) {
          Spielfeld.waffe.angriff = true;
        }
        if ((Spielfeld.spieler.waffe == 2)
            && (!Spielfeld.pfeil.aktiv)
            && (Spielfeld.spieler.pfeile > 0)) {
          Spielfeld.spieler.pfeile -= 1;
          Spielfeld.pfeil.aktiv = true;
          if (Spielfeld.spieler.rechts) {
            Spielfeld.pfeil.richtung = 0;
            Spielfeld.pfeil.x = Spielfeld.spieler.x + 16;
            Spielfeld.pfeil.y = Spielfeld.spieler.y + 5;
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(
                  Spielfeld.client.socket.getLocalPort()
                      + ";pfeil;rechts;"
                      + Spielfeld.spieler.x
                      + 16
                      + ";"
                      + Spielfeld.spieler.y
                      + 5
                      + ";");
            }
          } else if (Spielfeld.spieler.links) {
            Spielfeld.pfeil.richtung = 1;
            Spielfeld.pfeil.x = Spielfeld.spieler.x;
            Spielfeld.pfeil.y = Spielfeld.spieler.y + 5;
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(
                  Spielfeld.client.socket.getLocalPort()
                      + ";pfeil;links;"
                      + Spielfeld.spieler.x
                      + ";"
                      + Spielfeld.spieler.y
                      + 5
                      + ";");
            }
          } else if (Spielfeld.spieler.hoch) {
            Spielfeld.pfeil.richtung = 2;
            Spielfeld.pfeil.x = Spielfeld.spieler.x + 12;
            Spielfeld.pfeil.y = Spielfeld.spieler.y + 5;
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(
                  Spielfeld.client.socket.getLocalPort()
                      + ";pfeil;hoch;"
                      + Spielfeld.spieler.x
                      + 12
                      + ";"
                      + Spielfeld.spieler.y
                      + 5
                      + ";");
            }
          } else if (Spielfeld.spieler.runter) {
            Spielfeld.pfeil.richtung = 3;
            Spielfeld.pfeil.x = Spielfeld.spieler.x;
            Spielfeld.pfeil.y = Spielfeld.spieler.y + 8;
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(
                  Spielfeld.client.socket.getLocalPort()
                      + ";pfeil;runter;"
                      + Spielfeld.spieler.x
                      + ";"
                      + Spielfeld.spieler.y
                      + 8
                      + ";");
            }
          }
        }
      }
      /** Taste 1 - Schwert nehmen */
      if ((key == KeyEvent.VK_1) && (Spielfeld.spieler.aktiv)) {
        Spielfeld.spieler.waffe = 0;
        Spielfeld.waffe.ID = 0;
        if (Spielfeld.multiplayer) {
          Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";waffenwechsel;0;");
        }
      }
      /** Taste 2 - Axt nehmen */
      if ((key == KeyEvent.VK_2) && (Spielfeld.spieler.aktiv)) {
        if (Spielfeld.spieler.axt) {
          Spielfeld.spieler.waffe = 1;
          Spielfeld.waffe.ID = 1;
          if (Spielfeld.multiplayer) {
            Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";waffenwechsel;1;");
          }
        }
      }
      /** Taste 3 - Bogen nehmen */
      if ((key == KeyEvent.VK_3) && (Spielfeld.spieler.aktiv)) {
        if (Spielfeld.spieler.bogen) {
          Spielfeld.spieler.waffe = 2;
          Spielfeld.waffe.ID = 2;
          if (Spielfeld.multiplayer) {
            Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";waffenwechsel;2;");
          }
        }
      }
      /** Taste E - Rätsel betätigen */
      if ((key == KeyEvent.VK_E) && (Spielfeld.spieler.aktiv)) {
        if (Raetsel.geschafft == false) {
          if (Spielfeld.rätsel1.berührung == true) {
            Spielfeld.rätsel1.aktion();
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";rätselaktion;1;");
            }
          }
          if (Spielfeld.rätsel2.berührung == true) {
            Spielfeld.rätsel2.aktion();
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";rätselaktion;2;");
            }
          }
          if (Spielfeld.rätsel3.berührung == true) {
            Spielfeld.rätsel3.aktion();
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";rätselaktion;3;");
            }
          }
          if (Spielfeld.rätsel4.berührung == true) {
            Spielfeld.rätsel4.aktion();
            if (Spielfeld.multiplayer) {
              Spielfeld.client.send(Spielfeld.client.socket.getLocalPort() + ";rätselaktion;4;");
            }
          }
        }
      }
    }
  }