Laberinto TD, ganador del MobiGame 2009 !!!

Este es el primer año que me presento al MobiGame e incluso que aprendo J2ME como ya dije en “Aprendiendo J2ME para el MobiGame“, aunque si que he trasteado mucho con J2SE (tengo un juego Java tipo Worms por hay subido que  hice con 14 tacos y ahora tengo 23).

Gracias al ejemplo de GameCanvas que viene con NetBeans no tardé ni un rato en tener una primera versión de un muñeco moviéndose por el escenario. Un mes después presente todo el análisis y diseño y alguna screen (solo había 1 tipo de torre y 1 tipo de enemigo en ese momento.)

Ha sido mi primer año y realmente me ha gustado mucho, ha habido muy buenos juegos y cualquiera podría haber ganado, estaba muy igualado. Os doy las gracias a todos los participantes por haber hecho que realmente haya competición. También gracias a la organización y todo el ambiente que han creado.

Seguir leyendo

Presentación de Laberinto Tower Defense

Llevo 4 fines de semana haciendo el desarrollo de Laberinto TD. Aunque el análisis y diseño es un trabajo de mucho tiempo (meses/años) de un juego que estaba haciendo (y cuando pueda lo seguiré) en c++.
El juego es una defensa de Torretas, como los custom maps del Warcraft3 y esta desarrollado más o menos al 50%:
Las caracteristicas del juego son las siguientes:

  1. Busqueda de caminos por los enemigos mediante IA, he implementado el algoritmo A*.
  2. 10 mapas, 50 niveles y 4 dificultades.
  3. Haré unos 10 tipos de torretas: hielo, splash, arrow, aura, aturdir, laser,veneno, invis, ultimate ….
  4. Cada tipo de torreta se podrá actualizar entre 5 y 20 levels.
  5. Todo se financiara con oro, la forma de obtenerlo es matando enemigos y consiguiendo hitos.
  6. Haré unas instrucciones de uso y ayudas en distintos menús de elección.
  7. Se guardarán persistentemente las máximas puntuaciones en cada mapa.
  8. Las condiciones de victoria es pasarte los 50 niveles.
  9. Las condiciones de derrota es no perder todas las vidas o alcanzar un número de máximo de enemigos.

Os pongo algunas imagenes:

Acepto cualquier sugerencia e idea. En mi opinión si consigo implementar todo lo que tengo pensado el juego puede ser un autentico vicio en esta o en cualquier plataforma. Espero que al menos os parezca interesante. Un saludo.

Repositorio funciones útiles/reutilizables PHP

Llevo desde el 2005 trabajando para una pequeña empresa de informática como programador LAMP. En estos años he acumulado muchas funciones potencialmente reutilizables e interesantes para cualquiera, aqui muestro una pequeña selección.

Os pido e invito a que añadáis vuestras propias funciones útiles o reutilizables en los comentarios.

Seguir leyendo

Expresiones regulares útiles

En este post ire poniendo algunas expresiones regulares que frecuentemente uso y siempre pierdo el “snippets“. Estos ejemplos estan escritos en PHP, pero son altamente portables estudiando simplemente que función en nuestro lenguaje analiza expresiones regulares. Algunas expresiones regulares no son muy buenas, asi que poner en los comentarios más expresiones regulares y os ire añadiendo.

//Nombre de usuario
//Acepta entre 4 y 28 caracteres de largo, alpha-numérico y acepta guiones_bajos.

$string = "userNaME4234432_";
if (preg_match('/^[a-z\d_]{4,28}$/i', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Direcciones de email

$string = "first.last@domain.co.uk";
if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Código postal

$string = "55324-4324";
if (preg_match('/^[0-9]{5,5}([- ]?[0-9]{4,4})?$/', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Dirección IP

$string = "255.255.255.0";
if (preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',$string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Color hexadecimal

$string = "#666666";
if (preg_match('/^#(?:(?:[a-f\d]{3}){1,2})$/i', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Fechas

$string = "10/15/2007";
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

Actualizado(jueves, 11 de diciembre de 2008):

Extraido de Mis Algoritmos:

Bueno, para mi y para todos los programadores (con mucho cariño jeje), hago entrega de mi repositorio de Expresiones Regulares :D ,… para aquellos momentos en los que desesperadamente necesito validar o emparejar una cadena de caracteres y no recuerdo como diablos se hace!… ¡Yuju!, no mas sufrimientos jeje

Link, repositorio de expresiones regulares : http://www.mis-algoritmos.com/ejemplos/regex.php

Fuente : http://www.blogandia.com/uncategorized/8-expresiones-regulares/

netstat : Listado de conexiones

Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un ordenador, tanto entrantes como salientes. Existen versiones de este comando en varios sistemas, como Unix/Linux, Mac OS X, Windows y BeOS.

Todos conocereis netstat, es casi la unica herramienta para ver la actividad de nuestra red y otras herramientas existentes de más alto nivel se suelen basar en netstat para sacar la información.

Con este post pretendo reflejar el comando netstat que normalmente uso y una breve explicación de cada parametro:

sudo netstat -punta
sudo netstat -putan
sudo netstat -patun
sudo netstat -pantu
sudo netstat -tunpa

Elegir la combinación memotécnica que más os guste, todas son equivalentes, pero la única que tiene sentido es la primera(por si no es evidente xD):

p: Muestra el PID y el nombre del proceso (solo si pones sudo)
u: Muestra sockets UDP
n: Mostrar númericamente, más rápido por que no tiene que resolver las ips y puertos
t: Muestra sockets TCP
a: Muestra todos los sockets(TCP y UDP) en cualquier de sus estados (conectado , en escucha …)

Nota final: La verdad es que windows es más fácil de recordar con su netstat -ano . oaejaejo 0_o

Fuentes: man y Wikipedia