Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Prueba de batalla

Estas en el tema de Prueba de batalla en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola estoy aprendiendo php orientado a objetos y mejorando mi php, ya que lo deje hace años y se me han olvidado muchas cosas xD ...
  #1 (permalink)  
Antiguo 09/08/2013, 10:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 9 meses
Puntos: 0
Prueba de batalla

Hola estoy aprendiendo php orientado a objetos y mejorando mi php, ya que lo deje hace años y se me han olvidado muchas cosas xD

Para hacerlo estoy realizando un juego, digamos cosas basicas pero como me entretengo a la vez que aprendo, tengo una duda, he creado este codigo, lo que hace es algo simple, recoge unos valores de ataque,defensa y vida de la BD y cada vez que se actualiza la web va bajando la vida, una vez llegada a 0 se pierde la "batalla".

Ahora lo que quiero es ponerlo mediante botones de ataque, nada complicado, pero a lo que iba, necesito que me corrijan este codigo, simplemente diganme si hay algo que se pueda simplificar ya que me servira para aprender :P

Y si no quieren eso, al menso pueden ayudarme con algo, necesito que una vez acabada la "batalla" la vida de ambos volviera a lo que tenia al inicio, supòngo que quiza en el else se podria meter un UPDATE a las vidas con los valores anteriores, pero quiza exista algo mas "profesional".

gracias!!

Código PHP:
<?php
class Conectar {
   public static function 
con() {
   
$con=mysql_connect("localhost","root","");
   
mysql_select_db("prueba");
   return 
$con;
}
}
class 
Publicar {
   public function 
pub() {
   
$res=mysql_query("SELECT * FROM tabla",Conectar::con());
   while(
$reg mysql_fetch_assoc($res)) {
      
$this->est[] = $reg;
}
   return 
$this->est;
}
}
class 
Uno {
   public function 
pubu() {
   
$res=mysql_query("SELECT * FROM tabla WHERE ID=5",Conectar::con());

   return 
$res;
}
}

class 
Dos {
   public function 
pubu() {
   
$res=mysql_query("SELECT * FROM tabla WHERE ID=4",Conectar::con());
   return 
$res;
}

}
class 
Vida {
   public function 
atk($vida1) {
     
$res=mysql_query("UPDATE tabla SET vida=$vida1 WHERE ID=4",Conectar::con());
     return 
$res;
}
}



$pub=new Uno;
$dat=$pub->pubu();
$pubu=new Dos;
$dat2=$pubu->pubu();

$orco=mysql_fetch_array($dat2);
$paladin=mysql_fetch_array($dat);

$res=$paladin["ATK"] - $orco["DEF"];
$vid=$orco["vida"] - $res;


if(
$orco["vida"] > 0) {

$vi=new Vida;
$vi->atk($vid);

echo 
$paladin["ATK"]." - ".$orco["DEF"];
echo 
"<p>";
//Mostramos el daño realizado
echo $res;
echo 
"<p>";
//Mostramos la vida restante
echo $vid;
echo 
"<p>";
}
else 

echo 
"has perdido noob"
}

?>
  #2 (permalink)  
Antiguo 21/09/2013, 11:04
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 17 años, 2 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

Etiquetas: batalla, php, prueba, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:43.