Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

CMPGPV: Como identificar las estructuras de datos

–¿Quién? ¿Qué? Los blancos toman forma —

En la entrada anterior vimos que como programadores podemos recibir una descripción del juego de manos del escritor y que existe un proceso para obtener entidades capaces de ser programadas. Lo primero que debemos definir son las estructuras de datos. Es muy importante definir las estructuras de datos desde el principio. Incluso antes que el código. Para los que ya no se acuerdan lo que es una estructura de datos se trata de una zona de la memoria donde guaradamos información sobre algo. Por ejemplo podemos tener una estructura que defina a un monstruo y que contenga su nombre, sus puntos de vida, su vida máxima, el daño que puede hacerle al héroe si lo alcanza y los puntos que da al ser vencido. Todos esos valores pueden guardarse en una zona de la memoria y ser actualizados por el código cuando sea necesario. Pues bien, ahora tomemos la descripción del juego del ninja que nos dio el escritor, agreguémosle algunos datos de encabezado e identifiquemos los adjetivos.

Enunciado de alcance

Ancho 1

Profundidad 1

“El juego cuenta la historia de un ninja que busca vengar el asesinato de su padre y viaja a occidente donde sospecha se esconde el culpable. Armado con su espada, su gran agilidad y conocimientos ancestrales se abre camino por lugares como ciudades controladas por pandillas, selvas llenas de fieras y templos antiguos protegidos por fanáticos. Su búsqueda de venganza lo lleva a descubrir una conspiración para revivir a un antiguo demonio cuyo ejército infernal llevará a la humanidad a la destrucción y él es el único ser viviente capaz de impedirlo.”

Para los que no lo recuerdan los sustantivos son las palabras que describen entidades como personas, lugares, cosas y cualquiér cosa suceptible de ser descrita, hacer o recibir una acción. Aquí tenemos todo en una tabla

juego

historia

ninja

asesinato

padre

occidente

culpable

espada

agilidad

conocimientos

camino

lugares

ciudades

pandillas

selvas

fieras

templos

fanáticos

búsqueda

venganza

conspiración

demonio

ejército

humanidad

destrucción

ser

De momento estas serán las estructuras mas importantes. Si expandimos el enunciado de alcance a lo ancho obtendremos mas y si lo expandimos a lo profundo obtendremos mas información de estas. Otra cosa importante es aprender a distinguir sinónimos. O cuando palabras diferentes se refieran a lo mismo y marcarlas como si fueran una sola. Bueno, a partir de aquí ya podemos ver que hay sustantivos que describen la mecánica del juego y características del código. A primera vista podemos intuir que “historia” sugiere que necesitamos código que muestre una historia entre misiones ya sea como una animación o un simple texto con una imagen. “Ninja” describe al personaje principal manejado por el jugador, “asesinato” y “padre” pueden no ser importantes en el gameplay a menos que el escritor decida que van a aparecer de alguna manera en el juego, por ejemplo que mas adelante se revele que el padre está vivo o que regrese convertido en un ser de ultratumba. “Occidente” sugiere un tipo de escenario y “culpable” un enemigo poderoso al que hay que enfrentar. “Espada” es el arma principal. Y así seguimos con el resto de los sustantivos. Si ponemos atención estos describen cosas de manera muy general sin entrar en detalles. Por ejemplo el sustantivo “pandilleros” describe a todos los pandilleros a los que el ninja habrá de enfrentarse en la ciudad pero no deja claro como son, su modo de pelear o las armas que cargan. Esas cosas se definirán al extender el enunciado en profundidad. Extender el enunciado en ancho es tan sencillo como agregar mas descripción al final pero extenderlo en profundidad no es tan sencillo. Para extender el enunciado en profundida primero tenemos que seleccionar una parte del enunciado original y a partir de ahí extenderlo. De esta extensión van a brotar mas palabras que podemos procesar. Si bien hay que limitar la ampliación en ancho no es lo mismo en profundidad. Podemos ampliar un enunciado en profundida hasta que lleguemos a un nivel de detalle en que podamos describir dicha entidad en el lenguaje de programación que estemos usando. Como a mi me gusta programar en ensamblador voy a llegar a niveles mas profundos que los que usen otros lenguajes pero eso ya se verá a su tiempo.

Hagamos una pequeña extensión que defina los movimientos básicos del personaje. Tomemos la parte donde dice “Armado con su espada y su gran agilidad” y definamos los movimientos básicos del ninja.

“…armado con sus espada y su gran agilidad…”

Ancho 1

Profundidad 2

“El ninja es capaz de estar de pie o correr sobre terreno o una plataforma, agacharse para esquivar ataques por arriba o atacar a enemigos que se arrastran. Saltar desde su lugar directo hacia arriba o mientras corre para pasar sobre abismos o subir a plataformas mas altas. El ninja puede saltar lo suficiente para pasar sobre un enemigo de su propia altura. Con su espada puede atacar hacia lo que tiene frente a él y puede usarla tanto si está de pie, agachado o a mitad de un salto para destruir enemigos voladores.”

De esta nueva extensión podemos sacar mas sustantivos para determinar estructuras, omitiré los que ya salieron en la pasada anterior:

pie

terreno

plataforma

ataques

enemigos

lugar

abismos

altura

salto

Estos sustantivos nos dan idea de mas estructuras. Pie indica que necesitamos saber donde tiene los pies puestos el ninja, terreno indica el suelo firme que sostiene estos pies, plataforma una cosa que puede sostener a los personajes, ataques algo que puede efectuar el personaje, abismos algo que puede matarlo si cae en ellos, altura una estructura de datos con información que nos puede decir a que altura está el ninja y si está por encima o por debajo de un obstáculo y salto otra acción cuyos datos tienen que registrarse en su propia estructura.

Poco a poco esto comienza a parecer un sistema de reglas de un videojuego pero todavía no vemos algo que podamos poner en forma de código o por lo menos un conjunto de datos que podamos definir en formato de bytes, words, strings o flotantes. Ahora tomemos la parte de de “El ninja es capaz de estar de pie o correr sobre terreno o una plataforma…” y hagamos otra extensión de profundidad:


“El ninja es capaz de estar de pie o correr sobre terreno o una plataforma”

ancho 1

profundidad 3

“Para que la plataforma o el terreno sostengan al ninja este debe de tener los pies bien puestos sobre alguna de estas cosas. Si no es así el ninja caerá al vacio y a menos que sus pies toquen algo que lo sostenga morirá al pisar la parte inferior de la pantalla. Si el ninja se encuentra parado sobre el terreno o una plataforma puede correr, agacharse y saltar desde ahí y si a la mitad de una caida o un salto sus pies se acercan lo suficiente a una plataforma puede aterrizar sobre ella”

Aquí los sustantivos son:

plataforma

terreno

ninja

pies

cosas (alias de terreno y plataforma)

vacio

pantalla

caida

salto

En este nivel ya se tiene la suficiente información para comenzar a programar por lo menos la estructuras. Con esto ya pueden manejar los datos de un plataformas básico hecho en un engine 2D que ya tenga las funciones de plataformas predefinidas. Podríamos seguir expandiendo en profundidad para obtener mas detalles pero necesitamos analizar otro tipo de términos para conseguirlo. Noten que aquí vemos que hay diferencia entre caida y salto.

Pues bien, hasta aquí vimos como obtener estructuras de datos básicas a partir de un sencillo texto que describe el videojuego de forma muy general. Mas adelante veremos como definir sus elementos o atributos y como asociarlas con el código. En la siguiente entrada veremos como obtener los módulos de código básicos con un análisis de palabras similar.

Anuncios

diciembre 30, 2013 - Posted by | Uncategorized

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: