Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/09/2013, 11:04
Avatar de djsos
djsos
 
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 17 años, 3 meses
Puntos: 14
Respuesta: Prueba de batalla

demasiadas clases que no hacen nada,

te dejo mi codigo chapuza de 10 minutos, se que se puede mejorar de mil manera pero te servirá tienes herencia, bucles, condicionales y algunas cositas mas.

Código PHP:
Ver original
  1. <?php
  2. class BATALLA{
  3.     private $ronda;
  4.    
  5.     /**
  6.      * Constructor del objeto BATALLA
  7.      */
  8.     public function __construct(){
  9.         $this->ronda = 0;
  10.         $ORCO = new ORCO();
  11.         $PALADIN = new PALADIN();
  12.        
  13.         $jugador = 1;
  14.        
  15.         while($ORCO->getVida()>=1 && $PALADIN->getVida() >= 1){
  16.             if($jugador == 1){
  17.                 if((rand(0,10)%2)==0){
  18.                     //Ataque del Orco
  19.                     $subtotataque = $ORCO->ataque()- $PALADIN->defensa();
  20.                     $PALADIN->restarVida($subtotataque);
  21.                     echo "Ataque del Orco --> ".$subtotataque." de da&ntilde;o.<br />";
  22.                 }else{
  23.                     //Defensa del Orco
  24.                     $subtotdefensa = $PALADIN->ataque()- $ORCO->defensa();
  25.                     $PALADIN->restarVida($subtotdefensa);
  26.                     echo "Defensa del Orco --> ".$subtotataque." de da&ntilde;o.<br />";
  27.                 }
  28.                 $jugador = 2;
  29.             }else{
  30.                 if((rand(0,10)%2)==0){
  31.                     //Ataque del Paladin
  32.                     $subtotataque = $PALADIN->ataque()- $ORCO->defensa();
  33.                     $ORCO->restarVida($subtotataque);
  34.                     echo "Ataque del Paladin --> ".$subtotataque." de da&ntilde;o.<br />";
  35.                 }else{
  36.                     //Defensa del Paladin
  37.                     $subtotdefensa = $ORCO->ataque()- $PALADIN->defensa();
  38.                     $ORCO->restarVida($subtotdefensa);
  39.                     echo "Defensa del Paladin --> ".$subtotdefensa." de da&ntilde;o.<br />";
  40.                 }
  41.                 $jugador = 1;
  42.             }
  43.             echo "Fin de la ronda ".$this->ronda.". Paladin:".$PALADIN->getVida()." | Orco: ".$ORCO->getVida()."<br />";
  44.             $this->ronda++;
  45.         }
  46.        
  47.         echo "<h2>Fin de la Partida</h2>";
  48.         if($PALADIN->getVida() > $ORCO->getVida()){
  49.             echo "Ganador el PALADIN con ".$PALADIN->getVida()." puntos de vida";
  50.         }else{
  51.             echo "Ganador el ORCO con ".$ORCO->getVida()." puntos de vida";
  52.         }
  53.        
  54.     }
  55. }
  56.  
  57. class JUGADOR{
  58.     protected $vida = 100;
  59.     protected $ataque = 2;
  60.     protected $defensa = 2;
  61.     public function ataque(){
  62.         return $this->ataque+rand(-3,3);
  63.     }
  64.    
  65.     public function defensa(){
  66.         return $this->defensa+rand(-2,2);
  67.     }
  68.    
  69.     public function getVida(){
  70.         return $this->vida;
  71.     }
  72.    
  73.     public function restarVida($resta){
  74.         if($resta >=1){
  75.             $this->vida= $this->vida - $resta;
  76.         }
  77.        
  78.     }
  79. }
  80.  
  81. class ORCO extends JUGADOR{
  82.     public function __construct(){
  83.         $this->ataque = 1;
  84.         $this->defensa = 5;
  85.     }
  86. }
  87.  
  88. class PALADIN extends JUGADOR{
  89.     public function __construct(){
  90.         $this->ataque = 5;
  91.         $this->defensa = 2;
  92.     }
  93. }
  94. $BATALLA = new BATALLA();
  95. ?>

Espero que te sirva y admito criticas
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios