Graficar un mapa con PHP y coordenadas desde un txt

Pues, esta vez necesitaba generar una imagen con la posicion de mis aliados en el popular juego ikariam, sabemos que existen varios generadores de mapas, pero nunca esta de mas jugar un poco con PHP y ver lo que se puede hacer n.n

El presente código coge un archivo de texto «coordenadas.txt» (con coordenadas numéricas de las posiciones que se desean pintar) e interpreta su contenido dando color a la imagen en los puntos especificados.

Código:

############################################################
# Autor: Julio César Fernández Báez
# Resumen:
# 1.- Crear imagen.
# 2.- Leer coordenadas
# 3.- Pintar cuadraditos
# 4.- Pintar Grilla
# 5.- Generar Imagen
############################################################

set_time_limit(10);


ini_set('max_execution_time', 10);

// Create a 300x100 image
//$im = imagecreate(1000, 1000);

// Set the background to be red
//imagecolorallocate($im, 0, 0, 0);

// Get the color index for the background
//$bg = imagecolorat($im, 0, 0);

// Set the backgrund to be blue
//imagecolorset($im, $bg, 0, 0, 0);

############################################################
#################### 1.- Crear imagen. #####################
############################################################

// Creando una imagen de 1000x1000
$im = imagecreate(1000, 1000);

// Estableciendo el color de fondo a negro
imagecolorallocate($im, 0, 0, 0);

// Creando una funcion que pinte los cuadraditos de coordenadas i,j en la imagen $im
function pintarCuadradito($i,$j,$im){

	//estableciendo color rojo para pìntar los cuadraditos
	$rojo = imagecolorallocate($im, 255, 0, 0);
	
	//tamaño de los cuadraditos = 10 (x2-x/y2-y)
	$x2 = $i+10;
	$y2 = $j+10;
	
	//pintando el cuadradito
	for($x=$i ; $x<$x2 ; $x++){
		for($y=$j;$y<$y2;$y++){
			imagesetpixel ($im, $x, $y, $rojo);
		}
	}
	
}


############################################################
#################### 2.- Leer Coordenadas. #################
############################################################


################################# inicio - leer coordenadas de archivo ################################



$archivo = file("coordenadas.txt");
$lineas = count($archivo);

for($i=0; $i < $lineas; $i++){
	//dreamhost
	//$x=substr($archivo[$i], -7, 2);
	//$y=substr($archivo[$i], -4, 2);
	
	$x=substr($archivo[$i], -8, 2);
	$y=substr($archivo[$i], -5, 2);
	
	pintarCuadradito($x*10,$y*10,$im);
}

################################# fin - leer coordenadas de archivo ################################




//Pintando los cuadraditos

/*
pintarCuadradito(600,600,$im);
pintarCuadradito(800,500,$im);
pintarCuadradito(90,400,$im);
pintarCuadradito(50,500,$im);
pintarCuadradito(200,550,$im);
pintarCuadradito(500,900,$im);
*/

//pintar lineas en imagen($im)
function pintarLineas($im){
	//estableciendo color blanco para pìntar las lineas de la cuadricula
	$blanco = imagecolorallocate  ( $im ,  255 , 255 , 255 );  
	
	//pintando las lineas verticales
	for ($x=0 ; $x<1000 ; $x+=200){
		imageline ( $im , $x , 1000 , $x , 0 , $blanco  );
	}
	//pintando las lineas horizontales
	for ($y=0 ; $y<1000 ; $y+=200){
		imageline ( $im , 1000 , $y , 0 , $y , $blanco  );
	} 
}
pintarLineas($im);


// Mostrando la imagen en el navegador
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

Muestra: http://12titanes.nacgam.com/mapa/IkaMapTitan.php

Ejemplo descargable: IkaMapTitan

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.