Sie sind auf Seite 1von 15

Tabla de contenido

Introduccin ............................................................................................................. 3

Descripcin del Problema ....................................................................................... 4

Anlisis de Resultados ............................................................................................ 6

Dificultades encontradas ....................................................................................... 12

Bitcora de Actividades ......................................................................................... 12

Estadstica de Tiempos ......................................................................................... 14

Conclusin............................................................................................................. 15

Introduccin
El hombre, por su proceso de culturalizacin a travs del tiempo, ha llegado al
punto de que sus formas para divertirse son de cantidades interminables. Es, sin
duda, una revolucin la que dio el surgimiento de videojuegos en nuestra sociedad
a partir de 1980. Miles de personas en el mundo empezaron a distraerse dentro de
sus casas, y un nuevo campo de estudio dentro de la computacin se abri paso.
Una nueva industria comercializ programas informticos para el disfrute de sus
clientes. Nuevas consolas, modalidades de juegos. Un mercado que aprovecha el
estado alienado de las sociedades y la inseguridad de las personas al
relacionarse, para ofrecer productos que brindan diversin sin mucho esfuerzo
fsico de ms.
El Tecnolgico de Costa Rica avanza con la industria, en esta ocasin, se
presentar como proyecto un videojuego creado originalmente para Linux en los
80s, conocido como Robots.
No podemos considerar superfluo el hecho del crecimiento de esta. Acertamos
cuando decimos que cada vez las personas adquieren mayores niveles de estrs,
esto debido a la presin ocasionada por el mundo tan acelerado de hoy.
Resulta totalmente necesario estar en constante bsqueda de actividades que nos
liberen, y el recurrir a una manera tan sencilla como los videojuegos es una gran
oportunidad para invertir unos cuantos minutos en el propio bienestar.

Descripcin del Problema


En el juego interactan un grupo de robots y un jugador (humano), que debe
escapar y defenderse de la banda de robots que sin ninguna razn explicable,
intentan matarlo.
Siguiendo la filosofa Divide y vencers, la divisin del juego en problemas es la
siguiente:
Sobre problemas generales:

1. El juego se desarrolla sobre una matriz de casillas en donde en cada


posicin puede ubicarse nuestro jugador o un robot. El tamao de la matriz
debe ser 13 x 13.
2. Los movimientos se hacen una casilla a la vez, en cualquiera de las 8
direcciones posibles, en caso que se sobrepase el lmite del tablero
(matriz), se debe hacer una rotacin, es decir, el jugador va a aparecer al
otro extremo de la matriz.
3. Cuando dos robots chocan entre s, se autodestruyen.
4. Despus de cada movimiento del jugador, todos los robots se mueven una
casilla en una direccin aleatoria.
5. Al inicio del juego, los robots deben distribuirse aleatoriamente en el tablero,
y el jugador se ubica en el centro de la matriz. La cantidad inicial de robots
en nuestro caso se empieza con 10 robots.
Sobre los incendios:

6. Cada vez que dos robots chocan (es decir, caen en la misma casilla), se
produce una explosin y un incendio que perdura durante el resto del juego.
Si otro robot o el jugador pasan sobre uno de estos incendios
posteriormente, muere.
Sobre las condiciones de victoria y fracaso:

7. Cuando un robot alcanza al jugador, este muere y el juego termina.

8. Cuando el jugador logra destruir a todos los robots, pasa a una siguiente
etapa con ms robots (cambio de nivel). El incremento en la cantidad de
robots es de 5 por cada nivel.
Sobre los mtodos de motivacin:

9. Debe llevarse un control de puntos para el jugador, que inicia en 0. Por


cada movimiento del jugador se suman 5 puntos al jugador.
10. Saln de la fama:
a. Permite almacenar en un archivo de texto, el nombre y puntaje de los
3 mejores registros de juego.
b. Solamente se van a mantener los 3 mejores registros, debe existir
una opcin que permita visualizar los datos de los jugadores que
estn en este saln de la fama.
Sobre los disparos:

