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.


Kommentare


Wichtig: Durch den Click auf die obige Checkbox stimmst Du ausdrücklich der Übertragung von Daten an Facebook zu. Die Zustimmung erfolgt einmalig für die Kommentare dieses Artikels und wird nicht gespeichert. Weitere Details kannst Du dem Punkt Social Plugins der Datenschutzerklärung entnehmen.