TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para...

61
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR ÁREA DE CONOCIMIENTO DE CIENCIAS DEL MAR DEPARTAMENTO ACADÉMICO DE SISTEMAS COMPUTACIONALES TESIS INGENERÍA DE SOFTWARE APLICADA AL DESARROLLO DE VIDEOJUEGOS QUE PARA OBTENER EL TÍTULO DE: LICENCIADO EN COMPUTACIÓN PRESENTA: BERNARDO CHAPARRO GARCÍA DIRECTOR: M.S.C. ITALIA ESTRADA COTA LA PAZ, B.C.S. ABRIL DEL 2015.

Transcript of TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para...

Page 1: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR

ÁREA DE CONOCIMIENTO DE CIENCIAS DEL MAR

DEPARTAMENTO ACADÉMICO DE SISTEMAS COMPUTACIONALES

TESIS

INGENERÍA DE SOFTWARE APLICADA AL DESARROLLO DE VIDEOJUEGOS

QUE PARA OBTENER EL TÍTULO DE: LICENCIADO EN COMPUTACIÓN

PRESENTA:

BERNARDO CHAPARRO GARCÍA

DIRECTOR:

M.S.C. ITALIA ESTRADA COTA

LA PAZ, B.C.S. ABRIL DEL 2015.

Page 2: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

Contenido

Capítulo I “Antecedentes” .................................................................................................. 1

Antecedentes ................................................................................................................. 1

Descripción del problema ............................................................................................... 3

Propuesta de solución .................................................................................................... 4

Objetivo general ............................................................................................................. 5

Estado del arte ............................................................................................................... 6

Ingeniería de Software ................................................................................................ 6

Metodología de cascada para el desarrollo del videojuego ......................................... 6

Tecnologías de desarrollo ........................................................................................... 8

Beneficio y alcance ...................................................................................................... 10

Capítulo II “Marco Teórico” .............................................................................................. 11

Ingeniería del Software ................................................................................................ 11

Ciclo de Vida ................................................................................................................ 12

Metodología de Cascada para los Videojuegos ............................................................ 14

Lenguajes de programación ......................................................................................... 17

Python ...................................................................................................................... 17

Eclipse ...................................................................................................................... 18

Pygame .................................................................................................................... 19

Capitulo III “Desarrollo del videojuego” ............................................................................ 21

Especificación del juego ............................................................................................... 21

La biblia del arte y la historia ........................................................................................ 21

Especificaciones técnicas............................................................................................. 25

Construcción ................................................................................................................ 32

Aseguramiento de calidad ............................................................................................ 45

Pruebas de juego ......................................................................................................... 45

Pruebas alfa ................................................................................................................. 45

Golden master .............................................................................................................. 45

Capitulo IV “Breve recorrido por el videojuego” ................................................................ 46

Iniciar el juego .............................................................................................................. 46

Head-Up Displays (HUD) ........................................................................................... 47

Page 3: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

Inventario de armas ...................................................................................................... 49

Controles del Juego ..................................................................................................... 50

Gameplay ..................................................................................................................... 52

Capítulo V “Resultado y conclusiones” ............................................................................ 55

Resultados ................................................................................................................... 55

Conclusiones ................................................................................................................ 55

Bibliografía ....................................................................................................................... 56

Page 4: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

Tabla de figuras

1.1 Metodología de Cascada para el desarrollo del videojuego .............................. 7

2.1 Metodología de Cascada para el desarrollo del videojuego ............................ 14

3.1 Diagrama de casos de uso del videojuego ...................................................... 25

3.2 Diagrama de secuencia para Jugar ................................................................. 26

3.3 Diagrama de secuencia para Comprar armas ................................................ .26

3.4 Diagrama de secuencia para Crédito .............................................................. 27

3.5 Diagrama de clases del videojuego ................................................................. 28

3.6 Interfaz principal .............................................................................................. 29

3.7 Interfaz créditos ............................................................................................... 29

3.8 Interfaz de venta de armas y cargadores ........................................................ 29

3.9 Interfaces del pueblo según el nivel del juego ................................................. 30

3.10 Zombies para el videojuego .......................................................................... 31

3.11 Objetos del videojuego .................................................................................. 31

3.12 Armas para derrotar a los zombies ............................................................... 31

4.1 Interfaz inicial del videojuego .......................................................................... 46

4.2 Interfaz del videojuego .................................................................................... 47

4.3 Interfaz de armas del videojuego .................................................................... 49

4.4 Teclas de control del videojuego .................................................................... 51

Page 5: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

1

Capítulo I “Antecedentes”

Antecedentes

Hoy en día la tecnología está presente en todos los aspectos de la vida cotidiana;

actualmente cualquier persona tiene acceso al uso de computadoras, tanto en

instituciones educativas como en sus hogares, lo que ha generado que utilicen

videojuegos para su entretenimiento. El uso de videojuegos por parte de niños y

jóvenes se ha vuelto muy común, lo que ha provocado el interés de explorar al

máximo los beneficios que se pueden lograr con estas herramientas en el ámbito

educativo y social.

A través del uso de videojuegos se pueden adquirir habilidades manuales, de

coordinación y orientación especial. Además permite la posibilidad de fortalecer

normas de comportamiento, así como de generar situaciones de interrelación con

otros compañeros de juegos, posibilitando el aprendizaje cooperativo [1].

Los videojuegos tiene un potencial educativo importante, pero el valor de

videojuegos no es sólo su factor motivacional, sino que, a través del juego se

puede aprender, se pueden desarrollar destrezas, habilidades, estrategias [2]. Se

puede aprender jugando.

El desarrollo de videojuegos es la actividad por la cual se diseña y crea un

videojuego, desde el concepto inicial hasta el videojuego en su versión final. Ésta

es una actividad multidisciplinaria, que involucra profesionales de la informática, el

diseño, el sonido, la actuación, entre otros. El desarrollo de un videojuego

generalmente sigue el siguiente proceso:

Concepción de la idea del videojuego

Diseño

Planificación

Pruebas

Page 6: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

2

Producción

Mantenimiento

El proceso es similar a la creación de software en general, aunque difiere en la

gran cantidad de aportes creativos (música, historia, diseño de personajes,

niveles, entre otros) necesarios. El desarrollo también varía en función de la

plataforma objetivo (PC, móviles, consolas), el género (estrategia en tiempo real,

rpg, aventura gráfica, plataformas, entre otros) y la forma de visualización (2d,

2.5d y 3d). [3]

En [4] se mencionan que existen siete características que hacen de los

videojuegos un medio de aprendizaje más atractivo y efectivo:

1) Permiten el ejercicio de la fantasía, sin limitaciones espaciales, temporales o de gravedad.

2) Facilitan el acceso a “otros mundos” y el intercambio de unos a otros a través de los gráficos, contrastando de manera evidente con las aulas convencionales y estáticas.

3) Favorecen la repetición instantánea y el intentarlos otra vez, en un ambiente sin peligro.

4) Permiten el dominio de habilidades. Aunque sea difícil, los jugadores pueden repetir las acciones, hasta llegar a dominarlas, adquiriendo sensación de control.

5) Facilitan la interacción con otras personas.

6) Hay una claridad de objetivos. El jugador juega al videojuego sabe que hay una tarea clara y concreta: abrir una puerta, rescatar a alguien, hallar un tesoro, etc., lo cual proporciona un alto nivel de motivación.

7) Favorece un aumento de la atención y del autocontrol favoreciendo el éxito individual.

Page 7: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

3

Descripción del problema

Hoy en día existen gran cantidad de videojuegos, pero ellos han presentado

algunas deficiencias, esto se debe principalmente a que no se siguió una

metodología de desarrollo de software para garantizar su calidad.

El desarrollo de los videojuegos es la fase por la cual se crea, desde su concepto

inicial hasta su etapa final. Para eso es necesario de utilizar una buena

metodología para el desarrollo de software que permita un buen control durante su

desarrollo.

Para garantizar su calidad del videojuego es necesario apoyarse en la Ingeniería

de Software, debido a que esta disciplina proporciona normas, estándares,

herramientas, métodos y técnicas que permiten desarrollar un software de calidad.

Es por ello que utilizando a la Ingeniería de Software garantizamos la calidad del

videojuego que se desarrollara a lo largo de esta tesis.

Page 8: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

4

Propuesta de solución

Realizar un videojuego denominado “Ataque Zombie”, para ello se apoyara en los

métodos, estándares y las herramientas que proporciona la Ingeniería del

Software para el desarrollo y el mantenimiento de un videojuego de calidad.

Este videojuego se desarrollara utilizando el ciclo de vida de Cascada, ya que

proporciona una manera práctica y sencilla para el desarrollo de videojuego,

debido a que consiste en una adaptación del método del proceso de creación de

software.

Page 9: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

5

Objetivo general

Desarrollar un videojuego de tipo shooters denominado “Ataque Zombie”,

utilizando a la Ingeniería de Software, específicamente al ciclo de vida de cascada

pura para garantizar su calidad.

Page 10: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

6

Estado del arte

El propósito de desarrollar un videojuego utilizando la Ingeniería de Software se

debe a que nos permite analizar, diseñar y programar un software de manera

correcta. Así permitiendo cumplir con las especificaciones.

Ingeniería de Software

Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de

Software, ya que ofrece métodos y técnicas para desarrollar y mantener software

de calidad [5].

La ingeniería del software tiene diversas definiciones; una definición desarrollada

por la IEEE es: “La ingeniería de software es la aplicación de un enfoque

sistemático, disciplinado y cuantificable hacia el desarrollo, operación y

mantenimiento del software” [6].

Metodología de cascada para el desarrollo del videojuego

Para la realización del videojuego se utilizará a la Ingeniería de Software,

específicamente la metodología propuesta por el ciclo de vida Cascada. Este ciclo

de vida, permite realizar de manera ordenada el desarrollo del videojuego, para

ello propone un conjunto de etapas ordenadas, cada una con sus tareas

específicas que permiten obtener un software de calidad. En la figura 1 se ilustra

la metodología y cada una de las etapas que lo componen, siendo estas:

Page 11: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

7

Fig. 1. 1 Metodología de Cascada para el desarrollo del videojuego

Especificación del juego

Se realiza un documento que especifica el juego desde la perspectiva del usuario

(jugador). Es el equivalente a la fase de planeación del ciclo de vida de un

software.

Biblia del arte y la historia

Realizado por los productores y los directores artísticos donde especifican las

herramientas y los conceptos a usar desde la parte artística. Se define también la

historia, el guion y el diseño del juego desde distintos escenarios. Es el

equivalente a la fase de análisis del ciclo de vida de un software.

Especificaciones técnicas

Describe las herramientas ingenieriles como UML o diagramas de sistema, e

interacción entre tareas y el código (esta es la única fase estrictamente ingenieril).

Es el equivalente a la fase de diseño del ciclo de vida de un software.

Page 12: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

8

Construcción

Se inicia la programación del videojuego, la creación de modelos, texturas,

niveles, arte conceptual y toda aquella tarea que dependa del diseño. Es el

equivalente a la fase de programación del ciclo de vida de un software.

Aseguramiento de calidad

El equipo de calidad debe verificar que todo se contraste con lo planteado en los

diseños originales de los documentos adecuadamente. Es el equivalente a la fase

de pruebas del ciclo de vida de un software.

Pruebas de juego

Sesiones con los directivos y productores donde se les muestran las

características del juego y se hace realimentación que debería modificar el

proceso para obtener un producto a total satisfacción.

Pruebas

Una vez se determina que el juego está en una fase estable, se libera a un selecto

grupo de evaluadores que determinan la calidad del juego, y plantean cambios

para mejorar la experiencia del juego en general (se supone que no deben surgir

cambios radicales). Pruebas beta: Se libera el juego a una gran audiencia y se

determinan aspectos que gustan o disgustan del juego para el mercado en

general.

Golden master

Momento en el que se libera el juego para el consumo masivo. Es el equivalente a

la fase de mantenimiento del ciclo de vida de un software de gestión empresarial

Tecnologías de desarrollo

Eclipse con la perspectiva de PyDev es un IDE (Integrated Development

Environment (Entorno De Desarrollo Integrado)) abierto y extensible al cual se le

agrego la perspectiva de PyDev para que interprete el código de Python.

Page 13: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

9

Python es un lenguaje de programación interpretado multiparadigma, ya que

soporta orientación a objetos, programación imperativa y, en menor

medida, programación funcional. [7]

Pygame es un motor de juegos, conformado por un conjunto de librerías cuya

finalidad es facilitar la tarea del programador a la hora de realizar un videojuego.

Permite la creación y desarrollo de videojuegos de una forma clara y sencilla, sin

que esto nos impida obtener los resultados esperados puesto que puede

combinarse con otras librerías, como PyOpenGl, para incluir gráficos 3D.[8]

Page 14: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

10

Beneficio y alcance

Con el apoyo de las técnicas, y herramientas que proporciona la Ingeniería de

software a través del uso del ciclo de vida de cascada pura se prende obtener un

software de calidad, es decir, un videojuego denominado “Ataque Zombie”. A su

vez el utilizar este ciclo de vida permitirá incorporar nuevas características de una

manera fácil y así poder darle un buen mantenimiento cuando este lo requiera.

El videojuego Ataque Zombi tendrá un alcance de 3 niveles para su mejor

rendimiento.

Page 15: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

11

Capítulo II “Marco Teórico”

Ingeniería del Software

Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de

Software, ya que ofrece métodos y técnicas para desarrollar y mantener software

de calidad [5].

La ingeniería del software tiene diversas definiciones; una definición desarrollada

por la IEEE es: “La ingeniería de software es la aplicación de un enfoque

sistemático, disciplinado y cuantificable hacia el desarrollo, operación y

mantenimiento del software” [6].

Con independencia del área de aplicación, tamaño o complejidad del proyecto,

cualquier sistema se encontrará al menos en una de las siguientes fases

genéricas: definición, desarrollo y mantenimiento [5]. Esto es:

Definición.- Se centra sobre el qué; esta fase intenta identificar: que

información va a ser procesada, que función y rendimiento desea, que

compartimiento, que criterios de validación, entre otros.

Desarrollo.- Se centra en el cómo. Esta fase define como son las estructuras

de datos, como se traduce el diseño en una codificación, como son las

interfaces, entre otros.

Mantenimiento.- Se centra en el cambio que va asociado a la corrección de

errores, a las adaptaciones requeridas a medida que evoluciona el entorno del

software, entre otros.

Page 16: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

12

La ingeniería del software permite desarrollar software de calidad, para ello

actualmente existen dos enfoques: estructurado y orientado a objetos [9]. En el

enfoque estructurado, la descomposición del problema es fundamentalmente por

funciones o procesos, lo cual origina una división jerárquica de procesos

constituidos por subprocesos; por otro lado el enfoque orientado a objetos busca

ante todo descomponer un espacio de problema por objetos.

La ingeniería de software orientada a objetos permite crear software modelando el

mundo de forma tal que ayuda a entenderlo, controlarlo y gobernarlo de una mejor

manera. [5].

Ciclo de Vida

El término ciclo de vida del software describe el desarrollo de software, desde la

fase inicial hasta la fase final. El propósito de este es definir las distintas fases

intermedias que se requieren para validar el desarrollo de la aplicación, es decir,

para garantizar que el software cumpla los requisitos para la aplicación y

verificación de los procedimientos de desarrollo: se asegura de que los métodos

utilizados son apropiados. [10]

El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto,

permite a los desarrolladores concentrarse en la calidad del software, en los

plazos de implementación y en los costos asociados.

El ciclo de vida de un software consta de los siguientes procedimientos:

Definición de objetivos: definir el resultado del proyecto y su papel en la

estrategia global.

Page 17: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

13

Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los

requisitos del cliente y examinar cualquier restricción que se pueda aplicar.

Diseño general: requisitos generales de la arquitectura de la aplicación.

Diseño en detalle: definición precisa de cada subconjunto de la aplicación.

Programación (programación e implementación): es la implementación de

un lenguaje de programación para crear las funciones definidas durante la

etapa de diseño.

Prueba de unidad: prueba individual de cada subconjunto de la aplicación

para garantizar que se implementaron de acuerdo con las especificaciones.

Prueba de integración: para garantizar que los diferentes módulos se

integren con la aplicación. Éste es el propósito de la prueba de integración

que está cuidadosamente documentada.

Prueba beta (o validación), para garantizar que el software cumple con las

especificaciones originales.

Documentación: sirve para documentar información necesaria para los

usuarios del software y para desarrollos futuros.

Implementación: es implementar el software resultado en el sitio

correspondiente.

