Crea tu Juego Web 5: HTML y CSS Basico 1

Publicadas por Jose Carlos Tamayo


A pasado tiempo pero lo prometido es deuda asi que continuaremos con la creacion de este fabuloso tutorial. Recuerden el objetivo es crear un juego web que sea persistente.

Asi que manos a la obra. Hoy dia veremos como podemos usar las populares Hojas de Estilo en el Desarrollo del juego. Crearemos una interfaz basica para logearse a la pagina web y le pondremos algunas cosas vistosas para que realmente el juego se vea de clase A1+1..

El Objetivo de Hoy

Pues vamos a aprender de que trata las hojas de estilo en cascada, A.K.A CSS. El CSS nos servira a la larga para hacer mucho mas vistoso nuestro juego pero como buen saltamontes que son, vamos a ir poco a poco. Paciencia muchachos.

Entrandole al CSS

Las hojas de estilo o CSS, son archivos o codigo que permiten poner colores, tamaños y formas a casi todas los elementos de nuestras paginas web. No teman, tiene su sencillez este tema.

Manos a la obra. Se acuerdan la pagina index.php que creamos en nuestro anterior tutorial?, bueno antes de tocar el CSS haremos una sencilla interfaz de logeo con puro HTML y despues le pondremos un mucho de swing (hold out nazis grammars) con CSS.

Primer Paso: Crear nuestro Login en HTML

Como conversamos en el anterior tutorial armaremos la estructura de la pagina con HTML. Para crear un Login usaremos los tags form e input que son casi por defecto la forma mas facil de crear formularios. No se preocupen aun por el funcionamiento, lo pondremos primero bonito y en el siguiente tutorial crearemos la parte funcional.

Primero añadiremos el siguiente codigo a nuestro index.php. Primero borra todo lo que haya dentro de nuestros tags body y coloca dentro de los mismos el siguiente codigo:

Insectoides

Battle Insectos de Batalla Redundandes

  • Inicio
  • Registrate
  • Imagenes
  • Quien soy
Logeate

Muy bien, ya tenemos una estructura simple de html, lo siguiente que haremos sera ahora si, usar CSS para maquillar esto.

Segundo Paso: Añadir y Probar nuestro CSS

Hay 3 formas de colocar CSS:
  •  Archivos Externos: La forma ideal para proyectos grandes, el codigo CSS esta en archivos externos fuera de nuestro HTML.
  • Cabecera de la pagina: Esta era la forma preferida hace como 10 años.Ahora no le encuentro mucho sentido asi que .. DONT!.
  • Dentro de cada tag: Asi es podemos colocar CSS en cada tag de HTML, tiene su utilidad para ciertos casos (como por ejemplo usar un javascript para cambiarle el color de fondo a algo que hayas hecho click, mas de eso en nuestro siguiente post), pero no aconsejo usarlo manualmente.
Entonces lo haremos por  inserción de un archivo externo:
  1. Dentro de nuestra carpeta CSS (recuerda, orden sobre todo) crea un archivo que se llame index.css. Este archivo contendra todo nuestro codigo basico de CSS
  2. Ingresa el siguiente codigo en el archivo:

    body{
    background:black;
    color:white;
    } 


    Este codigo basicamente indica que nuestro tag body se tenga de fondo el color negro y que las letras sean de color blanco.
  3. Entra a tu archivo index.php y coloca lo siguiente debajo de tu tag title dentro de la cabecera:

    
    

  4. Excelente ahora maravillemonos con el resultado:

Genial no? Tranquilo saltamontes, pronto lograremos algo mas interesante.

Tercer Paso: Selector ID

En nuestro primer CSS hemos cambiado los fondos al elemento body. En cualquier pagina html bien escrita , solo existe un tag body, pero que pasaria si queremos seleccionar solo un elemento de la pagina web que se repita, digamos un div en lugar de todos? Para eso existe en HTML lo que se conoce como ID.  Fijense bien en el div que contiene a nuestro formulario, tiene un parametro llamado id con el valor de loginFormWrapper., aqui una imagen de lo que digo:


Pues bien, que les parece si le ponemos un color tierra de fondo? Entremos a nuestro archivo index.css y debajo de tu codigo coloca lo siguiente:

#loginFormWrapper{
background:#845942;
color:white;
}

Notas el # en el codigo antes de loginFormWrapper? Con ese #, estamos indicando que ponga el css entre llaves a cualquier elemento que tenga el ID loginFormWrapper. Actualicemos nuestra pagina y veamos el resultado:



Algo sobre colores en CSS

 Los colores en CSS se pueden escribir en ingles ( como black, white, brown, yellow) o usar codigo RGB. Este codigo significa Red, Green, Blue y son valores hexadecimales, osea que van desde el 0 al 9 y de ahi sigue el A, B,C,D,E, F. Son 6 cifras, las primeras 2 son para el rojo, las siguientes cifras son para el verde y las siguientes cifras son para el azul.

No se si se acuerden de teoria de colores, pero bueno en la teoria, valga la redundancia, el negro es la ausencia de colores, por lo que su valor en RGB es #000000, y el blanco es la combinacion de todos los colores, por lo que su valor en RGB es #FFFFFF.  Si queremos sacar un rojo puro usariamos #FF0000, y asi uno puede mezclar sus colores como por ejemplo el amarillo que es la mezca de rojo con verde seria #FFFF00, podriamos sacar naranja usando un verde menos fuerte como #FFAA00. He actualizado mi tutorial 3 con las herramientas a usar con un programa muy util para estos temas de colores llamado ColorZilla, excelente plugin de Firefox.Tienen que instalarlo si o si y chekar la seccion del tutorial al respecto.

Y bueno, que es un selector en CSS?

 J@der que emocion!. Hemos aprendido entonces a colocar CSS a un solo elemento mediante su ID. Ahora presta atencion a lo que te voy a decir, todo elemento HTML bien escrito puede tener un ID unico, es decir que no se va a repetir en todo tu HTML. Por supuesto puedes escribir codigo con id que se repitan pero no te compliques la vida, para eso existe otro parametro que te voy a contar al rato.

Muy bien, ahora hemos visto que podemos cambiar el fondo de cualquier cosa por su tag (body) o por su ID. A este tipo de selección se llama Selectores en CSS, ya que nos permite seleccionar con que elementos de la pagina trabajaremos. Nos falta un selector mas, el mitico selector llamado clase.

Cuarto: Selectores de Clase

Ok digamos que estamos contento con este tipo de selector, pero quiero hacer que ciertos divs tengan caracteristicas iguales. Podriamos ponerle a cada div un id y repetir el codigo o podemos usar lo que se llama clases. Para eso escribamos primero un poco mas de HTML ;)

        
Esta es mi columna 1
Esta es mi columna 2
Esta es mi supercolumna 3

Copien ese codigo en tu archivo index.html y coloquenlo antes del cierre de su tag body, como muestra la imagen:
Ok se abran dado cuenta de que hemos colocado un nuevo parametro a nuestros div llamado class, cada uno de ellos tiene el valor llamado columna, y el tercero ademas tiene un ID llamado supercolumna.

Graba tu archivo y entra a index.css, preparte para el show con este codigo:

.columna{
    background:#C67927;
    width: 200px;
    margin:10px;
}

Buena voz, graba tu archivo css de nuevo ( si estas usando netbeans presiona CTRL+S, y salvate el trabajo de ir hasta el menu). Veamos el resultado:


¿Te fijaste en el . (el punto) que pusimos antes de la palabra columna en nuestro CSS? Pues ese punto indica que cualquier elemento que tenga el parametro class con el nombre columna tendra los estilos que colocamos dentro de las llaves { }, en este caso un background medio naranja, un width (ancho) de 200 pixeles y un margen de 10 pixeles. No te preocupes entraremos a ver estas caracteristicas en un proximo tutorial.


¿Que tal un combo de ID con Class?

Muy bien, y que pasaria si desearamos que el objeto con clase columna pero que tenga un id llamado supercolumna tenga un fondo diferente? Bueno se puede hacer coloquemos el siguiente codigo:

#supercolumna.columna{
    background:green;
}


Actualicemos la pagina y veamos el resultado:


Verdeyeah!, ahora sabemos como usar el combo ID + Clase

Finalizamos la clase Yehhh! 

Ok repasando la clase hemos visto 3 selectores que son los mas importantes
  • Por tags como body o html
  • Por ID usando el indicador #
  • Por Clase usando el indicador .
Ahora antes de terminar, te has puesto a pensar cual es la diferencia entre class y id? Pues si no te diste cuenta te lo aclaro (tranquilo yo me confundia al comienzo)
  • ID sirve para indicar UN solo elemento dentro de toda tu pagina
  • class sirve para señalar a varios elementos dentro de tu pagina
 La siguiente entrada trataremos acerca de posicionamiento de elementos con CSS y algo, alguito de CSS3. Pero si te fascino esto del CSS, estudialo, CSS es mi parte favorita con respecto a la creación de paginas webs en general y para juegos webs online, le veo un potencial terrorifico.

Espero que les haya gusta el tutorial. No te olvides de dejar comentarios y sugerencias, son la inspiracion que me hace continuar con los tutos. Hasta pronto :).

¿Te gusta la pagina?, socializame haciendole click a tu color preferido:

Add to Technorati Favorites Digg! del.icio.us.me

Mantenimiento de tu Codigo, mi caso de uso

Publicadas por Jose Carlos Tamayo

Hubo un periodo de 4 meses donde deje de programar Xeno para dedicarme a otros afanes de la vida, pero desde unas 2 semanas atras que encontre un buen tiempo para continuar con el juego. Dentro de la programacion encontre un problema que se resolvia cambiando mucho codigo o creando una especie de parche para el problema. Esto es un pequeño resumen de cuando necesiten reestructurar su codigo y no sepan como hacerlo.

El Problema,Planetas y Regiones:

Antes de la ultima actualización, los mapas  donde jugabamos, los llamaba planetas en mi base de datos y en mi codigo. Cada planeta tenia un mapa del planeta donde podriamos movernos. Ningun problema hasta ahi y codificaba feliz de la vida.

Antes: Un planeta con su mapa

Con los nuevos requerimientos (autoimpuestos, vaya que tengo algo de disciplina), las cosas cambiaron. Ahora un planeta podria tener regiones y estas regiones tendrian un mapa, osea los antiguos planetas vendrian a ser las nuevas regiones.

Ahora: El planeta puede tener regiones y estas regiones son mapas

El problema es el siguiente: Que hago con todo mi codigo y mi base de datos? Tengo que crear nuevas clases que sean referencia a los nuevos planetas pero ya tengo esas clases hechas y ademas referencian a las regiones! Y los nombres de mis funciones que antes eran digamos getPlanets(), ahora deberian de ser getRegions(), sin contar mis parametros, variables, defines y etc.

2 Caminos, 1 solo resultado

a) El facil y escabroso: Simplemente todo lo nuevo referente al planeta, se llamara algo asi como superPlanet o uberPlanet, en fin algo encima de lo que ahora se conoce como planeta. Resultado, un sentimiento de que algo esta mal mientras programo, como un sabor amargo. Pero algo muy comun en varios proyectos de software. La base de datos sigue igual.

b) El dificil y satisfactorio: La otra opcion es la refactorizacion masiva  de TODO mi codigo. Con ayuda de alguna herramienta busco y reemplazo las cadenas que contengan planets, Planets,PLANET, etc y lo reemplazo por regions,Regions,REGION, etc. ¿Refactorizar la Base de Datos? Je manualmente, no conozco herramientas que permitan buscar nombres de campos y refactorizarlos. 

Manos a la Obra:

