Piszę swoją pierwszą klasę do walki user kontra boot
Proszę o radę czy idę w dobrym kierunku czy dobrze rozumiem ideę programowania obiektowego.
Czy zmienne sesyjne powinny być może poza klasą.
$KLASA_walka = new PLAYERvsNPC($player_id,$pc_id,$id_walki);
$KLASA_walka->MielonkaPLAYERvsNPC();
echo '<br />Aktualna Tura: '.$KLASA_walka->get_WALKA_tura();
echo '<br />Player ID: '.$player_id; echo '<br />życie: '.$KLASA_walka->get_PLAYER_zycie();
echo '<br />NPC ID: '.$player_id; echo '<br />życie: '.$KLASA_walka->get_NPC_zycie();
class PLAYERvsNPC { // pierwsza moja klasa ;) proszę nie bić
public $ID_user = null;
public $ID_nps = null;
public $ID_walka = null;
public $PLAYER_zycie = null;
public $PLAYER_atak = null;
public $PLAYER_obrona = null;
public $NPC_zycie = null;
public $NPC_atak = null;
public $PNPC_obrona = null;
public $WALKA_czas_start = null;
public $WALKA_czas_dalej = null;
public $WALKA_tura = null;
public $czas_trwania_tury = 10; // w sekundach
public function __construct($ID_user, $ID_npc, $ID_walka)
{
$this->ID_user = $ID_user;
$this->ID_npc = $ID_npc;
$this->ID_walka = $ID_walka;
$this->PLAYER_zycie = 100;
$this->PLAYER_atak = 20;
$this->PLAYER_obrona = 10;
$this->NPC_zycie = 100;
$this->NPC_atak = 20;
$this->NPC_obrona = 10;
$this->set_WALKA_tura();
$this->set_WALKA_czas_start(time()); }
public function MielonkaPLAYERvsNPC() // sprawdzamy czy jest nowa tura i wykonujemy operacje WALKI
{
if (!isset($_SESSION['W_'.$this->ID_walka.'_tura'])) { $this->set_WALKA_czas_start();
$_SESSION['W_'.$this->ID_walka.'_player_'.$this->ID_user.'_z'] = $this->PLAYER_zycie;
$_SESSION['W_'.$this->ID_walka.'_pc_'.$this->ID_npc.'_z'] = $this->NPC_zycie;
}
else {
$_SESSION['W_'.$this->ID_walka.'_start_dalej'] = time(); $minelo_tury = $_SESSION['W_'.$this->ID_walka.'_start_dalej'] - $this->get_WALKA_czas_start();
if ($minelo_tury >= $this->czas_trwania_tury) {
$this->walka_PLAYERvsNPS(); // zabieramy zycie Playerowi i NPC
$_SESSION['W_'.$this->ID_walka.'_start'] = $_SESSION['W_'.$this->ID_walka.'_start_dalej'] = time(); }
$this->czas_trwania_tury = $this->czas_trwania_tury - $minelo_tury;
$_SESSION['W_'.$this->ID_walka.'_player_'.$this->ID_user.'_z'] = $this->PLAYER_zycie;
$_SESSION['W_'.$this->ID_walka.'_pc_'.$this->ID_npc.'_z'] = $this->NPC_zycie;
}
}
public function walka_PLAYERvsNPS() // WALKA i odejmowanie życia
{
$PLAYER_sila_ataku= ceil($this->PLAYER_atak - $this->NPC_obrona); $NPC_sila_ataku = ceil($this->NPC_atak - $this->PLAYER_obrona);
if ($NPC_sila_ataku>0) {
$PLAYER_zostalo_zycia = $this->PLAYER_zycie - $NPC_sila_ataku;
if ($PLAYER_zostalo_zycia>=0) $this->PLAYER_zycie = $PLAYER_zostalo_zycia;
else $this->PLAYER_zycie = 0;
}
if ($PLAYER_sila_ataku>0) {
$NPC_zostalo_zycia = $this->NPC_zycie - $PLAYER_sila_ataku;
if ($NPC_zostalo_zycia>=0) $this->NPC_zycie = $NPC_zostalo_zycia;
else $this->NPC_zycie = 0;
}
}
public function set_WALKA_tura()
{
if (!isset($_SESSION['W_'.$this->ID_walka.'_tura'])) { $this->WALKA_tura = 1;
}
else {
$this->WALKA_tura = $_SESSION['W_'.$this->ID_walka.'_tura'] + 1;
}
$_SESSION['W_'.$this->ID_walka.'_tura'] = $this->WALKA_tura;
}
public function set_WALKA_czas_start()
{
$_SESSION['W_'.$this->ID_walka.'_start'] = time(); $this->WALKA_czas_start = $_SESSION['W_'.$this->ID_walka.'_start'];
}
public function get_WALKA_tura()
{
return $this->WALKA_tura;
}
public function get_WALKA_czas_start()
{
return $this->WALKA_czas_start;
}
public function get_PLAYER_zycie()
{
return $this->PLAYER_zycie;
}
public function get_PLAYER_obrona()
{
return $this->PLAYER_obrona;
}
public function get_PLAYER_atak()
{
return $this->PLAYER_atak;
}
public function get_NPC_zycie()
{
return $this->NPC_zycie;
}
public function get_NPC_obrona()
{
return $this->NPC_obrona;
}
public function get_NPC_atak()
{
return $this->NPC_atak;
}
}
Ten post edytował Nortonek 7.04.2013, 19:18:50