Skip to content

Instantly share code, notes, and snippets.

@BlackScorp
Forked from anonymous/gist:a663937b5cb80b096572
Last active August 29, 2015 14:05
Show Gist options
  • Save BlackScorp/fbfccb24b932c46ec097 to your computer and use it in GitHub Desktop.
Save BlackScorp/fbfccb24b932c46ec097 to your computer and use it in GitHub Desktop.
<?php
/**
* Klasse Farbrechner
* Berechnet aus den Farb-Gencodes der Eltern den Gencode des Fohlens
*/
class Farbrechner {
/**
* Enthält das Fell der Mutter
*/
private $mutter;
/**
* Enthält den Gencode der Mutter
*/
private $gencodeMutter = array();
/**
* Enthält das Fell des Vaters
*/
private $vater;
/**
* Enthält den Gencode des Vaters
*/
private $gencodeVater = array();
/**
* Enthält den errechneten Gencode des Fohlens.
*/
private $fohlen = array();
/**
* Enthält die Abzeichen an Kopf und Beinen des Fohlens.
*/
private $abzeichenKopf;
private $abzeichenBeine = array();
/**
* Konstruktor
* @param obj $mutter
* @param obj $vater
*/
public function __construct(Fellfarbe $mutter, Fellfarbe $vater) {
$this->setMutter($mutter);
$this->setVater($vater);
}
/**
* Speichert die Fellfarbe der Mutter
* @param obj $mutter
*/
public function setMutter(Fellfarbe $mutter) {
$this->mutter = $mutter;
}
/**
* Speichert die Fellfarbe des Vaters
* @param obj $vater
*/
public function setVater(Fellfarbe $vater) {
$this->vater = $vater;
}
/**
* Extrahiert den Gencode der Mutter und speichert ihn.
*/
public function setGencodeMutter() {
$this->gencodeMutter = $this->mutter->gencodes;
}
/**
* Extrahiert den Gencode des Vaters und speichert ihn.
*/
public function setGencodeVater() {
$this->gencodeVater = $this->vater->gencode;
}
/**
* Ermittelt den Wert eines einzelnen Gens.
*/
private function calculateGen($muttergen, $vatergen) {
if (($muttergen == 0 && $vatergen == 2) || ($muttergen == 2 && $vatergen == 0)) {
$fohlengen = rand(0,2);
} else {
$fohlengen = rand($muttergen, $vatergen);
}
return $fohlengen;
}
/**
* Errechnet den Gencode der Fellfarbe
*/
public function calculateGencode() {
$array_schluessel = array("extension", "agouti");
foreach ($array_schluessel as $gen) {
$this->fohlen[$gen] = $this->calculateGen($this->gencodeMutter[$gen], $this->gencodeVater[$gen]);
}
}
/**
* Berechnet das Abzeichen des Pferdes am Kopf, indem eine zufällige ID der Abzeichenkennzeichnungen gewählt wird
* und speichert sie in einem Array.
*/
public function calculateAbzeichenKopf($erwuenscht) {
if ($erwuenscht == true) {
$this->abzeichenKopf = rand(0,4);
} else {
$this->abzeichenKopf = 0;
}
}
/**
* Berechnet die Abzeichen an den Beinen des Fohlen, indem eine zufällige ID der Abzeichenkennzeichnungen gewählt wird
* und speichert sie in einem Array.
*/
public function calculateAbzeichenBeine($erwuenscht) {
$array_schluessel = array("vornelinks", "vornerechts", "hintenlinks", "hintenrechts");
if ($erwuenscht == true) {
foreach ($array_schluessel as $abzeichen) {
$this->abzeichenBeine[$abzeichen] = rand(0,8);
}
} else {
foreach ($array_schluessel as $abzeichen) {
$this->abzeichenBeine[$abzeichen] = 0;
}
}
}
/**
* Gibt den berechneten Gencode des Fohlen zurück.
*/
public function getFohlen() {
return $this->fohlen;
}
/**
* Gibt $abzeichenKopf zurück.
*/
public function getAbzeichenKopf() {
return $this->abzeichenKopf;
}
/**
* Gibt abzeichenBeine zurück.
*/
public function getAbzeichenBeine() {
return $this->abzeichenBeine;
}
}
<?php
/**
* Klasse Fellfarbe
*/
class Fellfarbe {
/**
* Enthält die ID der Fellfarbe
*/
private $id;
/**
* Bezeichnung der Fellfarbe
*/
private $name;
/**
* Die einzelnen Elemente des Gencodes einer Fellfarbe
*/
private $gencodes = array();
/**
* Die einzelnen Abzeichen an den jeweiligen Körperstellen
*/
private $abzeichenBeine = array();
private $kopf;
/**
* Enthält den Bildpfad der Fellfarbe.
*/
private $bildpfad;
/**
* Arrays mit den IDs und Namen der Abzeichen.
*/
private $alleAbzeichenBeine = array( 1 => "Weißer Ballen", 2 => "Weiße Fessel",
3 => "Weißer Fuß", 4 => "Hochweißer Fuß");
private $abzeichenKopf = array( 1 => "schmale Blesse", 2 => "breite Blesse",
3 => "unregelmäßige Blesse", 4 => "Stern",
5 => "Laterne", 6 => "Flocke", 7 => "Keilstern",
8 => "Schnippe");
/**
* @param int $id
* @param string $name
* @param string $bildpfad
* @param array $abzeichenBeine
* @param array $kopf
*/
public function __construct($id, $name, $bildpfad, array $abzeichenBeine, $kopf) {
$this->setId($id);
$this->setName($name);
$this->setBildpfad($bildpfad);
$this->setAbzeichenBeine($abzeichenBeine);
$this->setKopf($kopf);
}
/**
* Speichert die Fellfarben-ID, falls sie im Array $fellfarben vorkommt.
* @param int $id
*/
public function setId($id) {
if (is_numeric($id)) {
$this->id = $id;
}
else {
/* Ausnahmebehandlung, Exception */
}
}
/**
* Gibt die ID einer Fellfarbe zurück
*/
public function getId() {
return $this->id;
}
/**
* Speichert den Namen der Fellfarbe
* @param string $name
*/
public function setName($name) {
$this->name = $name;
}
/**
* Gibt den Namen der Fellfarbe zurück.
*/
public function getName() {
return $this->name;
}
/**
* Speichert die Gencodes.
* @param array $gencodes
*/
public function setGencodes(array $gencodes) {
$this->gencodes = $gencodes;
}
/**
* Gibt die Gencodes zurück.
*/
public function getGencodes() {
return $this->gencodes;
}
/**
* @param array $abzeichenBeine
*/
public function setAbzeichenBeine(array $abzeichenBeine) {
$this->abzeichenBeine = $abzeichenBeine;
}
/**
* Gibt den Gencode der Abzeichen zurück
*/
public function getAbzeichenBeine() {
return $this->abzeichenBeine;
}
/**
* Gibt die Abzeichen am gewünschten Bein mit Namen zurück.
* @param string $bein
*/
public function getBein($bein) {
if (array_key_exists($bein, $this->abzeichenBeine)) {
return $this->alleAbzeichenBeine[$this->abzeichenBeine[$bein]];
}
else {
// Exception.
}
}
/**
* Speichert die ID des Abzeichens am Kopf.
* @param int $kopf
*/
public function setKopf($kopf) {
if (is_numeric($kopf)) {
$this->kopf = $kopf;
}
}
/**
* Gibt das Abzeichen zurück.
*/
public function getKopf() {
return $this->kopf();
}
/**
* Gibt den Namen des Abzeichens zurück.
*/
public function showKopf() {
return $this->abzeichenKopf[$this->kopf];
}
/**
* Speichert den Bildpfad.
* @param string $bildpfad
*/
public function setBildpfad($bildpfad) {
$this->bildpfad = $bildpfad;
}
/**
* Gibt den Bildpfad zurück.
*/
public function getBildpfad() {
return $this->bildpfad;
}
}
<?php
/**
* Klasse Pferd
* Basisklasse.
*/
class Pferd {
private $id;
private $name;
private $alter;
private $stockmass;
private $gewicht;
private $geburtstag;
/**
* Ist eine Instanz der Klasse Rasse mit den Eigenschaften der Rasse des
* Pferdes.
*/
private $rasse;
/**
* Ist eine Instanz der Klasse Fellfarbe mit den Eigenschaften der Fellfarbe
* des Pferdes.
*/
private $fellfarbe;
/**
* Enthält die ID des Geschlechts aus dem Array $geschlechter.
*/
private $geschlecht;
/**
* Array mit ID und Bezeichnung der Geschlechter.
*/
private $geschlechter = array(0 => "Stute", 1 => "Hengst", 2 => "Wallach");
/**
* Enthält die IDs der Eltern.
*/
private $mutter;
private $vater;
/**
* Enthalten die ID des jeweiligen Users.
*/
private $besitzer;
private $zuechter;
/**
* Enthält eine Instanz der Klasse Zustand
*/
private $zustand;
/**
* @param int $pferdeid
* @param string $name
* @param int $alter
* @param int $geschlecht
* @param obj(?) $rasse
*/
public function __construct($pferdeid, $name, $alter, $geschlecht, Rasse $rasse) {
$this->setId($pferdeid);
$this->setName($name);
$this->setAlter($alter);
$this->setGeschlecht($geschlecht);
$this->setRasse($rasse);
}
/**
* Speichert die ID des Pferdes.
* @param int $pferdeid
*/
public function setId($pferdeid) {
if (is_numeric($pferdeid) && $pferdeid > 0) {
$this->id = $pferdeid;
} else {
// Ausnahmebehandlung
}
}
public function getId() {
return $this->id;
}
/**
* Speichert den Namen des Pferdes.
* @param string $name
*/
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
/**
* Speichert das numerische Alter.
* @param int $alter
*/
public function setAlter($alter) {
if (is_numeric($alter) & $alter >= 0) {
$this->alter = $alter;
} else {
// Ausnahmebehandlung
}
}
/**
* Gibt das numerische Alter des Pferdes zurück.
*/
public function getAlter() {
return $this->alter;
}
/**
* Rechnet das Alter vom Wochenformat in Wochen, Monate und Jahre um.
*/
public function showAlter() {
$jahr = null;
$monat = null;
$woche = null;
// Anzahl der Jahre?
$rest_wochen = $this->alter % 48;
$jahre = ($this->alter - $rest_wochen) / 48;
$wochen = $rest_wochen;
// Anzahl der Monate?
$rest_wochen = $wochen % 4;
$monate = ($wochen - $rest_wochen) / 4;
// Anzahl Wochen?
$wochen = $rest_wochen;
// Ausgabe:
$return = $jahre > 0 ? ($jahr == 1 ? $jahre.' Jahr ' : $jahre.' Jahre ') : '';
$return .= $monate > 0 ? ($monate == 1 ? $monate.' Monat ' : $monate.' Monate ') : '';
$return .= $wochen > 0 ? ($wochen == 1 ? $wochen.' Woche' : $wochen.' Wochen') : '';
return $return;
}
/**
* Speichert die Größe des AUSGEWACHSENEN Pferdes.
* @param int $stockmass
*/
public function setStockmass($stockmass) {
if (is_numeric($stockmass) && $stockmass > 0) {
$this->stockmass = $stockmass;
} else {
// Ausnahmebehandlung
}
}
/**
* Gibt die Größe des AUSGEWACHSENEN Pferdes zurück.
*/
public function getStockmass() {
return $this->stockmass;
}
/**
* Gibt die aktuelle, tatsächliche Größe des Pferdes zurück.
*/
public function showStockmass() {
$wachstum = (0.40 / 144) * $this->alter;
$groesse = $this->stockmass * (0.60 + $wachstum);
if ($groesse < $this->stockmass) {
return number_format($groesse);
}
elseif ($groesse >= $this->stockmass) {
return $this->stockmass;
}
else {
$this->stockmass;
}
}
/**
* Speichert das Gewicht.
* @param int $gewicht
*/
public function setGewicht($gewicht) {
if (is_numeric($gewicht) && $gewicht > 0) {
$this->gewicht = $gewicht;
}
}
/**
* Gibt das Gewicht eines Pferdes zurück.
*/
public function getGewicht() {
return $this->gewicht;
}
/**
* Falls $rasse ein Objekt der Klasse Rasse speichern.
* @param obj(?) $rasse
*/
public function setRasse(Rasse $rasse) {
$this->rasse = $rasse;
}
public function getRasse() {
return $this->rasse;
}
/**
* Falls $fellfarbe ein Objekt der Rasse Fellfarbe ist speichern.
* @param obj(?) $fellfarbe
*/
public function setFellfarbe(Fellfarbe $fellfarbe) {
$this->fellfarbe = $fellfarbe;
}
/**
* Gibt die Fellfarbe zurück.
*/
public function getFellfarbe() {
return $this->fellfarbe;
}
/**
* Vergleicht, ob die in $geschlecht gegegebene ID mit einer der IDs in
* $geschlechter übereinstimmt. Wenn nicht, dann handelt es sich um keine
* gültige Angabe.
* @param int $geschlecht
*/
public function setGeschlecht($geschlecht) {
if (array_key_exists($geschlecht, $this->geschlechter)) {
$this->geschlecht = $geschlecht;
} else {
// Ausnahmebehandlung
}
}
/**
* Gibt die ID des Geschlechts zurück.
*/
public function getGeschlecht() {
return $this->geschlecht;
}
/**
* Sucht aus dem Array $geschlechter mithilfe der in $geschlecht gespeicherten
* id als Key die Schriftform des Geschlechts für die Ausgabe in HTML.
*/
public function showGeschlecht() {
return $this->geschlechter[$this->geschlecht];
}
/**
* Falls ID valide, Mutter-ID speichern.
* @param int $mutter
*/
public function setMutter($mutter) {
if (is_numeric($mutter)) {
$this->mutter = $mutter;
} else {
// Exception.
}
}
public function getMutter() {
return $this->mutter;
}
/**
* Falls ID valide, Vater-ID speichern.
* @param int $vater
*/
public function setVater($vater) {
if (is_numeric($vater)) {
$this->vater = $vater;
} else {
// Exception.
}
}
public function getVater($vater) {
return $this->vater;
}
/**
* Falls ID valide, Besitzer-ID speichern.
* @param int $besitzer
*/
public function setBesitzer($besitzer) {
if (is_numeric($besitzer)) {
$this->besitzer = $besitzer;
}
else {
// Exception.
}
}
public function getBesitzer() {
return $this->besitzer;
}
/**
* Falls ID valide, Züchter-ID speichern.
* @param int $zuechter
*/
public function setZuechter($zuechter) {
if (is_numeric($zuechter)) {
$this->zuechter = $zuechter;
}
else {
// Exception.
}
}
public function getZuechter() {
return $this->zuechter;
}
/**
* Speichert eine Instnz von Zustand.
* @param obj $zustand
*/
public function setZustand(Zustand $zustand) {
$this->zustand = $zustand;
}
public function getZustand() {
return $this->zustand;
}
}
<?php
/**
* Klasse Rasse
* Daten der Rassen stammen aus einer Datenbank und werden in ein Array verpackt.
*/
class Rasse {
/**
* Enthält die ID der Rasse aus dem Array $rassen der Daten aus der Datenbank.
*/
private $id;
private $name;
private $beschreibung;
/**
* ID des Typen. Gibt an, ob eine Rasse zu den Ponys, Warmblütern, Kaltblütern oder
* Vollblütern gehört.
*/
private $typ;
/**
* Array mit den Typen.
*/
private $typen = array(0 => "Warmblut", 1 => "Kaltblut", 2 => "Vollblut", 3 => "Pony");
/**
* Erlaubt Abzeichen? 0 = nein, 1 = ja.
*/
private $abzeichen;
/**
* @param int $id
* @param string $name
* @param int $typ
*/
public function __construct($id, $name, $typ) {
$this->setID($id);
$this->setName($name);
$this->setTyp($typ);
}
/**
* Speichert die Rasse-ID.
* @param int $id
*/
public function setId($id) {
if (is_numeric($id) && $id > 0) {
$this->id = $id;
}
else {
// Ausnahmebehandlung, Exception
}
}
public function getId() {
return $this->id;
}
/**
* Speichert den Namen der Rasse.
* @param string $name
*/
private function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
/**
* Speichert die Beschreibung.
*/
private function setBeschreibung($beschreibung) {
$this->beschreibung = $beschreibung;
}
public function getBeschreibung() {
return $this->beschreibung;
}
/**
* Speichert die Typ-ID
* @param int $typ
*/
private function setTyp($typ) {
if (is_numeric($typ)) {
$this->typ = $typ;
} else {
// Exception, Ausnahmebehandlung.
}
}
/**
* Gibt die Typ-ID zurück.
*/
public function getTyp() {
return $this->typ;
}
/**
* Gibt die Typenbezeichnung zurück.
*/
public function showTyp() {
return $this->typen[$this->typ];
}
/**
* @param int $abzeichen
*/
public function setAbzeichen($abzeichen) {
if (is_numeric($abzeichen) && $abzeichen >= 0 && $abzeichen <= 1) {
$this->abzeichen = $abzeichen;
} else {
// Exception.
}
}
}
<?php
/**
* Klasse Zustand
* Enthält alle Werte des momentanen Zustands eines Pferdes.
*/
class Zustand {
/**
* Angabe in Zahlenwerten von 0-5000.
*/
private $energie;
/**
* Angaben in Prozent
*/
private $kondition;
private $gesundheit;
private $konstitution;
/**
* Konstruktor
* @param int $energie
* @param int $kondition
* @param int $gesundheit
* @param int $konstitution
*/
public function __construct($energie, $kondition, $gesundheit, $konstitution) {
$this->setEnergie($energie);
$this->setKondition($kondition);
$this->setGesundheit($gesundheit);
$this->setKonstitution($konstitution);
}
/**
* Speichert die Energie des Pferdes
* @param int $energie
*/
public function setEnergie($energie) {
if ($energie >= 0 && $energie <= 5000) {
$this->energie = $energie;
} else {
// Exception.
}
}
public function getEnergie() {
return $this->energie;
}
/**
* Speichert die Kondition des Pferdes
* @param int $kondition
*/
public function setKondition($kondition) {
if ($kondition >= 0 && $kondition <= 100) {
$this->kondition = $kondition;
} else {
// Exception
}
}
public function getKondition() {
return $this->kondition;
}
/**
* Speichert die Gesundheit des Pferdes
* @param int $gesundheit
*/
public function setGesundheit($gesundheit) {
if ($gesundheit >= 0 && $gesundheit <= 100) {
$this->gesundheit = $gesundheit;
} else {
// Exception
}
}
public function getGesundheit() {
return $this->gesundheit;
}
/**
* Speichert die Konstitution des Pferdes
* @param int $konstitution
*/
public function setKonstitution($konstitution) {
if ($konstitution >= 0 && $konstitution <= 100) {
$this->konstitution = $konstitution;
} else {
// Exception
}
}
public function getKonstitution() {
return $this->konstitution;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment