Foros del Web » Programando para Internet » PHP »

Generador de mapas

Estas en el tema de Generador de mapas en el foro de PHP en Foros del Web. Hola: Estoy programando un jueguecillo y me gustaría que se pudieran construir los edificios de forma visual (eligiendo dónde se quiere poner y demás). El ...
  #1 (permalink)  
Antiguo 20/03/2007, 09:04
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 17 años, 11 meses
Puntos: 3
Generador de mapas

Hola:

Estoy programando un jueguecillo y me gustaría que se pudieran construir los edificios de forma visual (eligiendo dónde se quiere poner y demás). El juego usa dos frames: el de la izuierda que es el menú y el de la derecha que es el principal. Cada vez que se elige una opción del menú, los frames se recargan y se obtiene la información del módulo a cargar en el frame principal con GET.

Este es el código fuente del módulo:
Código PHP:
<?php
session_start
();
if (isset(
$_SESSION['id_usuario'])){   //Comprueba si hay info para login
    
include('../lib/funciones.php');
    include(
'../lib/cabecera.php');
    echo 
'<P><FORM METHOD="get" ACTION="construccion.php">';
    echo  
'<INPUT TYPE="IMAGE" SRC="imagen_mapa.php?x='.$_GET["mapa_x"].'&y='.$_GET["mapa_y"].'&opcion='.$_GET["opcion"].'" NAME="mapa" BORDER="0" style="cursor:crosshair">';
     echo
'<input name="modulo" type="hidden" value="construccion" />';
     echo 
'<label><br>';
     echo 
'<input name="opcion" type="radio" value="casa" checked="checked"/>';
     echo 
'</label>';
     echo 
'Casa<br>';
     echo 
'<label>';
     echo 
'<input name="opcion" type="radio" value="aserradero" />';
     echo 
'Aserradero<br>';
     echo 
'</label>';
     echo 
'<label>';
     echo 
'<input name="opcion" type="radio" value="mina" />';
     echo 
'Mina<br>';
     echo 
'</label>';
   echo    
'</FORM>';
if (isset(
$_SESSION['construido']) AND $_SESSION['construido']==1){
  echo 
'Se ha podido<br>'.$_SESSION['construido'];
    
print_r($_SESSION);
  
$_SESSION['construido']=0;
  }else{
        
print_r($_SESSION);
    echo 
'No se ha podido';
  }
  
print_r($_SESSION);
    include(
'../lib/cola.php');
}else{
  echo 
'No estás logeado';
  }
?>
y este es el código de la página que genera la imagen:

Código PHP:
<?php
session_start
();

Header"Content-type: image/jpeg");
if(isset(
$_GET)){
$imagen_sombra=imagecreatefromjpeg('../img/mapa2.jpg');
$color=imagecolorat($imagen_sombra,$_GET['x'],$_GET['y']);
if(
$color<>0){            
    
$imagen=imagecreatefromjpeg('../img/mapa.jpg');                    //Crea el mapa visible
    
$opcion=imagecreatefromjpeg('../img/'.$_GET["opcion"].'.jpg');   
    
$blanco=imagecolorallocate ($opcion,255,255,255);
    
imagecolortransparent($opcion,$blanco);
    
imagecopymerge($imagen,$opcion,$_GET['x'],$_GET['y'],0,0,30,30,100);
    
Imagejpeg($imagen,"",100);
    
Imagejpeg($imagen,"../img/mapa.jpg",100);
    
ImageDestroy($imagen);            //Crea la sombra del mapa
    
$negro=imagecolorallocate ($imagen_sombra,0,0,0);
    
imagefilledrectangle($imagen_sombra,$_GET['x'],$_GET['y'],$_GET['x']+30,$_GET['y']+30,$negro);
      
Imagejpeg($imagen_sombra,"../img/mapa2.jpg",100);    
    
ImageDestroy($imagen_sombra);
    
$_SESSION['construido']=1;
}else{
      
$imagen=imagecreatefromjpeg('../img/mapa.jpg');
      
Imagejpeg($imagen,"",100);
    
ImageDestroy($imagen);
    
$_SESSION['construido']=0;
}
}

?>
$Imagen es la imagen que se muestra al usuario (un cuadrado verde con un río en el medio). $Imagen_sombra es la imagen "escondida" que uso para saber si se puede construir o no en ese punto (tiene dos colores: el blanco indica que sí y el negro que no).

El código funciona. Si se puede construir entonces pone $_SESSION['construido'] a 1, si no a 0. El problema es que funciona con retardo, es decir, si yo pongo una casa y la construye no me dice nada, si después construyo una mina me dice que ha construido una casa, si luego construyo un aserradero me dice que ha construido una mina... He probado de 1000 formas para intentar solucionarlo pero nada. ¿Me podría alguien (si es que alguien ha leído hasta aquí) decir por que va con retardo?

Saludos y perdón por la extensión.
  #2 (permalink)  
Antiguo 20/03/2007, 09:26
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Generador de mapas

Hola

Bueno, pues yo pensaria que tal vez es porque no haces el submit a la pagina de construccion que me imagino es la que informa que ya se ha construido lo que se quiere. Prueba haciendo un redirect a la pagina de construccion despues de crear la imagen, espero te sirva, suerte.
  #3 (permalink)  
Antiguo 20/03/2007, 09:38
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: Generador de mapas

No estoy seguro de lo que dices, pero la imagen hace el submit a la página que genera la imagen al pinchar sobre ella (le envía las coordenadas y el edificio a construir). El GET si va actualizado, pero las SESSION no y esto es de lo poco que me queda para tener el proyecto acabado...

Saludos!
  #4 (permalink)  
Antiguo 20/03/2007, 10:00
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Generador de mapas

Hola

Y en el get no viajan tambien las session como variables get?? podrias intentar con eso o poner un header meta y que haga un refresh para que las sesion tomen el valor que se les asigna, suerte.
  #5 (permalink)  
Antiguo 20/03/2007, 13:59
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: Generador de mapas

No funciona. Si hubiese ido lo del GET tendría el asunto resuelto. Yo juraría que el código está bien...

Saludos!
  #6 (permalink)  
Antiguo 20/03/2007, 16:11
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Generador de mapas

Hola
Si tu apenas construyes una casa por ej, refrescas la pagina el te muestra el aviso de casa creada??
si es eso, entonces lo que te faltaria es refrescar la página, espero te sirva, suerte.
  #7 (permalink)  
Antiguo 20/03/2007, 17:32
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: Generador de mapas

Tu solución funcionaba, Patrón, pero al final he decidido crear una función que genere la imagen y dejarme de líos.

Muchas gracias a todos!
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 05:11.