11. El jugador cuenta con una cantidad limitada de disparos, que inicia con n
disparos.
12. Cada vez que hay cambio de nivel se incrementa en m la cantidad de
disparos. Estos datos de cantidad inicial de disparos e incremento de
disparos por nivel, son argumentos de configuracin del juego.
13. Debe definirse algn mecanismo que permita disparar en alguna de las 8
direcciones posibles. Para que un disparo sea efectivo, el robot deber
estar a 2 o menos casillas de distancia.
Sobre las bombas:

14. El jugador cuenta con bombas, que inicia con una cantidad de a bombas.
Cada vez que hay cambio de nivel, se aumenta en 1 la cantidad de
bombas. La cantidad inicial de bombas es un argumento de configuracin
del juego.
15. Las bombas son un mecanismo de defensa del jugador, pueden ser
ubicadas en cualquier parte del tablero. En caso que un robot llegue a una
casilla con bomba, el robot muere y la casilla vuelve a quedar disponible.
Sobre teletransportaciones aleatorias:
16. El jugador cuenta con una cantidad de teletransportaciones aleatorias para
escapar cuando se encuentra acorralado. Esto produce que el jugador sea
ubicado en una casilla aleatoria del tablero.
17. Si el jugador cae sobre un robot o sobre un incendio, muere
instantneamente y el juego termina.

18. Cada teletransportacin aleatoria disminuye 5 puntos al jugador, debiendo


verificar si tiene puntos suficientes para realizarla.
19. La cantidad de teletransportaciones aleatorias es un argumento de
configuracin.
Sobre teletransportaciones seguras:

20. Adems, el jugador tambin cuenta con una cantidad limitada de b


teletransportaciones seguras. Estos movimientos tambin son aleatorios,
pero garantizan que en la casilla que el jugador cae no haya robots cerca (a
una casilla de distancia) y que no exista ah un incendio.
21. Este tipo de transportacin resta 25 puntos al jugador.
22. Cada vez que hay un cambio de nivel se incrementa en uno la cantidad de
teletransportaciones seguras.
Sobre la pantalla de configuracin:

23. Permite definir todos los valores necesarios para el funcionamiento del
juego.
Sobre la ayuda interactiva:

24. Permite obtener ayuda sobre la utilizacin del juego.

Anlisis de Resultados
Los resultados de las soluciones implementadas a los problemas previamente descritos
corresponden respectivamente a los siguientes:

1. Para la graficacin de elementos, se utiliz una


funcin que utiliza como entrada una matriz de 13x13
(una lista de listas), y de forma recursiva recorre la
matriz para determinar, con otras variables auxiliares,
dnde colocar cada elemento en un widget frame.
Dependiendo del nmero que encuentre en la matriz
grafica un elemento diferente.

2. Para la movilidad de los robots (incluyendo al jugador), se implement una clase


robot, que contiene las funciones moveup, movedown, moveright, moveleft,
moveleftup, moveleftdown, moverightup, moverightdown , las cuales cambian la
posicin de los nmeros en la matriz dependiendo de la posicin x y y que cada
robot guarde. No hay que confunir que el robot no actualiza la pantalla, solo
cambia la matriz.
3. Para verificar la colisin de robots, se usa el mtodo robotscrashes(), el por medio
de recursividad compara las posiciones x y y de todos los robots, y cuando dos
robots poseen la misma, se llama al mtodo kill() de la clase robot para eliminar
los robots. Finalmente, se situa un 3 (nmero que representa los incendios en la
matriz) en la matriz en la posicin donde ocurri el suceso.

4. Tras el movimiento del jugador los


robots se deberan mover aleatoriamente, preferiblemente se implement un poco
la inteligencia artificial. Se utiliz una mtodo que ejecuta el mtodo closerobot()
de cada robot vivo. Este mtodo funciona de esta manera.
Se genera un nmero aleatorio del 0 al 2 con el
mtodo random.randint(0,2), y dependiendo de su
posicin respecto al jugador el robot ejecuta un mtodo
correspondiente al nmero generado. De esta forma,
nos aseguramos que los robots se acerquen al jugador
cada vez que este se mueva. As se da la impresin de
persecucin y se agrega el factor incertidumbre al
juego.

5. Para el inicio de cada partida, se ejecuta el mtodo agregarobots(n), que lo que


hace es agregar n cantidad de robots, recursivamente ejecuta el mtodo .add() de

la clase robot n veces para agregar cada robot. El mtodo sita el robot en la
posicin basada en dos nmeros aleatorios del 0 al 12, l verifica si este par
ordenado corresponde a (6,6) que es donde nace el jugador, si es as
recursivamente se ejecuta hasta que sea diferente.
6. Para que los incendios se mantuvieran hasta el final del nivel, el label que contiene
la llama se genera cuando en la matriz aparece un 3, el label se crea una nica
vez, y es almacenado en la lista flames junto con su respectiva posicin.
Utilizando el siguiente formato: [<label>,posicin x, posicin y].
Posteriormente, con el mtodo whoWasBurn(), se verifica recursivamente si la
posicin de cada label es igual a algn robot, si es as se ejecuta el mtodo .kill()
al robot que tenga esa posicin.

7. Para la verificacin de victoria o derrota se utiliza el mtodo verificavictoria(), el


cual se ejecuta cada vez que sucede un movimiento. Para la condicin de derrota
se utilizan dos mtodos, el playercrash() y el playerWasBurn(), si alguno de estos
dos es retorna True entonces se setean las variables globales nivel, score, se
quitan todos los robots con el mtodo killbot(), se inicializa la partida nuevamente y
se llama a la ventana de puntuaciones. Que posteriormente se describir.

8. Para la condicin de victoria se utiliza el mismo mtodo verificavictoria(), pero si la


