25. februar 2007 - 18:01Der er
10 kommentarer og 1 løsning
Øvelse i OOP
Hej ekspertern.
Nu er jeg godt og grundigt kørt sur i noget OOP. Jeg ville gerne blive bedre så jeg forsøgede mig lidt. Jeg tænkte det kunne da være sjovt at lave sådan en "krigs-simulator". Så jeg prøvede mig frem og er noget frem til dette:
<? class Battle { protected $unitsT1; protected $unitsT2;
protected $turnT1 = true;
public function __construct($units1, $units2){ $this->setUnitsT1($units1); $this->setUnitsT2($units2); }
public function turnChange(){ $this->turnT1 = !$this->turnT1; }
public function getUnitsT1(){ return $this->unitsT1; } public function setUnitsT1($units){ $this->unitsT1 = $units; }
public function getUnitsT2(){ return $this->unitsT2; } public function setUnitsT2($units){ $this->unitsT2 = $units; }
public function checkFightning(){ if($this->unitsT1 > 0 && $this->unitsT2 > 0){ return true; }else{ return false; } }
public function result(){ if($this->unitsT1 <= 0){ return "Team2 vandt. De havde ". $this->getUnitsT2 ." tanks tilbage. Kom igen Team1"; }else{ return "Team1 vandt. De havde ". $this->getUnitsT1 ." tanks tilbage. Kom igen Team2"; } } } ?>
Som sagt kunne jeg ikke få det til at virke som jeg ville have det. Er heller ikke sikker på om det simulere ordenligt.
Er der nogen der kan fortælle mig hvad jeg har gjort galdt? Hver kan jeg kører den igennem vinder Team1 heletiden, og jeg kan ikke se hvor mange tanks de havde tilbage. Er det her den rigtige måde at gøre det på?
sjovt lille spil du har gang i. I din publish() function skal du ikke have noget break. Slet de to break. Jeg tror du skal ændre din turnChange() til noget ala: public function turnChange(){ if($this->turnT1 == TRUE) { $this->turnT1 = FALSE; }else $this->turnT1 = TRUE; }
nu har jeg så ændret lidt i det, og det virker bedre. Nu er problemet bare, at den stadig ikke viser hvor mange tanks der er tilbage til sidst. Jeg føler heler ikke at den simulere det ordenligt. Da hvis jeg skriver 2 tanks i hver, og går vidre, vinder team2 altid. (har prøvet i lang tid nu )
Min kode ser nu således ud:
<? class Battle { protected $unitsT1; protected $unitsT2;
protected $turnT1 = true;
public function __construct($units1, $units2){ $this->setUnitsT1($units1); $this->setUnitsT2($units2); }
public function turnChange(){ if($this->turn == true){ $this->turn = false; }else{ $this->turn = true; } }
public function getUnitsT1(){ return $this->unitsT1; } public function setUnitsT1($units){ $this->unitsT1 = $units; }
public function getUnitsT2(){ return $this->unitsT2; } public function setUnitsT2($units){ $this->unitsT2 = $units; }
public function checkFightning(){ if($this->unitsT1 > 0 && $this->unitsT2 > 0){ return true; }else{ return false; } }
public function result(){ if($this->unitsT1 <= 0){ return "Team2 vandt. De havde ". $this->getUnitsT2 ." tanks tilbage. Kom igen Team1"; }else{ return "Team1 vandt. De havde ". $this->getUnitsT1 ." tanks tilbage. Kom igen Team2"; } } } ?>
foresten dkfire. Ja, de kan være private :) Skal de også, men vil lige have det hele til at funge ordentligt.
Ja, men ville bare live skrive det basale også opdatere :) Dk fire smid et svar. (Håber ikke det gør noget erik. Du var først med svaret, men du beviste tidligere idag at du var ligeglad !! Thumb up!)
Nææ behold du bare de point. Jeg er her kun for at lære og hjælpe andre. Og så kunne jeg da godt tænke mig at se det spil når du engang er færdig med det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.