ciao sto cercando di creare un mini "gioco",giusto per assestare le mie conoscenze basilari

dovrebbe funzionare cosi: un soldato e un mostro che hanno nome,forza,energia vitale.
se il soldato attacca il mostro toglierà dalla sua energia vitale il quantitativo di danni pari alla sua forza,come accade in ogni gioco.
col procedurale è una c*****a farlo,ma ad oggetti??

Codice PHP:
<?php  #CLASSE PRINCIPALE 
class warrior 
private 
$nome
private 
$forza
private 
$energia;  
public function 
__construct($n,$f,$e) { 
$this->nome=$n
$this->forza=$f
$this->energia=$e
}
public function 
getnome() { 
return 
$this->nome;
 } 
public function 
getforza() {
 return 
$this->forza

public function 
getenergia() {
 return 
$this->energia;
 }  
}   
#UNITA' UOMO 
class soldier extends warrior 
public function 
__tostring() {
 return 
"Unita' umana: ".parent::getnome().", Forza:".parent::getforza().", Energia:".parent::getenergia(); 

 public function 
fight($r) { 
return new 
warrior($r->energia-$this->forza); 


#UNITA' MOSTRO
 
class monster extends warrior 
public function 
__tostring() {
 return 
"Unita' mostro: ".parent::getnome().", Forza:".parent::getforza().", Energia:".parent::getenergia(); 
}
 }   

$soldato=new soldier(sold,5,10);
 echo 
$soldato."</br>"
 
$mostro=new monster(most,7,15);
 echo 
$mostro."</br>";
  
$c=$soldato->fight($mostro); 
echo 
$c?>
il codice funziona fino alle echo delle caratteristiche delle 2 unità.non va la funzione fight,cosa ho sbagliato?
grazie