variable quantityAlive de la clase robots es 0, entonces se suma 1 a la variable
global nivel; se llama al mtodo agregarobots(n+((nivel-1)*5), de este modo se
agrega 5 robots ms que el anterior nivel. Se utiliza el mtodo setflames() y
setbombs() para quitar las llamas y la bombas puestas en el nivel concluido.

9. Para los puntos, cada vez que se realiza un movimiento se suma 5 a la variable
global scores. Y se actualiza el label que lo muestra en la pantalla.
10. Saln de la fama:
a. Se utiliza el objeto open para abrir
el archivo de texto scores.txt, y extrae
informacin.
La primera lnea corresponde al nombre del primer
lugar, la segunda su puntaje, en la tercera el

nombre del segundo lugar, en la cuarta su puntaje, en la quinta el nombre


del tercer lugar y en la sexta su puntaje.
Cuando un score es mayor que alguno de los tres lugares entonces
permite la edicin del archivo con una pantalla de puntuaciones. Cuando se
da Save, se vuelve a crear el archivo de texto con las nuevas
puntuaciones.

11. Para mantener la cantidad de disparos inicial se utiliz una variable global
shootsQuantityInicial, y para la cantidad de disparos que se modifica durante las
partidas se utiliza la variable shootsQuantity. Inicialmente shootsQuantity es
equivalente a ShootsQuantityInicial, sin embargo, esta ltima solo es modificable
por medio de la ventana de configuracin.
12. Cada vez que verificavictoria() aumenta en 1 a variable global nivel,
shootsQuantity aumenta en 1. As cada vez que se gana un nivel, la cantidad de
disparos se incrementa.

13. Para los disparos, se utiliza un botn


shootBtn, que llama al mtodo
chooseWhoShoot() el cual quita las
flechas de movimiento con el mtodo
quitArrows() y sita unas miras (label
con imagen de mira) alrededor del
jugador en un radio de 2 espacios
(contando diagonales, por eso la forma
cuadrada) con el mtodo showSights(),
este adems asigna un bind con un
comando diferente a cada una de las
miras. Los comandos asignados tienen
un nombre con formato:
Killm2p2 donde m2: 2 casillas a la
izquierda del jugador, p2: 2 casillas
abajo del jugador.
Estos killm2p2 disminuyen en 1 la variable global shootsQuantity, actualiza el texto
del botn shootBtn, y verifica si en esa posicin existe un robot, si es as, se aplica
.kill() al robot, se quitan las miras y se recolocan las flechas de movimiento.
Aqu hubo percances, posteriormente se describen.

14. Cuando inicia una partida la variable global


bombsQuantity es equivalente a bombsQuantityInicial,

cada vez que verificavictoria() indica que se gana, la variable bombsQuantity


aumenta en 1.
15. Cuando se presiona el botn bombBtn, se ejecuta el mtodo chooseWhereBomb(),
el cual quita las flechas de movimiento y muestra miras en todo el campo, excepto
donde hay robots y llamas, esto con el mtodo showBombsSight(), el cual adems
de crear los label sight, los agrega en una lista y les asigna su respectiva posicin,
adems se les asigna a cada label un bind por medio del mtodo
assignBindtoLlb(listBombSight).
Cada bind ejecuta un mtodo diferente, que utiliza un
formato: putin00 donde el primer nmero indica la fila donde
est el label y el segundo nmero indica la columna donde
label.
Cada putin ejecuta un putBomb utilzando como parmetro su
posicin, este mtodo ltimo, disminuye la variable global
bombsQuantity en 1, actualiza el botn bombBtn, coloca en la posicin ingresada
un 4 en la matriz, quita las miras y actualiza el juego con el mtodo
gameUpdater(gameState)
16. Las teletransportaciones aleatorias, su cantidad se guardan en una variable
randomTeleports e inicialmente se le es asignado el valor de
randomTeleportsInicial. El mtodo randomTeleport() verifica si existe mnimo 5
en el score, si no es as no se ejecuta, si s resta 1 a la variable global
randomTeleports y actualiza el botn respectivo, resta 5 puntos en el score,
genera dos nmeros aleatorios, uno para cada coordenada y utiliza el mtodo
moverobot(x,y) sobre el robot player, y continua como si fuera un movimiento
comn.
17. Si el jugador cae sobre un robot o un incendio este muere, esto est contemplado
en el mtodo randomTeleport().
18. La disminucin de puntos est contemplado en el mtodo randomTeleport,
descrito en el punto 16.
19. Se le asigna a randomTeleportsInicial un valor de 5, pero puede ser cambiado en
la pantalla de configuracin.
20. Las teletransportaciones seguras, primero verifica si mnimo la variable global
score vale 25, si no no se ejecuta, si s resta 1 a la variable global safetyTeleports,
el cual inicialmente es equivalente a safetyTeleportsInicial (este puede ser
cambiado por la pantalla de configuracin), actualiza el botn respectivo, y genera
dos nmeros aleatorios para formar un par ordenado, aqu es donde difiere con el
randomTeleport, toma estos dos valores y se ingresan a la funcin
safetyRandom(x,y),y genera un par ordenado que corresponde a una casilla donde
no hay robots ni incendios en una casilla de distancia alrededor. Aplica el mtodo
moverobot(x,y) utilizando estos valores como entrada, no mueve a los robots, y
ejecuta como si hubiera sido un movimiento comn.

21. Al ejecutarse, la variable global score disminuye en 25, y se actualiza el label


correspondiente.
22. Cuando verificavictoria() aumenta en 1 la
variable global nivel, la variable global
safetyTeleports aumenta en 1.
23. La pantalla de configuracin permite con unos
Entrys, asignar valores a las variables globales
necesarias para el inicio de las partidas, es
decir, modifica las variables
robotsQuantityInicial,
randomTeleportsInicial,safetyTeleportsInicial,
shootsQuantityInicial y bombsQuantityInicial.
Cuando se hace click sobre Accept, se modifican
las variables, y las nuevas configuraciones
empezarn a regir a partir del siguiente juego.
24. La ventana de ayuda, muestra una
imagen con la descripcin de las reglas del juego
y la forma de jugar.

Dificultades encontradas
1. En el momento de implementar los bind en los labels que corresponden a las
miras de las bombas y las miras de los disparos, al no poder asignarle funciones
con argumentos entonces se tuvo que utilizar funciones sin argumentos pero con
el contenido igual que el de las otras. Por lo que se desperdici mucho espacio.

Bitcora de Actividades
Actividad
Graficar elementos de
matriz.
Creacin de clase robot

Implementando
movilidad

Implementacin de
incendios.

Condicin de victoria y
fracaso.

BestScores

Reinicializacin del juego

Scores

Descripcin
Grafica con base en una
matriz elementos en un
frame.
Creacin de la clase
robot con sus mtodos
para moverse,
agregarse, eliminarse.
Hacer que el avatar del
jugador se moviera. Y
que los robots tambin.
Inteligencia artificial
Hacer que los robots
cuando chocaran
salieran incendios, y
estos despus se
mantuvieran y que
mataran otros robots.
Hacer que se
comprobara cuando se
ganaba y cuando se
perda.
Hacer que se
almacenara informacin
en texto y que por medio
de la interfaz se lograra
editar el archivo.
Agregado a la condicin
de victoria y fracaso.
Hacer que los datos se
reinicializaran para jugar
de nuevo en otro nivel.
Hacer que el score
aumentara.

Duracin
6 horas

4 horas

12 horas

7 horas

3 horas

3 horas

2 horas

0 horas 30 minutos

Salon de la fama

Las teletransportaciones

Disparos

Bombas

Pantalla de configuracin

Ayuda interactiva

Creacin de una ventana


que mostrara los datos
que estaban en el
archivo de texto.
Hacer que el jugador se
moviera aleatoriamente
dentro de la matriz y otra
funcin que se moviera
aleatoriamente pero que
asegurara la vida del
jugador.
Hacer que alrededor del
jugador salieran miras,
que fuera posible
tocarlas y verificar si en
esa posicin hay robot, si
es as lo mata.
Hacer que se graficaran
miras en todo el campo
excepto donde hubieran
incendios o robots, y que
fuera posible tocarlos y
colocar una bomba, que
posteriormente si un
robot adquiriera esa
posicin muere.
Una ventana que
modificarla las variables
que controlan las
cantidades iniciales de
disparos, robots,
teletransportaciones y
bombas.
Una ventana que explica
en qu consiste el juego.

2 horas.

5 horas

7 horas

6 horas

2 horas

3 horas

Estadstica de Tiempos
Funcin
Anlisis de requerimientos
Diseo de la aplicacin
Investigacin de funciones
Programacin
Documentacin interna
Pruebas
Elaboracin documento
Total

Tiempo
4 horas
6 horas
4 horas
62,5 horas
4 horas
3 horas
4 horas
87,5 horas

Conclusin
No cabe duda que la ingeniera de juegos es un campo bastante abarcado, tanto
as que no result muy rpido el proceso de crear un juego como este.
Aun as, si consideramos la poca, es un avance grande el que se ha dado,
teniendo en cuenta las facilidad de desarrollo que existen hoy en comparacin con
las plataformas que en los 80s los programadores se relacionaban. Computadoras
de descomunalmente grandes e incmodas, adems la diferencia de
accesibilidad. Es cierto que la utilizacin y el aprendizaje era muy elitista, siendo el
factor econmico el ms importante para poder estar en contacto con algn
ordenador.
Fue necesario una bsqueda exhaustiva por el aprendizaje de varias libreras.
Algo que es indispensable para la programacin es el espritu investigador, y el
poder de entendimiento, ya que con base en esto es posible la mejora de los
algoritmos, interfaces o programas en s.
Los videojuegos alcanzaron se parte de la nueva era, la de la informacin. Es
interesante que pertenecen a una generacin de personas que empezaron desde
pequeos con la tecnologa en sus manos, y de alguna manera, no es natural que
las personas antecesoras a esas generaciones se les convierte en una odisea
(quizs sin exagerar el trmino) aprender a usarlos, y ms an crearlas.
Finalmente, por la anterior razn no debemos interiorizar la aseveracin por
completo y exagerar con el uso de estos. Los juegos de video podran generar
altos niveles de satisfaccin, sin embargo, podran producir adiccin, falta de
prctica social, entre otros; si se usa en exceso o sin control alguno podra tener
diversas consecuencias. Es decir, no es malo una partida de Mario Bros de vez en
cuando.

Das könnte Ihnen auch gefallen