Mantenimiento: para todos los procedimientos correctivos (mantenimiento

correctivo) y las actualizaciones secundarias del software (mantenimiento

continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de

una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el

cliente y el equipo de desarrolladores. [10]

Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por

tareas que se pueden planificar. Según el modelo de ciclo de vida, la sucesión de

fases puede ampliarse con bucles de realimentación, de manera que lo que

conceptualmente se considera una misma fase se pueda ejecutar más de una vez

a lo largo de un proyecto, recibiendo en cada pasada de ejecución aportaciones a

los resultados intermedios que se van produciendo (realimentación).

Page 18: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

14

Metodología de Cascada para los Videojuegos

La metodología más común en el desarrollo de videojuegos es la de cascada, que

consiste en una adaptación del método de proceso de desarrollo de software.

(Ver figura 2.1)

Fig. 2. 1 Metodología de Cascada para el desarrollo del videojuego

Para el desarrollo de un videojuego las fases adaptables del método de cascada

son:

Especificación del juego

Se realiza un documento que especifica el juego desde la perspectiva del usuario

(jugador). Es el equivalente a la fase de planeación del ciclo de vida de un

software.

Biblia del arte y la historia

Realizado por los productores y los directores artísticos donde especifican las

herramientas y los conceptos a usar desde la parte artística. Se define también la

historia, el guión y el diseño del juego desde distintos escenarios. Es el

equivalente a la fase de análisis del ciclo de vida de un software.

Page 19: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

15

Especificaciones técnicas

Describe las herramientas ingenieriles como UML o diagramas de sistema, e

interacción entre tareas y el código (esta es la única fase estrictamente ingenieril).

Es el equivalente a la fase de diseño del ciclo de vida de un software.

Construcción

Se inicia la programación del videojuego, la creación de modelos, texturas,

niveles, arte conceptual y toda aquella tarea que dependa del diseño. Es el

equivalente a la fase de programación del ciclo de vida de un software.

Aseguramiento de calidad

El equipo de QA debe verificar que todo se contraste con lo planteado en los

diseños originales de los documentos adecuadamente. Es el equivalente a la fase

de pruebas del ciclo de vida de un software.

Pruebas de juego

Sesiones con los directivos y productores donde se les muestran las

características del juego y se hace realimentación que debería modificar el

proceso para obtener un producto a total satisfacción.

Pruebas alfa

Una vez se determina que el juego está en una fase estable, se libera a un

selecto grupo de evaluadores que determinan la calidad del juego, y plantean

cambios para mejorar la experiencia del juego en general (se supone que no

deben surgir cambios radicales). Pruebas beta: Se libera el juego a una gran

audiencia y se determinan aspectos que gustan o disgustan del juego para el

mercado en general.

Page 20: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

16

Golden master

Momento en el que se libera el juego para el consumo masivo. Es el equivalente a

la fase de Mantenimiento del ciclo de vida de un software de gestión empresarial.

Ventajas

La planificación es sencilla.

Si se conocen el total de los requerimientos desde el principio, la calidad del

videojuego resultante es alta.

Permite trabajar con personal poco calificado.

Se tiene todo bien organizado

No se mezclan las fases.

Es perfecto para aquellos videojuegos que son rígidos donde se

especifiquen muy bien los requerimientos y se conozcan muy bien las

herramientas a utilizar

Desventajas

La duración de todo el ciclo es muy larga.

Probabilidad alta de fracaso dado que existe poca comunicación con el

usuario final.

El mantenimiento se realiza en el código fuente.

Las revisiones de videojuegos de gran complejidad son muy difíciles.

Page 21: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

17

Impone una estructura de gestión de proyectos.

Para que el videojuego tenga éxito deben desarrollarse todas las

iteraciones.

Si se cambia el orden de las fases el videojuego final será de menor

calidad.

Puede producir videojuegos poco llamativos para los jugadores ya que no

se le pueden hacer muchas modificaciones según la marcha.

Inflexibilidad del modelo: dificultad para responder a cambios en los

requerimientos. [8]

Lenguajes de programación

Python

Python es un lenguaje de programación interpretado, orientado a objetos e

interactivo es comparado a Lisp, Tcl, Ruby, Perl, C#, Visual Basic, Visual Fox Pro,

Scheme o Java. Python tiene el poder de una sintaxis muy limpia y clara. Tiene

módulos, clases, excepciones, data types de muy alto nivel y tipado dinámico.

Existe interfaz para hacer llamadas al sistema y librerías. [11]

Python es simple, pero es un lenguaje de programación, es un lenguaje

interpretado que proporciona las siguientes ventajas a los programadores: [12]

Ofrece más apoyo e infraestructura para programas grandes que el

intérprete de órdenes.

Incluye tipos de datos de alto nivel, como matrices flexibles y diccionarios.

Page 22: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

18

Tipos de datos más generales, que se pueden aplicar a un rango de

problemas más amplios que Awk o Perl.

Permite dividir el programa en módulos reutilizables desde otros programas

Python.

Posee una gran colección de módulos estándar que se pueden utilizar

como base para programas.

Es ampliable, es decir, se puede añadir alguna nueva funciona en C.

Los programas son más cortos que C o C++.

Estas y otras características son las que hacen que Python sea un lenguaje de

programación idóneo para el desarrollo de videojuegos.

Eclipse

Eclipse es un entorno de desarrollo integrado- IDE (por sus siglas en inglés-

Integrated Development Environment), de código abierto y multiplaforma. [13]. Se

utiliza para desarrollar lo que se conoce como “Aplicaciones de Cliente

enriquecido” y es una potente y completa plataforma de programación, desarrollo y

compilación de elementos tan viariados como sitios web, programas en C++,

aplicaciones Java, entre otros. En este entorno de desarrollo el programador se

encuentra con herramientas y funciones necesarias para realizar el trabajo,

además de una interfaz atractiva permitiendo que sea fácil y agradable de usar.

Utilizar Eclipse trae consigo ventajas, entre las que se encuentran [13]:

El IDE emplea módulos (en inglés plug-in) para proporcionar toda su

funcionabilidad al frente de la plataforma de cliente.

Este mecanismos de modulos es una plataforma ligera para componentes de

software. Se puede extender usando otros lenguas de programación como son

C/C++; también permite trabajar con otros lenguajes para procesado de texto

Page 23: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

19

como LaTeX, aplicaciones en red como Telnet y Sistema de gestión de base

de datos.

La arquitectura plug-in permite escribir cualquier extensión deseada en el

ambiente, como sería Gestión de la configuración.

Provee al programador Frameworks para el desarrollo de aplicaciones

gráficas, definición y manipulación de modelos de Software, Aplicaciones web,

entre otras.

El SDK de Eclipse incluye las herramientas de desarrollo de Java.

Esto permite que el uso de Eclipse sea más fácil de usar y por lo tanto más

fácil de programar, en este caso el videojuego.

Pygame

Pygame es un conjunto de módulos que permiten crear videojuego o aplicaciones

graficas (no necesariamente videojuegos) en dos dimensiones. Pygame incluye

gráficos y bibliotecas de sonido diseñados para ser utilizados directamente bajo

Python. Esta construido bajo Simple DirectMedia Layer (SDL), que a su vez son

un conjunto de bibliotecas desarrolladas en lenguaje C, proporcionando las

funciones básicas para realizar operaciones de dibujado 2D, gestión de efectos de

sonido y música, y carga y gestión de imágenes. De esta manera, a través de

Pygame se abstrae la lógica del juego (o aplicación) en sí mismo, haciendo

posible el uso de un lenguaje de alto nivel como Python para estructurar el juego.

[14]

Page 24: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

20

Pygame permite la creación y desarrollo de videojuegos de una forma clara y

sencilla, sin que estos impida obtener resultados esperados puesto que puede

combinarse con otras librerías, como PyOpenGl, para incluir gráficos en 3D.

Las características de Pygame son: [15]

Lenguaje de muy alto nivel lo que implica un código claro.

Multiplataforma.

Basado en SDL.

Múltiples usos, juego interfaces gráficas y multimedia.

2D.

Page 25: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

21

Capitulo III “Desarrollo del videojuego”

En este capítulo se seguirá el ciclo de vida de cascada pura para la realización del

videojuego, esto garantiza la calidad del videojuego.

Especificación del juego

La idea general de este videojuego es que un jugador se encuentre inmerso en un

pueblo en el cual se aparecerán varios zombies, para los cuales el jugador deberá

matar utilizando armas (adquiridas por la acumulación de puntos obtenidos con la

matanza de estos zombies). Dependiente del número de zombies derrumbados,

este podrá pasar a los siguientes niveles.

Para la realización de este videojuego es necesario seguir rigurosamente cada

una de las fases del ciclo de vida, a continuación se describen cada una de ellas.

La biblia del arte y la historia

En la siguiente tabla se especificaron los conceptos necesarios para definir la

parte artística del videojuego, así como la historia, guion y diseño de los diferentes

escenarios del videojuego, entre otros.

Rubro Descripción

Género Shooters

Jugadores

Modalidad de juego (individual o colectivo). Si, éstos son

humanos o humano contra máquina.

Historia

El jugador se encuentra en las cercanías de un pueblo

donde saldrán varios zombies.

Look and Feel

En esta etapa se analizó todos los bocetos gráficos y

artísticos que contempla el juego, así como la música del

Page 26: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

22

juego.

Interfaz de Usuario

Se analizaron los tipos de usuarios entre los que se

encontró que la característica principal es que van dirigidos

hacia jóvenes de cualquier edad con conocimientos

básicos de computación, para ello estas tendrán que ser

vistosas, amigables, intuitivas, consistentes.

Objetivos

Resistir las oleadas de Zombies.

Reglas

Para pasar de nivel tiene que destruir las oleadas de

Zombies; estas oleadas dependen del nivel del juego.

Características

Zombie

Es un personaje que actúa como enemigo en el juego, al

que se le debe de destruir.

Armas

Son una colección de armas, las cuales se deben de

comprar por el jugador y a su vez tiene diferentes

características, cada una de ellas puede ser usada en

cualquier nivel, siempre y cuando se pueda comprar por el

jugador.

Diseño de Niveles

AtaqueZombie, se va a diseñar para 3 niveles, cada uno de

ellos con su nivel de complejidad.

Requerimientos

técnicos

El juego que se diseñara necesitara ser ejecutado en una

computadora de al menos 1 GB en memoria RAM, sistema

operativo Windows XP o superior.

Page 27: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

23

A su vez fue necesario, establecer cuál es la lógica del videojuego, esto es:

Inicio del juego

Créditos

Créditos

Nombre del programador

Versión

Mostrar el escenario del

pueblo del nivel 1

Muestra las armas que

puede adquirir el jugador

Mostrar el escenario del

pueblo del nivel 2

Page 28: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

24

Nota: Este proceso se repite mientras el jugador desee jugar, y a su vez va

acumulando para la compra de armas.

Una vez terminada la

compra de armas, inicia el

nivel 2

Terminado el nivel 2, se

muestran la venta de

armas

Inicia el nivel 3

Page 29: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

25

Especificaciones técnicas

Las especificaciones técnicas en un videojuego permiten realizar tanto el análisis y

diseño del videojuego. En la figura 3.1 se ilustra el diagrama de casos de uso del

videojuego, con sus casos de uso y su actor. El actor que interactúa es el jugador,

es el que juega en el videojuego; los casos de usos son: Iniciar, permite iniciar el

juego Ataque Zombie; Créditos, permite saber quién hizo el videojuego; Comprar,

permite comprar armas para atacar a los Zombies.

Fig. 3. 1 Diagrama de casos de uso del videojuego

Posteriormente una vez identificado las acciones que realizaría el videojuego fue

necesario describir los escenarios, es decir como funcionara cada uno de las

acciones identificadas en el diagrama de caso de uso, es por ello que se utilizaron

los diagramas de secuencia ilustrados en las figuras 3.2, 3.3, 3.4; estos

corresponden a como jugar, como comprar armas y los créditos del videojuego.

Jugador

Comprar

armas

Page 30: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

26

Fig. 3. 2 Diagrama de secuencia para Jugar

Fig. 3. 3 Diagrama de secuencia para Comprar armas

Page 31: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

27

Fig. 3. 4 Diagrama de secuencia para Créditos

Contando con todos los diagramas de secuencia del videojuego, se procedió al

diseño del diagrama de clases del videojuego, esto se ilustra en la figura 3.5, en

ella se pueden ver las clases: zoombie, mapa, mira, arma, entre otras. En cada

una de las clases fue necesario definir cada uno de sus métodos y sus atributos,

con la finalidad de tener un mejor control y manejo de toda la información del

videojuego y de su jugador.

Page 32: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

28

Fig. 3. 5 Diagramas de clases del Videojuego

Page 33: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

29

A continuación se diseñaron las interfaces lo que se le conoce como “look and

fell”; estas fueron diseñadas a la medida siempre tomando en cuenta la tarea que

va a realizar, el contexto y el tipo de jugador; a su vez bajo los estándares que

marca la usabilidad: consistencia, facilidad de aprendizaje, tiempo de respuesta,

entre otras, las interfaces resultantes son figuras 3.6, 3.7, 3.8, 3.9. Así mismo se

esbozaron los zombies, objetos y armas necesarias para el videojuego. (Ver

figuras 3.10, 3.11,3.12)

Fig. 3. 6 Interfaz principal Fig. 3. 7 Interfaz créditos

Fig. 3. 8 Interfaz de venta de armas y cargadores

Page 34: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

30

Fig. 3. 9 Interfaces del pueblo según el nivel

Page 35: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

31

Zombies Lado A Lado B

Fig. 3. 10 Zombies para el videojuego

Objetos Bala Mira Bolsa de dinero

Cargador Flecha

Fig. 3. 11 Objetos del videojuego

Bar Colt

Kar 98 M1 Garand

Armas MP 40

STG 44

Thompson

Fig. 3. 12 Armas para derrotar a los zombies

Page 36: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

32

Construcción

En esta fase del construcción del videojuego se muestra parte de la programación

que se realizó: creación del mapa, creación de un zombie, venta de armas, entre

otros códigos, para realizar cada uno de ellos se consideró el formato en el código,

el nombre de las variables, los comentarios y el encabezado como normas básicas

para la realización del código apegándose a las reglas de calidad.

Código del mapa

@author: ANGY //Programador: Bernardo Chaparro //Clase para realizar un mapa //Noviembre del 2014 // Versión 1.1 ''' import pygame class Mapa( pygame.sprite.Sprite ): def __init__( self ): pygame.sprite.Sprite.__init__( self ) self.mapas = [ "imagenes/fondos/fondo_desierto.png" , "imagenes/fondos/fondo_desierto_2.png" , "imagenes/fondos/fondo_cammino.png" ] self.nivel = pygame.image.load( self.mapas[ 0 ] ) self.rectangulo_mapa = self.nivel.get_rect(); self.indice = 0 def siguiente_mapa( self , avanzo ): if avanzo and self.indice < 2: self.indice += 1 self.cargar_imagen( self.indice ) def cargar_imagen( self , indice ): self.nivel = pygame.image.load( self.mapas[ self.indice ] ) def dibujar( self , pantalla ): pantalla.blit( self.nivel , self.rectangulo_mapa )

Page 37: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

33

Código para crear un zombie

@author: SPARTAN-117 //Programador: Bernardo Chaparro //Clase para crear Zombies //Noviembre del 2014 // Versión 1.1 ''' import pygame , random from pygame.locals import * class Zombies( pygame.sprite.Sprite ): def __init__( self , vida , pts , dinero ): pygame.sprite.Sprite.__init__( self ) self.imagen_derecha_0 = pygame.image.load( "imagenes/zombies/zombies_0.png" ) self.imagen_derecha_1 = pygame.image.load( "imagenes/zombies/zombies_1.png" ) self.imagen_derecha_2 = pygame.image.load( "imagenes/zombies/zombies_2.png" ) self.imagen_izquierda_0 = pygame.image.load( "imagenes/zombies/zombies_0.png" ) self.imagen_izquierda_1 = pygame.image.load( "imagenes/zombies/zombies_1.png" ) self.imagen_izquierda_2 = pygame.image.load( "imagenes/zombies/zombies_2.png" ) self.lista_imagenes = [ [ self.imagen_derecha_0 , self.imagen_derecha_1 , self.imagen_derecha_2 ] , [ self.imagen_izquierda_0 , self.imagen_izquierda_1 , self.imagen_izquierda_2 ] ] self.imagen_actual = 0 self.siguiente_imagen = self.lista_imagenes[ self.imagen_actual ][ 0 ] self.rectangulo = self.siguiente_imagen.get_rect() self.rectangulo.left = random.randrange( 0 , 500 ) self.rectangulo.top = random.randrange( -100 , -10 ) self.lista_rectamgulos = [ pygame.rect.Rect( ( self.rectangulo.left + 8 , self.rectangulo.top + 3 ) , ( 10 , 10 ) ) , pygame.rect.Rect( ( self.rectangulo.left + 8 , self.rectangulo.top + 15 ) , ( 10 , 15 ) ) , pygame.rect.Rect( ( self.rectangulo.left + 8 , self.rectangulo.top + 33 ) , ( 10 , 13 ) ) , pygame.rect.Rect( ( self.rectangulo.left + 1 , self.rectangulo.top + 17 ) , ( 6 , 6 ) ) , pygame.rect.Rect( ( self.rectangulo.left +20 , self.rectangulo.top + 17 ) , ( 6 , 6 ) ) ] self.orientacion = 0 self.puntos = pts self.dinero = dinero self.vida = vida self.retardo = 0 def mover_zombies( self , velocidad): for rectangulo in self.lista_rectamgulos: rectangulo.move_ip( 0 , velocidad )

Page 38: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

34

self.rectangulo.move_ip( 0 , velocidad ) def danos( self , dano ): self.vida -= dano def animacion( self ): if self.retardo <= 3: self.retardo += 1 else: self.siguiente_imagen = self.lista_imagenes[ self.orientacion ][ self.imagen_actual ] self.proxima_imagen() self.retardo = 0 def proxima_imagen( self ): self.imagen_actual += 1 if ( self.imagen_actual > ( len( self.lista_imagenes ) - 1 ) and ( self.orientacion == 0 ) ): self.imagen_actual = 0 self.orientacion = 1 elif ( self.imagen_actual > ( len( self.lista_imagenes ) - 1 ) and ( self.orientacion == 1 ) ): self.imagen_actual = 0 self.orientacion = 0 def sonido_zombie( self ): if random.randrange( 0 , 400 ) == 200: sonido = pygame.mixer.Sound( "sonidos/audio_zombie.wav" ) sonido.play() def dibujar( self , pantalla ): pantalla.blit( self.siguiente_imagen , self.rectangulo ) '''for rectangulo in self.lista_rectamgulos: pygame.draw.rect( pantalla , ( 150 , 100 , 80 ) , rectangulo )''' def getPuntos( self ): return self.puntos def getDinero( self ): return self.dinero def getVida( self ): return self.vida def getLista_rectangulos( self ): return self.lista_rectamgulos

Page 39: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

35

Código principal @author: SPARTAN-117 //Programador: Bernardo Chaparro //Main //Noviembre del 2014 // Versión 1.1 ''' import sys , pygame , random from pygame.locals import * from Mapa import Mapa from Mira import Mira from Zombies import Zombies from Colt import Colt from Kar_98 import Kar_98 from M1_Garand import M1_Garand from MP_40 import MP_40 from Thompson import Thompson from STG_44 import STG_44 from Bar import Bar ANCHO = 800 ALTO = 650 COLOR = ( 255 , 255 , 255 ) kar_98 = { "arma" : False , "cargador" : 0 , "precio_arma" : 2000 , "precio_cargador" : 100 } m1_garand = { "arma" : False , "cargador" : 0 , "precio_arma" : 4000 , "precio_cargador" : 200 } mp40 = { "arma" : False , "cargador" : 0 , "precio_arma" : 6000 , "precio_cargador" : 300 } thompson = { "arma" : False , "cargador" : 0 , "precio_arma" : 8000 , "precio_cargador" : 400 } stg44 = { "arma" : False , "cargador" : 0 , "precio_arma" : 10000 , "precio_cargador" : 500 } bar_cal30 = { "arma" : False , "cargador" : 0 , "precio_arma" : 12000 , "precio_cargador" : 600 } MOCHILA = [ kar_98 , m1_garand , mp40 , thompson , stg44 , bar_cal30 ] dinero = 0 cargador = 0 PANTALLA = pygame.display.set_mode( ( ANCHO , ALTO ) ) pygame.display.set_caption( "Ataque Zombies" ) RELOJ = pygame.time.Clock() #Funcion para colocar texto def texto(texto, posx, posy, color=(255, 0, 0)): fuente = pygame.font.Font("Fuente/CHILLER.ttf", 20) salida = pygame.font.Font.render(fuente, texto, 0, color) salida_rect = salida.get_rect() salida_rect.centerx = posx salida_rect.centery = posy return salida, salida_rect

Page 40: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

36

def menu(): salir = False OPCION = 0 fondo_menu = pygame.image.load( "imagenes/fondos/fondo_menu.png" ) cursor = pygame.image.load( "imagenes/cursor.png" ) sonido_cursor = pygame.mixer.Sound( "sonidos/blip6.wav" ) cursor_x = 150 cursor_y = 280 while salir == False: for evento in pygame.event.get(): if evento.type == pygame.QUIT: sys.exit( 1 ) elif evento.type == pygame.KEYDOWN: if evento.key == pygame.K_UP and cursor_y >= 400: OPCION = 1 cursor_y -= 120 sonido_cursor.play() elif evento.key == pygame.K_DOWN and cursor_y <= 280: OPCION = 2 cursor_y += 120 sonido_cursor.play() elif evento.key == pygame.K_RETURN: salir = True PANTALLA.blit( fondo_menu , ( 0 , 0 ) ) PANTALLA.blit( cursor , ( cursor_x , cursor_y ) ) RELOJ.tick( 20 ) pygame.display.update() return OPCION def creditos(): salir = False fondo_creditos = pygame.image.load( "imagenes/fondos/fondo_creditos.png" ) while salir == False: for evento in pygame.event.get(): if evento.type == pygame.QUIT: sys.exit( 1 ) elif evento.type == pygame.KEYDOWN: if evento.key == pygame.K_RETURN: salir = True PANTALLA.blit( fondo_creditos , ( 0 , 0 ) ) RELOJ.tick( 20 ) pygame.display.update()

Page 41: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

37

def Venta_Armas( ): salir = False curso = pygame.image.load( "imagenes/cursor_armas.png" ) fondo_venta_armas = pygame.image.load( "imagenes/fondos/fondo_venta_armas.png" ) sonido_cursor = pygame.mixer.Sound( "sonidos/efectos/LTTP_Menu_Cursor.wav" ) sonido_error = pygame.mixer.Sound( "sonidos/efectos/LTTP_Error.wav" ) sonido_comprar = pygame.mixer.Sound( "sonidos/efectos/LTTP_Rupee2.wav" ) cursor_x = 15 cursor_y = 235 global dinero x = 255 y = 292 while salir == False: for evento in pygame.event.get(): if evento.type == pygame.QUIT: sys.exit( 1 ) elif evento.type == pygame.KEYDOWN: if evento.key == pygame.K_RIGHT: if cursor_x <= 500: cursor_x += 265 sonido_cursor.play() elif evento.key == pygame.K_LEFT: if cursor_x > 15: cursor_x -= 265 sonido_cursor.play() elif evento.key == pygame.K_DOWN: if cursor_y == 280: cursor_y += 180 sonido_cursor.play() elif cursor_y < 505: cursor_y += 45 sonido_cursor.play() elif evento.key == pygame.K_UP: if cursor_y == 460: cursor_y -= 180 sonido_cursor.play() elif cursor_y > 235: cursor_y -= 45 sonido_cursor.play() elif evento.key == pygame.K_c: if dinero > 0: if cursor_x == 15 and cursor_y == 235: if MOCHILA[ 0 ][ "arma" ] == False: if dinero >= MOCHILA[ 0 ][ "precio_arma" ]:#arma kar 98 MOCHILA[ 0 ][ "arma" ] = True precio = MOCHILA[ 0 ][ "precio_arma" ] dinero -= precio sonido_comprar.play() else:

Page 42: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

38

sonido_error.play() elif cursor_x == 15 and cursor_y == 280:#cargador kar 98 if dinero >= MOCHILA[ 0 ][ "precio_cargador" ]: cargador = MOCHILA[ 0 ][ "cargador" ] cargador += 1 MOCHILA[ 0 ][ "cargador" ] = cargador precio = MOCHILA[ 0 ][ "precio_cargador" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 280 and cursor_y == 235: if MOCHILA[ 1 ][ "arma" ] == False:# arma m1 garand if dinero >= MOCHILA[ 1 ][ "precio_arma" ]: MOCHILA[ 1 ][ "arma" ] = True precio = MOCHILA[ 1 ][ "precio_arma" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 280 and cursor_y == 280:#cargador m1 garand if dinero >= MOCHILA[ 1 ][ "precio_cargador" ]: cargador = MOCHILA[ 1 ][ "cargador" ] cargador += 1 MOCHILA[ 1 ][ "cargador" ] = cargador precio = MOCHILA[ 1 ][ "precio_cargador" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 545 and cursor_y == 235:# arma mp40 if MOCHILA[ 2 ][ "arma" ] == False: if dinero >= MOCHILA[ 2 ][ "precio_arma" ]: MOCHILA[ 2 ][ "arma" ] = True precio = MOCHILA[ 2 ][ "precio_arma" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 545 and cursor_y == 280:#cargador mp40 if dinero >= MOCHILA[ 2 ][ "precio_cargador" ]: cargador = MOCHILA[ 2 ][ "cargador" ] cargador += 1 MOCHILA[ 2 ][ "cargador" ] = cargador precio = MOCHILA[ 2 ][ "precio_cargador" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 15 and cursor_y == 460:#arma thompson if MOCHILA[ 3 ][ "arma" ] == False: if dinero >= MOCHILA[ 3 ][ "precio_arma" ]: MOCHILA[ 3 ][ "arma" ] = True

Page 43: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

39

precio = MOCHILA[ 3 ][ "precio_arma" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 15 and cursor_y == 505:#cargador thompson if dinero >= MOCHILA[ 3 ][ "precio_cargador" ]: cargador = MOCHILA[ 3 ][ "cargador" ] cargador += 1 MOCHILA[ 3 ][ "cargador" ] = cargador precio = MOCHILA[ 3 ][ "precio_cargador" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 280 and cursor_y == 460:# arma stg44 if MOCHILA[ 4 ][ "arma" ] == False: if dinero >= MOCHILA[ 4 ][ "precio_arma" ]: MOCHILA[ 4 ][ "arma" ] = True precio = MOCHILA[ 4 ][ "precio_arma" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 280 and cursor_y == 505:#cargador stg44 if dinero >= MOCHILA[ 4 ][ "precio_cargador" ]: cargador = MOCHILA[ 4 ][ "cargador" ] cargador += 1 MOCHILA[ 4 ][ "cargador" ] = cargador precio = MOCHILA[ 4 ][ "precio_cargador" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 545 and cursor_y == 460:# arma bar cal .30 if MOCHILA[ 5 ][ "arma" ] == False: if dinero >= MOCHILA[ 5 ][ "precio_arma" ]: MOCHILA[ 5 ][ "arma" ] = True precio = MOCHILA[ 5 ][ "precio_arma" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() elif cursor_x == 545 and cursor_y == 505:#cargador bar cal .30 if dinero >= MOCHILA[ 5 ][ "precio_cargador" ]: cargador = MOCHILA[ 5 ][ "cargador" ] cargador += 1 MOCHILA[ 5 ][ "cargador" ] = cargador precio = MOCHILA[ 5 ][ "precio_cargador" ] dinero -= precio sonido_comprar.play() else: sonido_error.play() else:

Page 44: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

40

sonido_error.play() elif evento.key == pygame.K_RETURN: salir = True texto_dinero , rectangulo_dinero = texto( str( dinero ) , 670 , 630 ) PANTALLA.blit( fondo_venta_armas , ( 0 , 0 ) ) PANTALLA.blit( curso , ( cursor_x , cursor_y ) ) PANTALLA.blit( texto_dinero , rectangulo_dinero ) '''Para obtener la cantidad de cargadores que tiene cada arma''' for total_cargador in range( 6 ): numero , rectangulo_numero = texto( str( MOCHILA[ total_cargador ][ "cargador" ] ) , x , y ) PANTALLA.blit( numero , rectangulo_numero ) x += 250 if total_cargador == 2: x = 255 y += 245 x = 255 y = 292 RELOJ.tick( 20 ) pygame.display.update() def main( ): global dinero nivel = Mapa() mira = Mira() colt = Colt( 250 , 550 , 100 , 8 ) kar98 = Kar_98( 250 , 530 , 150 , 5 ) m1_garand = M1_Garand( 250 , 530 , 150 , 8 ) mp40 = MP_40( 250 , 550 , 180 , 30 ) thompson = Thompson( 250 , 520 , 180 , 30 ) stg44 = STG_44( 250 , 550 , 70 , 32 ) bar = Bar( 250 , 530 , 80 , 20 ) panel = pygame.image.load( "imagenes/panel.png") imagen_dinero = pygame.image.load( "imagenes/bolsa_dinero.png" ) imagen_puntos = pygame.image.load( "imagenes/puntos.png" ) imagen_cargador = pygame.image.load( "imagenes/cargador.png" ) bala = pygame.image.load( "imagenes/bala.png" ) bala_rectangulo = bala.get_rect() bala_rectangulo.x = 450 bala_rectangulo.y = 520 pygame.mixer.music.load( "sonidos/7_Midnight Wandering.ogg" ) sonido_kar98_vacia = pygame.mixer.Sound( "sonidos/armas/kar_98/kar98_reload_loop.wav" ) sonido_impacto_bala_suelo = pygame.mixer.Sound( "sonidos/impactos/Impact_Dirt_20.wav" )

Page 45: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

41

pygame.mouse.set_visible( True ) salir_a = False game_over = False lista_zombies = [] armas = [ colt , kar98 , m1_garand , mp40 , thompson , stg44 , bar ] tiempo = kar98.getTiempo_retardo() indice = 0 puntos = 0 tiempo_pasado_segundos = 0 siguiente_arma = 0 equipar = armas[ siguiente_arma ] '''Genera los primeros zombies''' for monstruo in range( 4 ): zombie = Zombies( 200 , 25 , 50 ) lista_zombies.append( zombie ) while game_over == False: genera_zombie_queden = random.randint( 1 , 2 ) numero_oleadas_zombies = random.randint( 2 , 2 ) print genera_zombie_queden , numero_oleadas_zombies pygame.mixer.music.set_volume( 0.4 ) pygame.mixer.music.play( -1 ) while salir_a == False: mira.posicionar_mouse_mitad_imagen() for evento in pygame.event.get(): ( clic_derecho , scroll , clic_izquierdo ) = pygame.mouse.get_pressed() if evento.type == pygame.QUIT: sys.exit( 1 ) if evento.type == pygame.KEYDOWN:#Para cambiar de arma presionando las teclas 1 , 2, 3 , 4 ,5 , 6 if evento.key == pygame.K_1: siguiente_arma = 0 if MOCHILA[ siguiente_arma ]["arma"]: equipar = armas[ 1 ] elif evento.key == pygame.K_2: siguiente_arma = 1 if MOCHILA[ siguiente_arma ]["arma"]: equipar = armas[ 2 ] elif evento.key == pygame.K_3: siguiente_arma = 2 if MOCHILA[ siguiente_arma ]["arma"]: equipar = armas[ 3 ]

Page 46: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

42

elif evento.key == pygame.K_4: siguiente_arma = 3 if MOCHILA[ siguiente_arma ]["arma"]: equipar = armas[ 4 ] elif evento.key == pygame.K_5: siguiente_arma = 4 if MOCHILA[ siguiente_arma ]["arma"]: equipar = armas[ 5 ] elif evento.key == pygame.K_6: siguiente_arma = 5 if MOCHILA[ siguiente_arma ]["arma"]: equipar = armas[ 6 ] elif evento.key == pygame.K_r:#Recarga el arma if equipar.getNombre() == "Colt": equipar.setNumero_balas( 8 ) elif MOCHILA[ siguiente_arma ][ "cargador" ] > 0: equipar.efecto_sonido_recargar() total_cargador = MOCHILA[ siguiente_arma ][ "cargador" ] total_cargador -= 1 MOCHILA[ siguiente_arma ][ "cargador" ] = total_cargador equipar.setNumero_balas( equipar.getCantidad_balas() ) elif clic_derecho == 1 and tiempo >= equipar.getTiempo_retardo(): if equipar.getNumero_balas() > 0:#Si toda via tenemos balas equipar.efecto_sonido_disparar() '''Se recorre cada imagen del zombie y cada rectangulo que lo compone para determinar con que rectangulo choco el rectangulo de la mira''' for muerto in lista_zombies: for rectan in muerto.getLista_rectangulos(): if rectan.colliderect( mira.getRectangulo() ): numero1 = mira.getRectangulo().collidelist( muerto.getLista_rectangulos() ) if numero1 == 0: muerto.danos( equipar.getDano() ) elif numero1 == 1: muerto.danos( equipar.getDano() / 2 ) elif numero1 == 2: muerto.danos( equipar.getDano() / 3 ) elif numero1 == 3 or numero1 == 4: muerto.danos( equipar.getDano() / 5 ) if muerto.getVida() <= 0: lista_zombies.pop( indice ) puntos += muerto.getPuntos() dinero += muerto.getDinero() break indice += 1 indice = 0 tiempo = 0 equipar.disparar() else:

Page 47: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

43

sonido_kar98_vacia.play() '''Es el tiempo de retardo que tiene el arma entre cada disparo''' tiempo += 1 '''Transforma el texto con el tipo de letra establecido''' texto_dinero , rectangulo_dinero = texto( str( dinero ) , 120 , 600 ) texto_puntos , rectangulo_puntos = texto( str( puntos ) , 120 , 560 ) if equipar.getNombre() == "Colt": texto_total_cargador , rectangulo_cargador = texto( "0" , 290 , 600 ) elif MOCHILA[ siguiente_arma ]["arma"]: texto_total_cargador , rectangulo_cargador = texto( str( MOCHILA[ siguiente_arma ][ "cargador" ] ) , 290 , 600 ) '''Desplaza a los zombies por la pantalla''' for monstruo in lista_zombies: monstruo.animacion() if monstruo.rectangulo.bottom < 520: monstruo.mover_zombies( tiempo_pasado_segundos * random.randrange( 20 , 50 ) ) monstruo.sonido_zombie() else: game_over = True salir_a = True if numero_oleadas_zombies > 0: '''Genera nuevos zombies cada vez que no haya mas en la pantalla''' if len( lista_zombies ) == genera_zombie_queden: numero_oleadas_zombies -= 1 for monstruo in range( 4 ): zombie = Zombies( 100 , 25 , 50 ) lista_zombies.append( zombie ) else: salir_a = True nivel.dibujar( PANTALLA ) PANTALLA.blit( panel , ( 0 , 520 ) ) PANTALLA.blit( imagen_dinero , ( 20 , 580 ) ) PANTALLA.blit( imagen_puntos , ( 20 , 550 ) ) PANTALLA.blit( texto_puntos , rectangulo_puntos ) PANTALLA.blit( texto_dinero , rectangulo_dinero ) PANTALLA.blit( imagen_cargador , ( 250 , 580 ) ) PANTALLA.blit( texto_total_cargador , rectangulo_cargador ) equipar.dibujar( PANTALLA ) for monstruo in lista_zombies: monstruo.dibujar( PANTALLA ) mira.dibujar( PANTALLA ) '''Dibuja las balas en pantalla si el total de balas es mayor a 5 se dibuja la mitad en una linea y la otra parte en otra linea''' for proyectil in range( equipar.getNumero_balas() ): PANTALLA.blit( bala , ( bala_rectangulo ) ) bala_rectangulo.x += 12

Page 48: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

44

if proyectil == ( ( equipar.getNumero_balas() / 2 ) - 1 ): bala_rectangulo.y += 40 bala_rectangulo.x = 450 bala_rectangulo.x = 450 bala_rectangulo.y = 530 pygame.display.update() '''Tiempo que tarda en dibujarse la pantalla''' tiempo_pasado = RELOJ.tick( 20 ) tiempo_pasado_segundos = tiempo_pasado / 1000.0 pygame.mixer.music.stop() if game_over <> True: Venta_Armas()#Obtenemos todas las armas que podemos comprar salir_a = False nivel.siguiente_mapa( True ) else: fin_juego = pygame.image.load( "imagenes/game_over_1.png" ) terminar = False while not terminar: for evento in pygame.event.get(): if evento.type == pygame.QUIT: sys.exit(1) if evento.type == pygame.KEYDOWN: if evento.key == pygame.K_RETURN: terminar = True PANTALLA.blit( fin_juego , ( 250 , 200 ) ) RELOJ.tick( 20 ) pygame.display.update() if __name__ == '__main__': pygame.init() while True: OPCION = menu( ) if OPCION == 1: main() else: creditos()

Page 49: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

45

Aseguramiento de calidad

Este videojuego se realizaron pruebas de caja blanca, las cuales consistieron en

realizar de acuerdo a la complejidad ciclomática un conjunto de casos de pruebas

y así ir perfeccionando el funcionamiento del videojuego; con la finalidad de

asegurarse que todas las sentencias y condiciones se ejecutaran al menos una

vez.

Pruebas de juego

El videojuego se sometió a procesos de prueba por parte del programador,

maestros y estudiantes antes de ser liberado, con la finalidad de que se realizara

una retroalimentación en caso de que existiera algo que mejorar del videojuego

con la finalidad de obtener un videojuego de calidad.

Pruebas alfa

El videojuego fue evaluador por un grupo de jóvenes con la finalidad de determinar

su calidad y/o encontrar errores y poder solucionarlos. Es importante hacer

mención que a los estudiantes le pareció un juego divertido, que no modificaron su

manera de jugar y que los comentarios vertidos por parte de ellos fueron

favorables, es por ello que se procedió a realizar las pruebas beta, las cuales

permitieron liberar el videojuego para la población en general.

Golden master

Es importante mencionar que el videojuego esta liberado para su juego.

Page 50: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

46

Capitulo IV “Breve recorrido por el videojuego”

A continuación se dará un breve recorrido por las interfaces del videojuego

“Ataque Zombies”.

Iniciar el juego

Al ejecutar el icono del videojuego se inicia con una interfaz inicial, - ver figura 4.1

– la cual muestra las opciones principales de iniciar y créditos.

Fig. 4. 1 Interfaz inicial del videojuego

Page 51: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

47

La opción Iniciar, permite al jugador iniciar el juego; mientras la opción créditos,

muestra el nombre de los desarrolladores del videojuego. El jugador puede elegir

cualquiera de las dos opciones solo desplazándose mediante el cursor hacia

arriba o hacia abajo, esto utilizando las flechas del teclado; para seleccionar

cualquier opción es necesario que el jugador presione la tecla Enter.

Head-Up Displays (HUD)

Se llama HUD (del inglés: "Heads-Up Display") a la información que en todo

momento se muestra en interfaz durante la partida, generalmente en forma de

iconos y números. (ver figura 4.2)

Fig. 4. 2 Interfaz del videojuego

Page 52: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

48

En HUD se ilustra la interfaz representativa del pueblo en donde llegan los

Zombies, en la parte inferior de ella, específicamente en el recuadro gris se

encuentran las siguientes opciones: (ver figura 4.2)

Núm. Nombre Descripción

1 Puntos Indica el total de puntos acumulados por cada Zoombie que

el jugador elimine.

2 Acumulador

de Dinero

Indica el total del dinero que se va acumulando por cada

Zoombie que el jugador elimine y que es necesario para que

compre armas y municiones en el inventario de armas.

3 Cargador Muestra en el cargador del arma que el jugador está

utilizando para eliminar a los Zoombies.

4 Cantidad de

cargador

Muestra el total de cargadores que se lleva por cada arma

que utilice el jugador.

5 Tipo de

arma

Muestra el arma (imagen) que está usando el jugador para

eliminar a los Zoombies.

6 Municiones Muestra la cantidad de municiones que puede llevar el

cargador.

Conforme el jugador dispare se va disminuyendo hasta

cuando las balas lleguen a 0.

A la cantidad de cargadores se le resta 1, siempre y cuando

lleve más cargadores, en caso de ya no contar con más

cargadores estos ya no se muestran.

Page 53: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

49

Inventario de armas

El inventario de armas muestra al jugador que armas puede comprar, cuál es su

costo y su cargador. En la figura 4.3 se ilustran las armas disponibles en el

videojuego.

Fig. 4. 3 Interfaz de armas del videojuego

En el inventario de armas se podrá comprar cada una de las armas disponibles

para eliminar Zoombies, a su vez el respectivo cargador. Este inventario aparecerá

cada vez que se termine un nivel del videojuego. Cada una de las armas tiene un

valor así como también su respectivo cargador.

Page 54: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

50

Para poder comprar un arma o un cargador debe de contar con cierta cantidad de

dinero acumulado en cada uno de los juegos – ver fig. 4.3 – cada arma y/o

cargador tiene su costo debajo de él.

Para saber la cantidad de dinero acumulado durante la partida, se observara en la

parte inferior izquierda de la pantalla – ver fig. 4.3 – la imagen de una bolsa de

dinero con el cual se podrá saber la cantidad de dinero disponible.

El realizar una compra de un arma o un cargador es tan sencillo como solo tener

que desplazar la flecha de color rojo con gris mediante las “Flechas direccionales”

del teclado (ver figura 4.4 – controles de juego).

Una vez que seleccione el arma o cargador que se va a comprar, se presionara la

tecla C del teclado. Luego de haber terminado la compra o que el dinero ya no

alcance para comprar más, se presiona la tecla Enter del teclado para regresar al

siguiente nivel del juego.

Controles del Juego

Para tener un mejor manejo en el videojuego es necesario tener el conocimiento

del conjunto de teclas que permiten logar un dominio en el videojuego. El la figura

4.4 se ilustra un teclado de una computadora convencional en el cual están

resaltadas las teclas con color gris. A continuación se describen cuál es su

funcionamiento mediante una tabla.

Page 55: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

51

Fig. 4. 4 Teclas de control del videojuego

Imagen Nombre Descripción

Flechas

direccionales

Permiten desplazarse por las diferentes opciones.

Enter

Selecciona una opción del Menú principal y

para salir de la venta de Inventarios de

Armas.

1 , 2 , 3 , 4 ,

5 , 6

Permiten desplazarse por las diferentes

armas.

(Estas tienen que estar compradas antes

para poder utilizarse )

C

Efectúa la compra dentro del inventario de

armas.

R

Recarga el arma.

Page 56: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

52

Gameplay

Al inicio del juego nos encontramos en el Menú principal, el cual consta de 2

opciones a elegir: Jugar y Créditos. Para poder elegir algunas de las opciones, el

jugador deberá presionar las flechas del teclado para desplazarse hacia arriba o

hacia abajo y posteriormente presionar la tecla Enter para confirmar la opción

seleccionada.

Si se elige la opción de Créditos nos aparece una ventana con un poco de

información, por ejemplo: desarrollador, audio, imágenes y director. Para regresar

al Menú principal solo basta con presionar la tecla Enter de nuevo.

Ahora si el jugador elige Jugar, la pantalla cambia al primer nivel del juego en el

cual muestra un Panel el cual tiene la información de dinero acumulado, puntos

acumulados, arma elegida, total de cargadores, y la cantidad de balas que puede

llevar cada cargador.

También se ilustra una mira que será controlado por medio del ratón, el cual

también permitirá efectuar disparos presionando el botón izquierdo del ratón. Cada

vez que se haga un disparo en el panel, se observara como las balas se van

disminuyendo hasta que este quede vacío, una vez vació el cargador (que no

haya más balas dibujadas) si, se intenta disparar este reproducirá un sonido

indicando que el arma esta descargada. Por lo que el jugador tendrá que presionar

la tecla R para recargar el arma. Y cada vez que se recargue el arma, el contador

de cargadores disminuyera en 1 y las balas se volverán a dibujar. Si el usuario

utiliza todos los cargadores este ya no podrá recargar más.

Los enemigos saldrán desde la parte superior de la ventana y al azar obtendrán

sus posiciones en el eje X y Y. También saldrán en grupos de 10 y serán por

oleadas en cada nivel, en donde al azar se especificara el número de oleadas para

cambiar de ventana.

Page 57: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

53

El cuerpo del zombie se divide en 4 partes: cabeza, pecho, piernas y manos. Que

dependiendo en donde sufran daño se le ira retirando puntos de sangre, si el

disparo es en la cabeza estos desaparecerán instantáneamente de la pantalla. Y

por cada zombie abatido obtendrás puntos y dinero. Si algunos de los zombies

tocan la parte del Panel el juego termina.

Para comprar armas primero el jugador deberá de derrotar a todas las oleadas de

zombies. Una vez hecho esto la pantalla cambiara a Venta de Armas en donde se

observaran las armas disponibles a comprar con su precio, los cargadores y su

precio así como el total de cargadores que lleva el usuario en ese momento y la

cantidad de dinero que acumulo en el nivel. Podrá elegir el arma a comprar por

medio de las flechas del teclado para poder mover el cursor. Para poder realizar la

compra se deberá de tener la cantidad de dinero especificado debajo de cada

dibujo de arma o de cargador y posteriormente presionar la tecla C. Si el jugador

no cuenta con el suficiente dinero se reproducirá un sonido de error indicándole

que no se puede comprar debido a falta de dinero. Cuando el jugador haga una

compra de Arma se reproducirá el sonido indicando que si se pudo comprar el

arma elegida y se verá como decremento su dinero. Cada vez que se compre un

arma este no se podrá volver a comprar, en caso de que el jugador decida volver a

comprar un arma que ya tiene se reproducirá el sonido de error. Para la compra de

cargador, cada vez que se compre uno, en la cantidad de cargadores aumentara

indicándole al jugador que se compró dicho cargador seleccionado (este se

sumara con los cargadores que ya tenía de esa arma), cada cargador es

independiente por lo que podrá tener cargadores para cada arma, en caso de que

no tenga ninguna arma comprada aun así podrá llevarse los cargadores que

pueda comprar, teniendo en cuenta que no podrá utilizarlos hasta que se compre

el arma.

Una vez hecha la compra no se podrá deshacer de esta. Después de terminar la

comprar, para regresar al juego solo es necesario presionar la tecla Enter.

Page 58: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

54

Una vez pasado por la sección de Ventas de Armas, se verá el cambio de nivel

informando al jugador el paso de nivel. Para utilizar las armas compradas se

deberá de presionar las teclas del 1 al 6 (dependiendo de las armas que tenga son

las que podrá usar). Cada vez que se presione las teclas 1 – 6 en el panel se

mostrara el cambio de arma y de cargador, mostrando de igual manera el total de

cargadores que se tiene de esa arma. Y así es como se podrá cambiar de arma.

Una vez que se haga el cambio de arma, el arma principal que llevaba tipo Colt ya

no se podrá utilizar durante todo lo que dure el juego.

Si el jugador pierde, se regresara a la ventana de Menú principal y todo lo que

llevaba se perderá teniendo que volver a comenzar.

Page 59: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

55

Capítulo V “Resultado y conclusiones”

Resultados

El principal resultado es el videojuego “Ataque Zombie”, este videojuego presenta

una interfaz amigable lo que lo hace muy fácil de jugar a cualquier persona. Este

videojuego es resultado de los conocimientos adquiridos durante mi carrera

profesional específicamente de la asignatura de Ingeniería de Software, a través

del ciclo de vida y UML para garantizar un producto de software de calidad; a su

vez es importante mencionar que la formación recibida permitió poder conocer

nuevas herramientas de programación que permitieron aprender nuevos lenguajes

de programación como Python y Pygame no visto en la carrera y así fijar la meta

de la realización del videojuego.

Conclusiones

A través del desarrollo de esta tesis, se mostró como es importante seguir una

metodología específica para el desarrollo de videojuego, esto por medio de cada

una de las fases que comprende el ciclo de vida y la importancia de la Ingeniería

de Software para garantizar la calidad del videojuego.

Page 60: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

56

Bibliografía

[1] “Los videojuegos en el proceso de aprendizaje”, consultado el día 8 de

diciembre de 2014 en:

http://www.colombiadigital.net/opinion/columnistas/conexion/item/1914-los-

videojuegos-en-el-proceso-de-aprendizaje.html

[2] Rodríguez-Hoyos Carlos, Joao Gomes María, “Videojuegos y Educación:

una visión panorámica de las investigaciones desarrolladas a nivel

internacional”, Revista de currículum y formación del profesorado, Vol. 17,

No. 2, 2013, pp. 479-494.

[3] “Videojuegos”, consultado el 10 de diciembre del 2014 en:

http://es.wikipedia.org/wiki/Videojuego

[4] Gifford B.R. “The learning society: Serious play”. Chronicle of Higher

Education; 7. 1991.

[5] Roger S. Pressman. Ingeniería del Software. Un Enfoque Práctico.

Editorial .Graw Hill. 5ta. ed. México.2002

[6] IEEE. IEEE Standards Collection: Software Enginieering 610.12-19

1993

[7] Python, consultado el 15 de diciembre del 2014 en:

http://es.wikipedia.org/wiki/Python

[8] Pygame, consultado el 17 de diciembre del 2014 en :

http://sabia.tic.udc.es/gc/Contenidos%20adicionales/trabajos/Programacion

VideoJuegos/PyGame/pygame.html

Page 61: TESIS - .:Centro de Desarrollo Bibliotecario:.biblio.uabcs.mx/tesis/te3314.pdf · Hoy en día, para el desarrollo de software, se toma en cuenta la Ingeniería de Software, ya que

57

[9] Craig Larman. UML y Patrones. Introducción al análisis y diseño

orientado a objetos. Ed. Prentice Hall. 1ra.ed. México.1999

[10] Ciclo de vida del software, consultado 14 de diciembre de 2014 en:

http://es.kioskea.net/contents/223-ciclo-de-vida-del-software

[11] Python, consultado 10 de diciembre del 2014 en: www.python.org

[12] Guía de aprendizaje de Python, consultado 10 de diciembre del 2014,

en: programación.net/articulo/guía_de_aprendizaje_de_python_65

[13] EcuRed, conocimiento para todos y con todos, portal web- articulo:

Eclipse, entorno de desarrollo integrado. Consultado 12 de diciembre del

2014, en: www.ecured.cu/index.php/Eclipse,_entorno_de

_desarrollo_integrado

[14] ¿Qué es Pygame?, articulo consultado 12 de diciembre del 2014 en:

www.linuxhispano.net/2010/introduccion-a-pygame-programacion-avanzada

[15] Pygame, consultado el 12 de diciembre del 2014, en:

sabia.tic.udc.es/gc/Contenidosadicionales/trabajos/ProgramacionVideoJueg

os/Pygame/Pygame.html