Esta solucion, aunque es solo para PHP y en general para proyectos con pocas personas es la que me resulto mas facil de realizar, les pongo mi metodologia para que si alguna ves esten con este mismo problema, tengan la solucion a la mano!.

a) Obtener Dreamweaver y su poderosa busqueda: Yo trabajo con Aptana, pero si hay algo que odio del mismo es su opcion de busqueda de caracteres, solo puedes buscar en la misma pagina que tienes abierta, y encima no busca bien, en cambio Dreamweaver siempre fue un experto en estas lindes, con una sola ventana puedo encotrar todas las cadenas en mi Proyecto Completo. No solo funciona para PHP, si no que tambien para CSS y Javascript, genial!.

b) Saca un Backup - Obligatorio!: Realmente no avances nada si antes no haz sacado un backup, quizas este de mas decirlo pero estaras mas feliz de hacerlo.

c) Buscar de Mas a Menos: En mi caso empece buscando la palabra planet, lo que encontre fue que ademas de planet, tenia cadenas llamadas -planetas. Si hubiera buscado planet y lo reemplazaba por region, entonces todas las palabras  planetas, terminarian como regionas, que se puede hacer al respecto?. Primero busquen las palabras mas grandes y despues continuen con las mas pequeñas, ademas diferencien entre mayusculas y minusculas, te va a dar menos dolores de cabeza.

El poderoso Dreamweaver con la configuracion necesaria para la refectorizacion

d) Arreglar la Base de Datos: Solo queda cambiar manualmente todas las referencias a Planet, no es mucho felizmente, pero si existiera alguna herramienta que facilitase esto, estaria muy contento

Y listo esa seria mi receta. ¿Ustedes tienen alguna forma novedosa de mantener o refactorizar el codigo?



¿Te gusta la pagina?, socializame haciendole click a tu color preferido:

Add to Technorati Favorites Digg! del.icio.us.me

Arsenal del Dev: Firebug I: Navegacion HTML

Publicadas por Jose Carlos Tamayo

Y para coronar mi regreso aqui un pequeño tutorial sobre esta gran herramienta. Este Plugin de Firefox es vital para cualquier chango que quiera desarrollar Paginas Web, incluyendo por supuesto Juegos Web. ¿Y que es lo que hace esta magica herramienta?, Que es lo que no hace deberian de preguntarse. Empezare por lo mas basico:

1) Modificacion de tu HTML
A veces te pasa lo siguiente: Tienes tu HTML generado de forma dinamica y para ver el resultado tienes que ver el codigo tal como te bota en blanco y negro y posiblemente muchos TAG aglomerados en una sola linea, simplemente brutal.


Agradezcan que Fierfox te colorea el codigo siquiera. ¿Han tratado de ver el codigo en IE6?

Con Firebug no solo puedo pasearme por el codigo HTML como si fuera un dia de campo y verlo todo coloreado resaltando los datos de los atributos, tambien puedo modificarlo, cambiandole el texto, añadir nuevos atributos, es mas puedo eliminar Tags completos solo por el gusto de ver que pasaria si elimino esa molestosa ventana flotante o ese quisquilloso DIV que me esta tapando la informacion.


En la parte de Abajo podemos apreciar el navegador de HTML. Rojo y azul excelente!

2) Selector de HTML
Ok ya tenemos nuestro navegador de HTML, ahora digamos que tenemos un tag que esta que molesta la vista, y tambien digamos que tu HTML es de 15k, asi que buscar nodo por nodo va a ser toda una travesia. Pues esos problemas se acabaron, haciendo un click en la pantalla puedes navegar hasta la parte del codigo donde aparezca ese elemento DOM que buscas.


Solo seleccionas la herramienta Inspeccion para anvegar a travez de tu pagina web


