RPG Creator Battles Revisited

Ich kann nichts dafür. Ab und zu taucht der RPG Creator in meinem Kopf auf und ich muss ein wenig daran arbeiten. Früher oder später werde ich von etwas anderem abgelenkt, aber meistens mache ich tatsächlich ein paar Fortschritte. Diesmal knöpfte ich mir das Battle-Script noch einmal vor und machte eine Klasse daraus.

Eigentlich gibt es hier nicht viel Neues zu zeigen. Über die grundlegenden Funktionen habe ich bereits in einem anderen Artikel in diesem Blog gesprochen. Die größte Ergänzung ist die Validierungslogik für die beiden Gegner. Die Validierung stellt nur sicher, dass die Gegner alle für die Kampfberechnung benötigten Werte haben.

/**
 * Validates a battle's opponent.
 *
 * @param array $array
 *   A battle opponent representated by an array
 *   consisting of four values: attack, defense,
 *   armor & damage.
 * @return boolean
 */
private static validateOpponent($array) {
  $valid = TRUE;
  if (!isset($array['attack']) || !is_numeric($array['attack'])) {
    $valid = FALSE;
  }
  else if (!isset($array['defense']) || !is_numeric($array['defense'])) {
    $valid = FALSE;
  }
  else if (!isset($array['armor']) || !is_numeric($array['armor'])) {
    $valid = FALSE;
  }
  else if (!isset($array['damage']) || !is_numeric($array['damage'])) {
    $valid = FALSE;
  }
  else if (isset($array['health']) && !is_numeric($array['health'])) {
    $valid = FALSE;
  }
  return $valid;
}

Um ein Kampfergebnis zu berechnen, erstellr zwei Gegner und führt die solve()-Funktion der Klasse aus. Ihr erhaltet dann ein Array mit allen berechneten Runden.

$attacker = array(
  'attack' => 100,
  'defense' => 50,
  'armor' => 10,
  'damage' => 25,
  'health' => 100,
);

$defender = array(
  'attack' => 80,
  'defense' => 40,
  'armor' => 20,
  'damage' => 15,
  'health' => 100,
);

$results = RpgBattle::solve($attacker, $defender);

Den vollständigen Quellcode findet Ihr auf Github.

Noch keine Kommentare vorhanden.