Foros del Web » Programando para Internet » PHP »

Diseñar-optimizar un grid enorme con valores 0/1 en cada casilla

Estas en el tema de Diseñar-optimizar un grid enorme con valores 0/1 en cada casilla en el foro de PHP en Foros del Web. Buenas, estoy diseñando un juego y necesito diseñar un mapa digamos 200x200, cada casilla tendra el valor de 0 o 1 para indicar si es ...
  #1 (permalink)  
Antiguo 23/04/2014, 09:02
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Pregunta Diseñar-optimizar un grid enorme con valores 0/1 en cada casilla

Buenas, estoy diseñando un juego y necesito diseñar un mapa digamos 200x200, cada casilla tendra el valor de 0 o 1 para indicar si es agua o tierra

De este modo si un jugador está en la casilla 20,20 se le mostrará solo las casillas 10x10 de justo alrededor

Mi duda es como guardar/recuperar ese grid de 200x200 de forma optimizada en cuanto a memoria del servidor, ya que en el juego constantemente cada jugador va a tener que acceder a dichos datos

Habia pensado en crear arrays tipo

$terreno[1]="0000010010010101001010010010101010..."; //(asi hasta 200)
$terreno[2]="01001010001010100101010101001010.....";
...
.
.
$terreno[200]="00000000110110101001...";

Y luego de algun modo con condiciones cargar solo las filas que correspondan con la coordenada del jugador y mostrar el mapa

Cualquier tip, se agradece
  #2 (permalink)  
Antiguo 23/04/2014, 10:49
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Diseñar-optimizar un grid enorme con valores 0/1 en cada casilla

En cuanto a memoria del servidor guardar en un string es lo que menos consume.

3566880 bytes
Código PHP:
Ver original
  1. for ($i = 0; $i < 200; $i++) {
  2.  
  3.     for ($j = 0; $j < 200; $j++) {
  4.        
  5.         $array[$i][$j] = true;
  6.     }
  7. }
  8.  
  9. unset($i);
  10. unset($j);
  11.  
  12. echo sizeof($array);
  13. echo "<br/>";
  14. echo memory_get_usage()."\n";

149280 byres
Código PHP:
Ver original
  1. for ($i = 0; $i < 200; $i++) {
  2.    
  3.     $array[$i] = '';
  4.     for ($j = 0; $j < 200; $j++) {
  5.        
  6.         $array[$i] .= '1';
  7.     }
  8. }
  9.  
  10. unset($i);
  11. unset($j);
  12.  
  13. echo sizeof($array);
  14. echo "<br/>";
  15. echo memory_get_usage()."\n";

Pero como desarrollador te recomendaría que uses la opción de la matriz, para poder trabajar cómodo. Trabajar con la cadena de 200 caracteres se torna muy difícil y engorroso, seguramente terminaras ensuciando mucho el código y usando mas procesador
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 23/04/2014 a las 10:57
  #3 (permalink)  
Antiguo 23/04/2014, 12:21
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Diseñar-optimizar un grid enorme con valores 0/1 en cada casilla

Te sugiero usar una matriz de datos (arreglo bidimensional) y en lo posible, que dicha matriz sea cargada al cliente para que las peticiones al servidor sean las mínimas.
  #4 (permalink)  
Antiguo 24/04/2014, 11:35
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: Diseñar-optimizar un grid enorme con valores 0/1 en cada casilla

muchas gracias a ambos, estoy probando con la funcion memory_get_usage, no la habia trasteado mucho

gracias

Etiquetas: arrays, grid
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 16:44.