3) Cambia tu CSS al vuelo
Ok ya tienes seleccionado tu etiqueta, haz probado eliminarla y se ve bien. ¿Que sigue despues?. Manipula tu CSS on the Fly!!!. ASi es con firebug puedes cambiar tu CSS y ver los cambios al instante, sin necesidad de estar entrando una que otra vez a tu archivo CSS y presionando F5. Tan solo seleccionas tu propiedad y empeizas a manipularlo. Y si eres de gustos exigentes puedes crear nuevas propiedades a cualquier elemento.


Cambiandole el estilo a mi editor de Blogger. ¿Ven como aumente los bordes?

Destilado de Awesomeness en este debugeador web. La siguiente entrada hablaremos un poco sobre javascript y ajax asi que stay tune .


PD: Obviamente este plugin solo funciona para Firefox, aunque hay varios debugers que tratan de funcionar asi de bien en otros navegadores.

¿Te gusta la pagina?, socializame haciendole click a tu color preferido:

Add to Technorati Favorites Digg! del.icio.us.me

Xeno - Tecnologias Web a usar - Parte II Cliente

Publicadas por Jose Carlos Tamayo

Este post es la continuacion de Xeno - Tecnologias Web a usar - Parte I Servidor

Ahora nos toca tratar el tema del cliente, esto significa como es que la informacio una ves mandada va a ser manejada por el Navegador

CLIENTE

Lenguaje del Cliente:
Usaremos Javascritp junto con lalibreria jquery. Basicamente javascript nos ayudara a que la interface sea parecida a la de un juego desktop, de hace un par de años por supuesto y sin graficos 3d, que puedo decir, es un juego por browser. Jquery nos permitira desarrollar mas facil y cross-browser el juego. Por supuesto tenemos ciertas limitaciones:

  1. Javascript es Lento: Demasiado lento en comparacion con java embeded o hasta con flash (bueno la ultima version) aunque actualmente navegadores como el chrome o el proximo IE 8 prometen mejoras de velocidad en el javascript. Por eso hay que ver que tnato codigo podria resistir el cliente.
  2. El codigo puede ser manipulado por cualquier persona: Y en general uno nuncas debe de confiar en los datos enviados por el usuario, por ejemplo supongamos que estasmos en un mapa moviendo unidades, si nosotros de alguna manera (hackeando el javascript) hacemos que una unidad se mueva lejos de su rango de accion, nosotros debemos de confirmar en el server que ese movimiento sea valido.
Ahora en el sistema no voy a aplicar para nada de flash. El problema del Flash es que se pierde usabilidad. Es decir, vamos que fue flash quien invento la peor aberracion en usabilidad segun Jakob Nielsen "Las pantallas de Introduccion", que seran tema para otro post


Diseño y Estructura: Basicamente va a ser un Diseño Tableless, y vamos a usar bastante CSS. Casi lamentablemente para el sistema ( para los tios de la W3C) no va a ser XHTML compatible ya que vamos a usar propiedades de los tags que no son oficiales. Esquinas redondeadas por CSS y CSS Sprites son una de las tecnicas que se me vienen a la mente, pero estoy seguro que van a haber mas.

Ejemplo de Formulario Tableless

Extras: Al final se tratara de minimizar los archivos enviados, ya que esto significa menos ancho de banda usado y es mas rentable. Para hacer esto lo pimero enmiente seria enviar todos los scripts minimizados, mandar pocas imagenes ( y transformarlas en sprites) y ver si mandar la informacion comprimida es mejor ( ay que es un esfuerzo extra para el procesador del servidor).

Por supuesto el Uso de AJAX va a ser necesario. Tengo una tecnica para mandar informacion json en la primera carga de la pagina web que me ayudara bastante a mejorar la carga de datos. Esto hara que use menos ajax ya que ajax no es la panacea para todo.

Ajax ... el jabon ^^

Eso es todo lo pensado para el juego en la parte del Cliente. ¿Dudas? ¿Preguntas? o piensan que Flash es bueno para Juegos Web persistentes? Lo leere en sus comentarios. Hasta la proxima

¿Te gusta la pagina?, socializame haciendole click a tu color preferido:

Add to Technorati Favorites Digg! del.icio.us.me