software libre y sus aplicaciones orient ad as a videojuegos

72
Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales Taller de Investigación II Software Libre y sus aplicaciones orientadas a Videojuegos. Gustavo Higareda Soto 2009 18/06/2009

Upload: hatakegus

Post on 12-Jun-2015

3.045 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango

Ingeniería en Sistemas Computacionales

Taller de Investigación II

Software Libre y sus aplicaciones orientadas a Videojuegos.

Gustavo Higareda Soto

2009

18/06/2009

Page 2: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 2

Tabla de contenido

1 Introducción. .............................................................................................................................................. 4

2 Planteamiento del problema ...................................................................................................................... 5

3 Justificación ................................................................................................................................................ 5

4 Objetivo ...................................................................................................................................................... 5

5 Alcances y Limitaciones .............................................................................................................................. 6

CAPITULO I. SOFTWARE LIBRE ...................................................................................................................... 7

1.1 DEFINICION DE SOFTWARE LIBRE ................................................................................................. 7

1.2 ¿EN QUE CONSISTE EL SOFTWARE LIBRE? .................................................................................... 7

1.3 VENTAJAS Y DESVENTAJAS ............................................................................................................ 8

Principales ventajas. .............................................................................................................................. 8

Desventajas ........................................................................................................................................... 8

1.4 LICENCIAS ...................................................................................................................................... 9

Licencias de Software Libre ................................................................................................................... 9

1.5 CLASIFICACION DE SOFTWARE LIBRE .................................................................................................... 10

CAPITULO II APLICACIONES DE SOFTWARE LIBRE ....................................................................................... 12

2.1 ¿Qué es software de Sistema? .............................................................................................................. 12

2.2 Software de Programación. ................................................................................................................... 12

2.3 Software de Aplicación. ......................................................................................................................... 13

CAPITULO III LOS VIDEOJUEGOS .................................................................................................................. 15

3.1 CONCEPTO ............................................................................................................................................. 15

3.2 Origen .................................................................................................................................................... 15

3.3 Géneros ................................................................................................................................................. 19

3.3.1 ¿Definición de género en un videojuego? ...................................................................................... 19

3.3.2 Diferentes Géneros ........................................................................................................................ 19

Acción .................................................................................................................................................. 19

Lucha ................................................................................................................................................... 20

Juegos de acción en primera persona ................................................................................................. 21

Acción en tercera persona .................................................................................................................. 22

Infiltración ........................................................................................................................................... 22

Plataformas ......................................................................................................................................... 22

Page 3: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 3

Árcade.................................................................................................................................................. 23

Videojuegos de deportes..................................................................................................................... 23

Sport .................................................................................................................................................... 23

Carreras ............................................................................................................................................... 24

Agilidad mental.................................................................................................................................... 24

Educación ............................................................................................................................................ 24

Aventura .............................................................................................................................................. 25

Gráfica ................................................................................................................................................. 25

3.4 Los Videojuegos compatibles con Software Libre ................................................................................. 25

3.4.1 ¿Qué ofrece el software libre para la programación de videojuegos? .......................................... 26

Capítulo IV El software libre orientado a los videojuegos........................................................................... 27

4.1 Ventajas de un videojuego con código abierto ................................................................................. 27

4.2 Código fuente de juegos en diferentes lenguajes ............................................................................. 28

4.2.1- java ............................................................................................................................................ 28

4.2.2 Cuatro en raya ............................................................................................................................ 28

4.2.3 Buscaminas ................................................................................................................................. 33

CAPITULO V Metodología. ........................................................................................................................... 37

CAPITULO VI Resultados. ............................................................................................................................. 38

CONCLUSIONES ........................................................................................................................................... 42

ANEXOS ....................................................................................................................................................... 43

Anexo 1 .................................................................................................................................................... 43

Anexo 2 .................................................................................................................................................... 43

Anexo 3 .................................................................................................................................................... 44

Anexo 4 .................................................................................................................................................... 46

Anexo 5 .................................................................................................................................................... 62

Anexo 7 .................................................................................................................................................... 65

Anexo 8 .................................................................................................................................................... 67

Referencias. ................................................................................................................................................. 72

Page 4: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 4

1 Introducción.

Desde el principio de la humanidad el juego ha sido fundamental para el desarrollo del ser humano desde que somos niños, jugando con una pelota, un papel y muchos otros objetos, sin importar lo que fuera ya que el ser humano es capaz de transformar un papel en un avión. Pero esto ha cambiado con el tiempo ya que con los avances de la tecnología a lo largo de los años se crearon los primeros videojuegos con una rudimentaria caja de madera, osciloscopio y unas cuantas palancas así nace el primer videojuego llamado pong [13] siendo el pionero de una de las industrias más grandes en la actualidad.

Desde el punto de vista teórico el tema se puede tornar un tanto complejo pero para algunos en el instante que se toma un control de videojuego y se está de frente al televisor se siente una adrenalina tal que hace emocionarse a tal grado que se quiera seguir jugando; ya que un videojuego es; Más que realidad virtual trasciende hasta el mudo real, un videojuego es más que una distracción, es un estilo de vida, que nos permite llevar sus habilidades mas allá de lo real hasta llegar al punto de ser imbatibles.

Así en este proyecto se aborda el tema de los videojuegos desde la perspectiva del software libre, iniciando desde las definiciones de software libre, pasando por un poco de historia desde que se creó la primera consola en 1972 hasta llegar a la actualidad, dando así una clasificación de los diferentes géneros que existen. Y finalmente exponiendo un par de códigos de videojuegos creados en el lenguaje java.

Page 5: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 5

2 Planteamiento del problema

Con el avance tecnológico y los altos costos en recursos monetarios y tiempo de desarrollo que se tiene al crear un videojuego; se tarda cualquier edición de algún videojuego al salir a la venta para el usuario habitual de videojuegos resulta desesperante tener que esperar meses e incluso años en que salga el tan ansiado producto y en el momento que es insertado en la consola no sea lo que se espera de él, a veces es peor que la versión anterior, y sin saber que hacer lo dejan a un lado.

3 Justificación

El motivo principal para este proyecto es dar a conocer el software libre y sus aplicaciones a videojuegos llevando al usuario a un nivel superior: crearlo y mejorarlo a su gusto, aprovechando la ventaja del software libre ya que brinda códigos, aplicaciones y sobre todo flexibilidad al momento de desarrollar algún programa; sobre todo que el mismo usuario crearía videojuegos más interesantes cubriendo varios puntos a la vez como son: paciencia al momento de esperar algún producto nuevo, tiempo a las empresas desarrolladoras de videojuegos para ofrecer juegos de buena calidad al sacados al mercado.

4 Objetivo

El objetivo del siguiente trabajo de investigación es:

• Dar a conocer la variedad de software libre en el ámbito de los videojuegos analizado sus ventajas, clasificaciones y código fuente.

Page 6: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 6

5 Alcances y Limitaciones

Este proyecto de investigación consiste en analizar las aplicaciones de software libre para videojuegos dando a conocer las ventajas y desventajas del uso del código abierto para dichas aplicaciones.

Las limitaciones de este proyecto son:

No se hablará a fondo de software propietario ya que no interesa.

No se explicarán a fondo las diferentes aplicaciones de software libre que hay, solamente se tomaran en cuenta lo orientado a videojuegos.

Para concluir se mostraran diferentes indicadores manera de graficas mostrando diferentes preguntas sobre software libre y videojuegos, incluyendo únicamente a programadores de las carrera de ingeniería en sistemas computacionales e informática del Instituto Tecnológico de Durango para dar un análisis sobre el conocimiento y uso de software libre aplicado a los videojuegos dentro de una población estudiantil.

Los tipos de indicadores que se usaron en este proyecto de investigación fueron diferentes preguntas a continuación enumeradas; y obteniendo de estas diferentes resultados y representándolos de forma grafica.

1.- ¿Sabe lo que es el Software Libre?

2.- ¿Qué programas ha manejado de Software Libre?

3.- ¿Usted ha creado alguna aplicación de Software Libre?

4.- ¿Qué ventajas tiene desde su punto de vista el Software Libre?

Page 7: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 7

CAPITULO I. SOFTWARE LIBRE

1.1 DEFINICION DE SOFTWARE LIBRE

El término software libre (o programas libres) se refiere a libertad, tal como fue concebido por Richard Stallman en su definición. [2] En concreto se refiere a cuatro libertades:

1. Libertad para ejecutar el programa en cualquier sitio, con cualquier propósito y para siempre. 2. Libertad para estudiarlo y adaptarlo a nuestras necesidades. Esto exige el acceso al código fuente. 3. Libertad de redistribución, de modo que se nos permita colaborar con vecinos y amigos. 4. Libertad para mejorar el programa y publicar las mejoras. También exige el código fuente.[1; 2]

“Lo que es el software libre; está compuesto por libre esta palabra en si no nos dice

absolutamente nada, el término “free” su definición es libre a demás también significa gratis, pero esta definición de gratis pues no se adecua a la esencia de software libre, ya que no es lo mismo a que algún tipo de software se distribuya gratuitamente a que sea libre en este caso se incluya el código”.

1.2 ¿EN QUE CONSISTE EL SOFTWARE LIBRE?

La esencia del software libre se basa en libertades:

• La libertad para utilizar un programa significa que cualquier individuo u organización podrán ejecutarlo desde cualquier sistema informático, con cualquier fin y sin la obligación de comunicárselo subsiguientemente ni al desarrollador ni a ninguna entidad en concreto.

• La libertad para redistribuir copias supone incluir las formas binarias o ejecutables del programa y el código fuente tanto de las versiones modificadas como de las originales la distribución de programas en formato ejecutable es necesaria para su adecuada instalación en sistemas operativos libres.

Page 8: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 8

No pasa nada si no se puede producir una forma ejecutable o binaria dado que no todos los lenguajes pueden soportarlo, pero todos debemos tener la libertad para redistribuir tales formas si se encuentra el modo de hacerlo.[2]

1.3 VENTAJAS Y DESVENTAJAS

El software libre presenta una serie de ventajas sobre el software propietario por los derechos que otorga a sus usuarios. Algunas de estas ventajas pueden ser más apreciadas por los usuarios particulares, otras por las empresas, y otras por las administraciones publicas.

Principales ventajas.

A continuación se enumeran las ventajas que tiene el software libre:

1. Bajo costo de adquisición y libre uso. 2. Innovación tecnológica. 3. Requisitos de hardware menores y durabilidad de las soluciones. 4. Escrutinio público. 5. Independencia del proveedor. 6. Adaptación del software.[1;3]

Desventajas

A continuación se muestra un enumerado de las desventajas que tiene el software libre:

1. El software libre no tiene garantía proveniente del autor. 2. Se necesita dedicar recursos a la reparación de errores. 3. No existen compañías únicas que respalden toda la tecnología. 4. El usuario debe tener nociones de programación.[1;3]

Page 9: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 9

1.4 LICENCIAS

En este apartado se presenta la clasificación de distintos tipos de licencias de software libre.

Licencia: Es un contrato entre el autor (o propietario de los derechos) y los usuarios, que estipula lo que éstos pueden hacer con su obra: uso, redistribución, modificación, etc., y en qué condiciones.[1]

Licencias de Software Libre

Las licencias de software libre dan ciertos permisos explícitos: Cuando recibes un programa libre puedes redistribuirlo o no, pero si lo redistribuyes, sólo puedes hacerlo porque la licencia te lo permite. Pero para ello es preciso cumplir con la licencia.[4]

Licencia BDS

La única obligación que exige es la de dar crédito a los autores, mientras que

permite tanto la redistribución binaria, como la de los códigos fuentes, aunque no obliga a ninguna de las dos en ningún caso. Asimismo, da permiso para realizar modificaciones y ser integrada con otros programas casi sin restricciones.[4]

Licencia GPL

La licencia GPL permite la redistribución binaria y la de las fuentes, aunque, en el

caso de que redistribuya de manera binaria, obliga a que también se pueda acceder a las fuentes. Asimismo, está permitido realizar modificaciones sin restricciones, aunque sólo se pueda integrar código licenciado bajo GPL con otro código que se encuentre bajo una licencia idéntica o compatible, lo que ha venido a llamarse el efecto viral de la GPL, ya que el código publicado una vez con esas condiciones nunca puede cambiar de condiciones.[4]

Licencia LGPL

La LGPL permite el uso de programas libres con software propietario. El

programa en sí se redistribuye como si estuviera bajo la licencia GPL, pero se permite la integración con cualquier otro software prácticamente sin limitaciones.[4]

Page 10: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 10

En la tabla siguiente se muestra dos tipos de licencia; la tabla nos muestra sus características referentes al software libre (ver página 1).

Tipo de software / Características de la Licencia

Precio cero, uso ilimitado y redistribución permitida

archivos fuentes disponibles

archivos fuente modificables

Revisión pública de archivos fuentes

Todos los derivados deben ser gratuitos

Fuente Abierta estilo BSD*

si si si

Fuente Abierta estilo Linux/GNU

si si si si si

Tabla 1.1 Características del software libre.[5]

1.5 CLASIFICACION DE SOFTWARE LIBRE

A continuación se presenta un enumerado de la clasificación de software libre

1. De acuerdo al costo de adquisición: el Software Libre puede ser de las dos clases, es decir, de costo cero o de costo mayor que cero. Lo que lo diferencia del Software Propietario es que su costo es independiente del número de computadoras que se poseen. Por ejemplo, en el caso del Sistema Operativo Microsoft Windows 3.1/95/98/Me/NT/2000/XP por cada computadora en que lo instale debo pagar una licencia. En cambio, si utilizo en Sistema Operativo GNU/Linux (en cualquiera de sus distribuciones, como Red Hat, Mandrake, Debian, Ubuntu) debo pagar una sola licencia (no obstante, algunas licencias no tienen costo).[6]

2. De acuerdo a la apertura del código fuente: el Software Libre siempre es "open source", es decir, de código fuente abierto, ya que dijimos que el acceso al código fuente es necesario para el ejercicio de las libertades 1 y 3 arriba descriptas. El ser "open source" implica una serie de ventajas que serán descriptas en la sección "Ventajas del Software Libre". [6]

Page 11: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 11

3. De acuerdo a su protección: el Software Libre siempre está protegido con licencias, y más específicamente, con licencias de copyleft.

¿Por qué no de dominio público?. Porque de ese modo cualquiera puede adueñarse de él, por ejemplo, adquiere un Software Libre, lo modifica, lo compila y lo distribuye con código cerrado. ¿Por qué no con Copyright? Porque de esa manera alguien le puede agregar alguna restricción, por lo tanto no va a seguir siendo Software Libre.[6]

4. De acuerdo a su legalidad: el Software Libre siempre es legal, porque al usarlo, estudiarlo, modificarlo, adaptarlo y/o mejorarlo no estoy violando ninguna norma, ya que de por si este tipo de software me permite hacerlo, con la única salvedad de no poder agregarle ninguna restricción adicional cuando lo transfiera a otra persona.[6]

Page 12: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 12

CAPITULO II APLICACIONES DE SOFTWARE LIBRE

2.1 ¿Qué es software de Sistema?

El Software de sistema, es denominado software de base, consiste en un software que sirve para controlar e interactuar con el sistema, proporcionando control sobre el hardware y dando soporte a otros programas. En contraposición del llamado Software de Aplicación. Ejemplos de software del sistema son sistema operativo, sistema operativo de red, compiladores, Antivirus, librerías tales como Open GL (para la aceleración gráfica), PNG para el sistema gráfico o demonios que controlan la temperatura, la velocidad del disco duro (como hdparm) o la frecuencia del procesador como por ejemplo cpudyn.

El software de sistema realiza tareas como la transferencia de datos entre la memoria RAM y los dispositivos de almacenamiento (disco rígido, unidades de discos ópticos, etc.), o bien puede realizar la operación de reenderizado de texto en una pantalla. Clases de software de sistema pueden ser cargadores de programas, sistemas operativos, controladores de dispositivos, herramientas de programación, compiladores, ensambladores, enlazadores, y programas utilitarios.

Si el software de sistema se almacena en una memoria no volátil tal como circuitos integrados, usualmente se lo denomina firmware.[7]

A continuación se enumeran diferentes tipos de software de sistema.[8]

1. Sistemas operativos 2. Controladores de dispositivo 3. Herramientas de diagnóstico 4. Herramientas de Corrección y Optimización 5. Servidores 6. Utilidades

2.2 Software de Programación.

El software de programación es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica.

Page 13: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 13

A continuación se enumeran diferentes tipos de software de programación

1. Editores de texto 2. Compiladores 3. Intérpretes 4. Enlazadores 5. Depuradores 6. Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas,

usualmente en un entorno visual, de forma que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).[9]

2.3 Software de Aplicación.

Software de aplicación es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios.

A continuación se enumeran diferentes tipos de programación; en esta lista se entrara más a fondo el número 7 en el capitulo siguiente.

1. Aplicaciones de Sistema de control y automatización industrial 2. Aplicaciones ofimáticas 3. Software educativo 4. Software empresarial 5. Bases de datos 6. Telecomunicaciones (p.ej. internet y toda su estructura lógica) 7. Videojuegos 8. Software médico 9. Software de Cálculo Numérico 10. Software de Diseño Asistido (CAD) 11. Software de Control Numérico (CAM)

Page 14: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 14

Figura 2.1 Aplicaciones para el usuario final

La Figura 2.1 muestra la ubicación y relación que tienen estas aplicaciones para con el usuario final, y con otros programas informáticos existentes.

Otros ejemplos de programas de aplicación pueden ser: programas de comunicación de datos, Multimedia, presentaciones, diseño gráfico, cálculo, finanzas, correo electrónico, compresión de archivos, presupuesto de obras, gestión de empresas, etc.[10]

Page 15: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 15

CAPITULO III LOS VIDEOJUEGOS

“Jugar con videojuegos implica poner en marcha muchas de nuestras capacidades y habilidades, necesitamos concentración, atención, control, y mucha, pero mucha emoción.”[11] Un videojuego va mucho más allá de la realidad virtual trasciende hasta el mudo real, un videojuego es más que una distracción, es un estilo de vida, que nos permite llevar nuestras habilidades mas allá de lo real hasta llegar al punto de ser imbatibles.

3.1 CONCEPTO

Los Videojuegos son programas informáticos diseñados para el entretenimiento que se puede utilizar de varios soportes como las consolas y ahora en la actualidad en los teléfonos móviles.[12]

3.2 Origen

Durante bastante tiempo ha sido complicado señalar cuál fue el primer videojuego, principalmente debido a las múltiples definiciones que de este se han ido estableciendo, pero se puede considerar como primer videojuego el Nought and crosses, también llamado OXO, desarrollado por Alexander S. Douglas en 1952. El juego era una versión computarizada del tres en raya que se ejecutaba sobre la EDSAC (ordenador de la época) y permitía enfrentar a un jugador humano contra la máquina. [13]

Fig. 3.1 Imagen del juego Nought and crosses.

Page 16: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango

Gustavo Higareda Soto

En 1958 William Higginbotham creó, sirviéndose de un programa para ede trayectorias y un osciloscopio, entretenimiento de los visitantes del Cuatro años más tarde Steve Russell, un estudiante del Instituto de Tecnología de Massachussets, dedicó seis meses a crear un juego para computadora usando gráficos vectoriales: Spacewar!. En este juego, dos jugadores controlaban la dirección y la velocidad de dos naves espaciales que luchaban entre ellas. El videojuego funcionaba sobre un PDP1 y fue el primero en tener un cierto éxito aunque apenas fue conocido fuera del ámbito universitario.

Fig.

Fig.

En 1966 Ralph Baer empezó a desarrollar junto a Albert Maricon y Ted Dabney un proyecto de videojuego llamado doméstico. Este proyecto evolucionaría hasta convertirse en la Magnavox Odyssey, el primer sistema doméstico de videojuegos lanzado en 1972 que se conectaba a la televisión y que permitía jugar a varios juegos pregrabados.

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

En 1958 William Higginbotham creó, sirviéndose de un programa para ede trayectorias y un osciloscopio, Tennis for Two: un simulador de tenis de mesa para entretenimiento de los visitantes del Brookhaven National Laboratory. Cuatro años más tarde Steve Russell, un estudiante del Instituto de Tecnología de

, dedicó seis meses a crear un juego para computadora usando gráficos . En este juego, dos jugadores controlaban la dirección y la

velocidad de dos naves espaciales que luchaban entre ellas. El videojuego funcionaba y fue el primero en tener un cierto éxito aunque apenas fue conocido

fuera del ámbito universitario. [13]

Fig. 3.2 Imagen del juego Tennis for Two

Fig. 3.3 Imagen del juego Spacewar!

En 1966 Ralph Baer empezó a desarrollar junto a Albert Maricon y Ted Dabney un proyecto de videojuego llamado Fox and Hounds dando inicio al videojuego doméstico. Este proyecto evolucionaría hasta convertirse en la Magnavox Odyssey, el primer sistema doméstico de videojuegos lanzado en 1972 que se conectaba a la televisión y que permitía jugar a varios juegos pregrabados. [13]

Ingeniería en Sistemas Computacionales

Página 16

En 1958 William Higginbotham creó, sirviéndose de un programa para el cálculo : un simulador de tenis de mesa para

Cuatro años más tarde Steve Russell, un estudiante del Instituto de Tecnología de , dedicó seis meses a crear un juego para computadora usando gráficos

. En este juego, dos jugadores controlaban la dirección y la velocidad de dos naves espaciales que luchaban entre ellas. El videojuego funcionaba

y fue el primero en tener un cierto éxito aunque apenas fue conocido

En 1966 Ralph Baer empezó a desarrollar junto a Albert Maricon y Ted Dabney icio al videojuego

doméstico. Este proyecto evolucionaría hasta convertirse en la Magnavox Odyssey, el primer sistema doméstico de videojuegos lanzado en 1972 que se conectaba a la

Page 17: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 17

La ascensión de los videojuegos llegó con la máquina recreativa Pong, muy similar al Tennis for Two pero utilizada en lugares públicos: bares, salones recreativos, aeropuertos, etc. El sistema fue diseñado por Al Alcorn para Nolan Bushnell en la recién fundada Atari. Space Invaders se presentó en 1972 y fue la piedra angular del videojuego como industria. Durante los años siguientes se implantaron numerosos avances técnicos en los videojuegos (destacando los microprocesadores y los chips de memoria), aparecieron en los salones recreativos juegos como Space Invaders (Taito) o Asteroids (Atari) y sistemas domésticos como el Atari 260. [13]

Fig. 3.4 Imagen del juego Pong

“William Higginbotham, Alexander S. Douglas, Steve Russell, Ralph Baer, Al Alcorn; Fueron los pioneros en esta gran industria llamada videojuegos a pesar de las limitaciones tecnológicas ni siquiera ellos se imaginaban lo que pasaría después de 50 años de haber sido creado un video juego utilizando una computadora de ese tiempo; con la creación de nuevos procesadores esta industria fue creciendo con gran auge ya que hubo una transición, ya que la visualización de un videojuego era en una dimensión en la actualidad está en tres dimensiones”.

A continuación se muestra la transición de que se está hablando.

A principios de los años 90 las videoconsolas dieron un importante salto técnico gracias a la competición de la llamada "generación de 16 bits" compuesta por la Mega Drive, la Super Famicom de Nintendo (cuyo nombre fue cambiado en occidente, pasando a ser Super Nintendo Entertainmet System "SNES“), la PC Engine de NEC, conocida como Turbografx en occidente y la CPS Changer de (Capcom).

Junto a ellas también apareció la Neo Geo (SNK) una consola que igualaba las prestaciones técnicas de un arcade pero demasiado cara para llegar de forma masiva a los hogares. Esta generación supuso un importante aumento en la cantidad de jugadores y la introducción de tecnologías como el CDROM, además de una importante evolución dentro de los diferentes géneros de videojuegos, principalmente gracias a las nuevas capacidades técnicas.

Page 18: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 18

Mientras tanto diversas compañías habían comenzado a trabajar en videojuegos con entornos tridimensionales, principalmente en el campo de los PC, obteniendo diferentes resultados desde las "2D y media" de Doom, 3D completas de 4D Boxing a las 3D sobre entornos prerenderizados de Alone in the Dark.

Referente a las ya antiguas consolas de 16 bits, su mayor y último logro se produciría en la SNES mediante la tecnología 3D de prerenderizados de SGI, siendo su máxima expresión juegos como Donkey Kong Country y Killer Instinct. También surgió el primero juego poligonal en consola, la competencia de la SNES, MegaDrive, lanzo el Virtual Racing, que tuvo un gran éxito ya que marco un antes y un después en los juegos 3D en consola. [13]

Rápidamente los videojuegos en 3D fueron ocupando un importante lugar en el mercado, principalmente gracias a la llamada "generación de 32 bits" en las videoconsolas: Sony PlayStation, Sega Saturn (que tuvo discretos resultados fuera de Japón); y la "generación de 64 bits" en las videoconsolas: Nintendo 64 y Atari jaguar. En cuanto a los PC, se crearon las aceleradoras 3D que permitían un gran salto en la capacidad gráfica de los juegos.[13] A continuación se muestra en tabla las diferentes consolas que se han creado a lo largo de la historia.

Generación Año Bits Consolas

Primera generación

(1972/1977) n/a

Magnavox Odyssey, Magnavox Odyssey 100, Magnavox Odyssey 200, Atari Pong, Coleco Telestar

Segunda generación

(1976/1984) n/a

Fairchild Channel F, Atari 2600, Videopac G7000, Intellivision, Atari 5200, Vectrex, Arcadia 2001, ColecoVision, Atari 5200, TV-Game 6, Sega SG-1000

Tercera generación

(1983/1992) 8 bits

Atari 7800, Nintendo Entertainment System, Sega Master System, PV-1000, Epoch Cassette Vision, Supergame VG 3000

Cuarta generación

(1988/1996) 16 bits

Sega Mega Drive, Neo-Geo, Super Nintendo Entertainment System, TurboGrafx-16/PC Engine, CD-TV, CD-i

Quinta generación

(1993/2002) 32 bits y 64 bits

3DO, AmigaCD32, Atari Jaguar, Sega Saturn, Virtual Boy, PlayStation, Nintendo 64, Apple Pippin, Casio Loopy, Neo Geo CD, PC-FX, Playdia, FM Towns Marty

Page 19: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 19

Sexta generación

(1998/2006) 128 bits

Sega Dreamcast, PlayStation 2, Xbox y Nintendo GameCube

Séptima generación

(2005/) Hercio(next-gen)

Xbox 360, PlayStation 3 y Wii

Tabla 3.1 Diferentes generaciones de las consolas

3.3 Géneros

3.3.1 ¿Definición de género en un videojuego?

Un género de videojuego designa un conjunto de juegos que poseen una serie de elementos comunes. A lo largo de la historia de los videojuegos aquellos elementos que han compartido varios juegos han servido para clasificar como un género a aquellos que les han seguido, de la misma manera que ha pasado con la música o el cine. [13]

Los videojuegos se pueden clasificar como un género u otro dependiendo de su representación gráfica, el tipo de interacción entre el jugador y la máquina, la ambientación y su sistema de juego, siendo este último el criterio más habitual a tener en cuenta. [13]

3.3.2 Diferentes Géneros

La siguiente lista de géneros de videojuegos va acompañada de una breve descripción y algún ejemplo de cada uno. Hay que decir que cada vez es más habitual que un juego contenga elementos de diversos géneros, cosa que hace difícil su clasificación. [13]

Acción

Acción o "juegos de pelea a progresión" son juegos similares a los de lucha, con la diferencia de que en este caso los jugadores deben combatir con un gran número de individuos mientras avanzan a lo largo de varios niveles. En los tipos de accion suele ser posible jugar dos o más personas a la vez de forma cooperativa para facilitar el progreso. [13]

Page 20: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 20

Fig. 3.5 Imagen de juego de acción “Tomb raider”

Lucha

Los juegos de lucha, como indica su nombre, recrean combates entre personajes controlados tanto por un jugador como por la computadora. El jugador ve a los combatientes desde una perspectiva lateral, como si se tratase de un espectador. Este tipo de juegos ponen especial énfasis en las artes marciales, reales o ficticias (generalmente imposibles de imitar), u otros tipos de enfrentamientos sin armas como el boxeo o la lucha libre. [13]

Page 21: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 21

Fig. 3.6 Imagen de juego de lucha “The Kings of Fighters”

Juegos de acción en primera persona

En los juegos de acción en primera persona (Shoot'em UP), las acciones básicas son mover al personaje y usar un arma, un arma se anuncia en la pantalla de primera plana y el jugador puede interactuar con éste. Esta perspectiva tiene por meta dar la impresión de estar detrás de la mano y así permitir una identificación fuerte (Perspectiva de primera persona). Las gráfica en tres dimensiones aumentan esta impresión. [13]

Fig. 3.7 Imagen de juego de accion en primera persona “HALO”

Page 22: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 22

Acción en tercera persona

Los juegos de disparos en tercera persona se basan en el alternamiento entre disparos y pelea o interacción con el entorno, pero a diferencia de los juegos de mira (primera persona), se juega con un personaje visto desde atrás y en ocasiones, desde una perspectiva isométrica. Estos juegos sacrifican la precisión a la ganancia de una gran libertad de movimientos. [13]

Fig. 3.8 Imagen de juego de acción en tercera persona “Gears of Wars”

Infiltración

Normalmente los juegos de infiltración aparecen como un subgénero de los juegos de disparos, aunque podemos encontrar juegos como Commandos, que se puede clasificar a la vez como juego de estrategia y de infiltración. [13]

Plataformas

En los juegos de plataformas el jugador controla a un personaje que debe avanzar por el escenario evitando obstáculos físico, ya sea saltando, escalando o agachándose. Además de las capacidades de desplazamiento como saltar o correr, los personajes de los juegos de plataformas poseen frecuentemente la habilidad de realizar ataques que les permiten vencer a sus enemigos, convirtiéndose así en juegos de acción. Inicialmente los personajes se movían por niveles con un desarrollo horizontal, pero con la llegada de los gráficos 3D este desarrollo se ha ampliado hacia todas las direcciones posibles. A partir del sistema de cambio de perspectiva (o movimiento de "cámara") se ha permitido una verdadera libertad de movimiento en tales ambientes. [13]

Page 23: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 23

Árcade

Los juegos de árcade, se caracterizan por la simplicidad de acción rápida de jugabilidad, esto obtuvo la gloria en la época de 1980. No requiere historia, solo juegos largos o repetitivos. [13]

Videojuegos de deportes

Sport

Los juegos de Deporte son aquellos que simulan juegos de deporte real, entre ellos encontramos, golf, tenis, futbol, hockey, juegos olímpicos, etc. Una gran mayoría entre ellos, notablemente Tony Hawk's Pro Skater. El participante directamente lo juega a través del control. El propósito es el mismo que el deporte original, solo que a veces varía otros agregados. [13]

Fig. 3.9 Imagen de juego de deportes “Tony hawk’s Pro Skater”

Page 24: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 24

Carreras

Principalmente son juegos que se dedican a comenzar de un punto y llegar a una meta antes que los contrincantes. Juegos así se han desarrollado de su forma común en vehículos, hasta otras formas como juego de plataformas. La idea principalmente es competir en llegar primero, y algunas veces se suelte ampliar este concepto, originando herramientas y trampas para la carrera. [13]

Fig. 3.10 Imagen de juego de carreras “Rush”

Agilidad mental

Estos son juegos donde tienes que pensar y agilizar el pensamiento. El objetivo aquí es resolver ejercicios con dificultad progresiva para desarrollar la habilidad mental. [13]

Educación

Aunque antiguamente solo se ha usado para juegos infantiles, los juegos educativos son aquellos que enseñan mientras promueven diversión o entretenimiento (Didactismo). A diferencia de una enciclopedia, trata de entretener mientras se memoriza conceptos o información. En algunos casos se duda de que sea un género de video juego, ya que el concepto no está muy desarrollado, ya que en cierto caso estos juegos fallan enseñando más que leer y aprender que darlo a la práctica. [13]

Page 25: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 25

Aventura

En estos, el jugador utiliza el teclado para introducir órdenes como “coger la cuerda” o “ir hacia el oeste” y el ordenador describe lo que pasa. Cuando el uso de gráficos se generalizó, los juegos de aventura textuales dejaron paso a los visuales (por ejemplo, con imágenes del lugar presente) que substituyeron de este modo las descripciones por texto, que se habían vuelto casi superfluas. Estos juegos de aventura con gráficos seguían, no obstante, sirviéndose de la introducción de texto. Además, sigue existiendo una comunidad de autores y jugadores activos de ficción interactiva, aunque la participación de grandes empresas comerciales es más bien rara.[13]

Gráfica

A comienzos de los 1990, el uso creciente del ratón dio pie a los juegos de aventura de tipo "Point and click", también llamados aventura gráfica, en los que ya no se hacía necesaria la introducción de comandos. El jugador puede, por ejemplo, hacer clic con el puntero sobre una cuerda para recogerla.[13]

“Aun faltan muchos géneros mas ya que es un tema muy extenso, pero lo que se toma en cuenta que los géneros faltantes son ramificaciones de los anteriormente descritos”.

3.4 Los Videojuegos compatibles con Software Libre

Como ya se definió en paginas anteriores los conceptos de Software Libre y Videojuegos, es obvio que es compatible ya que un video juegos es un programa; y el software está diseñado por programadores.

Lo mejor de que un videojuego sea libre es que se pueden encontrar muchas diferentes versiones de un solo juego llamadas versiones “beta” este tipo de versiones son versiones modificadas que no salen de la trama o historia del videojuego en cuestión lo que cambia son imágenes modos de juego, creando así una mejoría.

Page 26: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 26

3.4.1 ¿Qué ofrece el software libre para la programación de videojuegos?

El software libre posee casi todas las herramientas que se podrían necesitar y más, pero en un mundo donde la mayoría utiliza Windows es muy difícil pero siempre hay herramientas para hacerlo.

A continuación se mostrara una lista de gestores de videojuegos. [14]

• Atari Lite-C: Es un lenguaje de programación enfocado en los videojuegos desarrollado por la Conitec en colaboración con Atari. Esta pensado para desarrollar rápida y fácilmente gráficos o mundos virtuales como en los juegos 2D y 3D. Cuenta con modelaje de objetos en 3D, detección de colisiones, animaciones, multitasking, manejo de sonidos, soporte a funciones de DirectX9 entre muchas cosas más. Unas pocas líneas de código en Lite-C son capaces de lograr el mismo resultado que cientos de líneas en C/C++.

• IndieLib: Es una especie de “engine” o motor para desarrollo de juegos basado en C++ y enfocada al desarrollo de juegos 2D sin embargo soporta muchas funciones de 3D. Es muy completa, con un desarrollo muy activo y foros de soporte muy útiles con demos y herramientas extras.

• Platform Studio: Simple pero a la vez poderosa herramienta para crear juegos de plataforma en 2D. Esta más enfocado en la creación de gráficos y niveles que en escribir y depurar código.

• Adventure Game Studio y AGAST: Te facilitan la creación de aventuras del tipo “point and click” como las populares de Sierra y LucasArt de comienzos de los 90s. Si eres nostálgico o te gusta este genero de videojuegos es la herramienta para ti.

• GameMaker: Esta es la herramienta si quieres desarrollar un juego sin pasar horas programando, prácticamente todo se hace arrastrando y soltando objetos, los juegos que puedes crear son sencillo pero dependiendo de tu creatividad puede ser muy entretenidos, son el tipo de juegos enfocados al jugador casual estilo la Wii. Cuenta con una comunidad Hispana donde se puede conseguir soporte en nuestro idioma y un blog que muestra algunas creaciones.

Page 27: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 27

Capítulo IV El software libre orientado a los videojuegos

4.1 Ventajas de un videojuego con código abierto

A continuación se muestra un listado de ventajas de tener código abierto en videojuegos.

• Se obtienen sin costo alguno.

• Código abierto.

• Comunidad (ayuda y pertenecer).

• Programas fáciles de obtener e instalar.

• Aplicaciones pequeñas.

• Libertad y Flexibilidad.

• Portabilidad.

• Reaprendizaje [15]

Pero como toda ventaja tiene su desventaja

• Mucha flexibilidad puede ser frustrante.

• No siempre son tan completas.

• Filosofías (poca atención al usuario).

• Hay que animarse a usarlas.

• Versiones “beta” inestables.

• Poca Industria (todavía)[15]

Pero estas desventajas son mínimas ya que los usuarios están acostumbrados a utilizar software privativo y para una persona que no está acostumbrada a lenguajes de programación le es más difícil aplicar algún tipo de software libre.

Page 28: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 28

4.2 Código fuente de juegos en diferentes lenguajes

4.2.1- java

En qué consiste el lenguaje java (definición).

Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.[16]

4.2.2 Cuatro en raya

Reglas

El tablero de juego consta de 7x6 campos que deben ser rellenados desde abajo hacia arriba. Los campos quedan marcados por el color del jugador que ha realizado el movimiento. En lo alto de cada columna una flecha de color indica dónde se ha realizado el último movimiento.

Nota: Para cada una de las siguientes figuras (4.1 a 4.4) el código fuente se presenta en los anexos 1 al 3; así mismo si se desea ver el código fuente completo se encuentra en el anexo 4.

Page 29: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 29

Fig. 4.1 Imagen de la pantalla principal del juego cuatro en raya

Page 30: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 30

Fig 4.2 Imagen del juego cuatro en raya “iniciando a jugar”

Page 31: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 31

Fig. 4.3 Imagen del juego cuatro en raya “La maquina gano”.

Page 32: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 32

Fig. 4.4 Imagen del juego cuatro en raya “Gano el jugador humano”.

Page 33: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 33

4.2.3 Buscaminas

Reglas

Las casillas que no han sido aún inspeccionadas tienen oculto su contenido. Inicialmente todas las casillas están ocultas. El usuario va escogiendo casillas para inspeccionar. Si el jugador destapa una casilla con mina pierde el juego. Si, por el contrario, logra levantar todas las casillas libres sin pisar ninguna mina, gana. Si la casilla no tiene mina pueden darse dos posibilidades. La primera es que la casilla sea vecina de alguna mina. En ese caso, la casilla se considera inspeccionada y se muestra el número de casillas vecinas que tienen minas. Se consideran vecinas las casillas adyacentes tanto vertical, horizontal como diagonalmente. Si la casilla inspeccionada no tiene minas alrededor, las casillas vecinas se van destapando automáticamente. Este proceso se repite para las casillas adyacentes que tampoco tienen minas alrededor. Se para de levantar casillas cuando el área que se está destapando acaba rodeada de casillas que sí tienen minas a su lado. En la figura 4.5 se ve el tablero antes y después de inspeccionar la casilla (2, 2).

Fig. 4.5 Juego buscaminas

Nota: para cada una de las figuras siguientes (4.6 a 4.8) el código fuente se resenta en los anexos 5 al 7; asi como el código completo se encuentra en el anexo 8.

Page 34: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 34

Fig. 4.6 pantalla principal de “buscaminas”.

Page 35: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 35

Fig. 4.7 pantalla del “buscaminas” ya iniciado.

Page 36: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 36

Fig. 4.8 pantalla del “buscaminas” ya finalizado.

Page 37: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 37

realis ta

cual itativaencuesta, teór ic o

Transv er sal

Rec opilac ión

de informac ión

(ar tículos científic os) , encues tas

CAPITULO V Metodología.

La metodología que se utilizó para llevar a cabo este proyecto de investigación fue a través de recopilación de información, artículos y la realización de una encuesta para el capítulo de resultados.

Se llevo a cabo una investigación transversal de tipo cualitativo realista.

Figura 5.1 “Modelo de cebolla aplicado al proyecto

Page 38: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 38

CAPITULO VI Resultados.

Los resultados siguientes son con base en una población de de cien personas de las carreras de Ingeniería en sistemas Computacionales e Informática del Instituto Tecnológico de Durango, Mostrando los siguientes resultados; cabe destacar que los resultados obtenidos no fueron suficientemente satisfactorios ya que son muy pocas las personas que programan fuera de contexto escolar.

Grafica 6.1. “Sabe Lo que es el Software Libre”

80%

20%

Sabe lo que es el software Libre.

Si

No

Page 39: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 39

En la gráfica siguiente sobre pasa el número de cien personas encuestadas ya que al momento de realizar la encuesta se obtuvieron diversos resultados en esta pregunta.

Gráfica 6.2. “Que Programas ha manejado de Software Libre”

0,00

10,00

20,00

30,00

40,00

50,00

60,00

Java SQL Sistemas Operativos

Aplicaciones Ninguno No tiene idea de S.L

Qué programas de Sofware Libre ha

manejado

Page 40: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 40

Grafica 6.3. “Usted ha Creado algún Software Libre”

En la grafica anterior de las personas que han creado algún software libre los resultados obtenidos fueron:

Dato Programa desarrollado Lenguaje 1 Editor de audio. JAVA

2 Sistema para un video club. JAVA

3 Programa para Horarios. UB.Net

4 Calculadora, Juego cuatro en Ra ya, buscaminas.

JAVA

Tabla. 6.1.”Resultados de las personas que si han creado alguna aplicación software libre”

4%

96%

Usted ha creado alguna aplicación con

Sofware Libre

Si

No

Page 41: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango

Gustavo Higareda Soto

En esta grafica nos muestra las ventajas que las personas encuestadas creen sobre el software libre así mismo las respuestasCapitulo 1.

Grafica 6.4. “Que ventajas desde su punto de vista tiene el software Libre”

Nota: en páginas anteriores se dice que fueron un total de cien personas encuestadas aquí se rebasa ese número ya que las diferentes personas dieron dos o más respuestas ya que la realización de la encuesta fue abierta.

0

5

10

15

20

25

30

35

Es gratuito Modificable

Que ventajas desde su punto de vista tiene el

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

En esta grafica nos muestra las ventajas que las personas encuestadas creen sobre el software libre así mismo las respuestas que se encontraron coinciden con lo investigado en el

Grafica 6.4. “Que ventajas desde su punto de vista tiene el software Libre”

: en páginas anteriores se dice que fueron un total de cien personas encuestadas aquí se las diferentes personas dieron dos o más respuestas ya que la

realización de la encuesta fue abierta.

Modificable Accesible No se

Que ventajas desde su punto de vista tiene el

Software Libre

Ingeniería en Sistemas Computacionales

Página 41

En esta grafica nos muestra las ventajas que las personas encuestadas creen sobre el ncontraron coinciden con lo investigado en el

Grafica 6.4. “Que ventajas desde su punto de vista tiene el software Libre”

: en páginas anteriores se dice que fueron un total de cien personas encuestadas aquí se las diferentes personas dieron dos o más respuestas ya que la

Que ventajas desde su punto de vista tiene el

Page 42: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 42

CONCLUSIONES

En este proyecto de investigación se pretendió abordar exclusivamente el área de los videojuegos desde su clasificación hasta su desarrollo en base a su código fuente, desde el punto de vista del software libre.

La aportación de este proyecto de investigación hacia mi persona fue el conocer a fondo el software libre más que nada las diferentes aplicaciones de este hacia distintas ramas de la computación.

Para concluir con este proyecto de investigación da pie a seguir investigando, con el propósito de encontrar mejores resultados; como se dijo en el apartado de resultados no se obtuvieron resultados satisfactorios.

Sugiriendo que las próximas investigaciones se den en una comunidad de programadores más amplia de la antes tomada para este proyecto de investigación; buscando resultados satisfactorios, y si es que es la respuesta es afirmativa se proporcione el código fuente y la documentación del trabajo realizado.

Page 43: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 43

ANEXOS

Anexo 1

JButton Comienza = new JButton ("Recomenzar");

JButton btnModo = new JButton ("Dos Jugador");

JButton Salir = new JButton ("Salir");

Label Vez = new Label ("Turno:");

Label Quien = new Label ("Patetico Humano1");

Label Victorias = new Label ("Victorias: 0");

Label Derrotas = new Label ("Derrotas: 0");

Label Jugadas = new Label ("Jugadas: 0");

Esta parte de código nos muestra lo que contiene la pantalla principal.

Anexo 2

public void PintaCasilla (int x)

{

Graphics g = getGraphics ();

int Resultados [] [] = new int [3] [3];

int result;

int z = 0;

int y;

for (z = 0 ; z < 7 ; z++)

{

if (estados [x] [z] != 0)

{

break;

}

}

Page 44: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 44

if (z == 0)

y = 7;

else

y = z - 1;

if ((y == 6 && estados [x] [y] == 0) || ((y < 6) && (estados [x] [y + 1] != 0) && (estados [x] [y] == 0)))

{

if (Turno % 2 == 0)

{

g.setColor (Color.red);

estados [x] [y] = -1;

Quien.setText ("Maquina");

if (!unjugador)

Quien.setText ("Patetico Humano 2");

}

else

{

g.setColor (Color.blue);

estados [x] [y] = 1;

Quien.setText ("Pattico Humano 1");

}

En esta parte de código se colorean las casillas de los jugadores, azul para el jugador humano y rojo para la maquina.

Anexo 3

public void Ganaste (int jugador)

{

String s;

Thread tiempo = new Thread ();

Page 45: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 45

if (jugador == (- 1))

{

victorias++;

if (unjugador)

{

s = "GANASTE JUGADOR HUMANO";

Victorias.setText ("Victorias: " + Integer.toString (victorias));

Derrotas.setText ("Derrotas: " + Integer.toString (derrotas));

}

else

{

s = "GANASTE JUGADOR 1";

Victorias.setText ("Victorias J1: " + Integer.toString (victorias));

Derrotas.setText ("Victorias J2: " + Integer.toString (derrotas));

}

}

else

{

derrotas++;

if (unjugador)

{

s = "GAN LA MQUINA!!!";

Victorias.setText ("Victorias: " + Integer.toString (victorias));

Derrotas.setText ("Derrotas: " + Integer.toString (derrotas));

}

En esta parte de código nos muestra si gano la maquina o el jugador.

Page 46: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 46

Anexo 4

Código completo.

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class CuatroRaya extends Frame implements MouseListener, ActionListener

{

JButton Comienza = new JButton ("Recomenzar");

JButton btnModo = new JButton ("Dos Jugador");

JButton Salir = new JButton ("Salir");

Label Vez = new Label ("Turno:");

Label Quien = new Label ("Pattico Humano1");

Label Victorias = new Label ("Victorias: 0");

Label Derrotas = new Label ("Derrotas: 0");

Label Jugadas = new Label ("Jugadas: 0");

int estados [] [] = new int [7] [7];

int Turno;

int victorias;

int derrotas;

boolean jugando;

boolean unjugador;

Panel PanelPrincipal = new Panel ();

CuatroRaya ()

{

super ("Cuatro en Raya Hatakegus");

int x, y;

setLayout (new GridLayout (20, 5));

addMouseListener (this);

Page 47: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 47

Comienza.addMouseListener (this);

Salir.addMouseListener (this);

btnModo.addActionListener (this);

PanelPrincipal.add (Vez);

PanelPrincipal.add (Quien);

PanelPrincipal.add (Victorias);

PanelPrincipal.add (Derrotas);

PanelPrincipal.add (Jugadas);

PanelPrincipal.add (Comienza);

PanelPrincipal.add (btnModo);

add (PanelPrincipal);

victorias = 0;

derrotas = 0;

jugando = false;

unjugador = true;

addWindowListener (new WindowAdapter ()

{

public void windowClosing (WindowEvent we)

{

System.exit (0);

}

}

);

}

public void PintaCasilla (int x)

{

Graphics g = getGraphics ();

int Resultados [] [] = new int [3] [3];

int result;

int z = 0;

Page 48: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 48

int y;

for (z = 0 ; z < 7 ; z++)

{

if (estados [x] [z] != 0)

{

break;

}

}

if (z == 0)

y = 7;

else

y = z - 1;

if ((y == 6 && estados [x] [y] == 0) || ((y < 6) && (estados [x] [y + 1] != 0) && (estados [x] [y] == 0)))

{

if (Turno % 2 == 0)

{

g.setColor (Color.red);

estados [x] [y] = -1;

Quien.setText ("Maquina");

if (!unjugador)

Quien.setText ("Pattico Humano 2");

}

else

{

g.setColor (Color.blue);

estados [x] [y] = 1;

Quien.setText ("Pattico Humano 1");

}

g.fillOval ((x * 90) + 20, (y * 80) + 100, 70, 70);

Page 49: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 49

Turno++;

Jugadas.setText ("Jugada: " + Integer.toString (Turno));

if (CompruebaCasilla (x, y, Resultados))

Ganaste (estados [x] [y]);

else

{

if (Turno % 2 != 0)

{

if (unjugador)

{

result = JuegaIA (0);

if (result >= 10)

{

System.out.println ("la IA decidi: " + Integer.toString ((result / 10) - 1));

PintaCasilla ((result / 10) - 1);

}

else

{

System.out.println ("la IA decidi: " + Integer.toString (result));

PintaCasilla (result);

}

}

}

}

}

}

public boolean CompruebaCasilla (int posx, int posy, int cuantas [] [])

{

int jugador = estados [posx] [posy];

int x, y;

Page 50: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 50

//System.out.println("entr en Compruebacasilla el Jugador: " + jugador + " y la casilla x: "+Integer.toString(posx) + " y: "+Integer.toString(posy));

for (x = (- 1) ; x < 2 ; x++)

for (y = (- 1) ; y < 2 ; y++)

if (x != 0 || y != 0)

{

cuantas [x + 1] [y + 1] = CompruebaLinea (posx, posy, x, y);

if (cuantas [x + 1] [y + 1] >= 4)

return true;

}

return false;

}

public int CompruebaLinea (int posx, int posy, int x, int y)

{

int tempx, tempy;

int val;

int cuantas = 1;

int jugador = estados [posx] [posy];

tempx = posx + x;

tempy = posy + y;

while ((tempy >= 0 && tempx >= 0) && (tempx < 7 && tempy < 7))

{

if (estados [tempx] [tempy] == jugador)

{

cuantas++;

tempx += x;

tempy += y;

}

else

tempx = (- 1);

Page 51: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 51

}

tempx = posx - x;

tempy = posy - y;

while ((tempy >= 0 && tempx >= 0) && (tempx < 7 && tempy < 7))

{

if (estados [tempx] [tempy] == jugador)

{

cuantas++;

tempx -= x;

tempy -= y;

}

else

tempx = (- 1);

}

return cuantas;

}

public int JuegaIA (int Nveces)

{

int temp;

int ValoresEl [] [] = new int [3] [3];

int ValoresYo [] [] = new int [3] [3];

int PuntosCasilla [] = new int [7];

int x, y, casilla;

int z;

boolean mayor;

// System.out.println("entr en JuegaIA, Turno: " + Integer.toString(Turno));

//Recorrer cada casilla en busca de la mejor opcin

for (casilla = 0 ; casilla < 7 ; casilla++)

{

//calculo la y actual para cada casilla

Page 52: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 52

z = 0;

while (estados [casilla] [z] == 0)

{

z++;

if (z == 7)

break;

}

if (z == 0)

y = 6;

else

{

y = z - 1;

// System.out.println("IA analizando x: " + Integer.toString(casilla) + " y: "+Integer.toString(y));

//Una casilla recibe puntos por altura, un factor semialeatorio, para evitar

//bucles infinitos

PuntosCasilla [casilla] += y;

//otro factor aleatorio para evitar atascos

PuntosCasilla [casilla] += Nveces % (casilla + 1);

//Obtengo los valores para esa jugada simulando la colocación de una ficha

estados [casilla] [y] = 1;

CompruebaCasilla (casilla, y, ValoresYo);

estados [casilla] [y] = -1;

//Se obtiene los resultados que se tendra con esa jugada simulando

CompruebaCasilla (casilla, y, ValoresEl);

estados [casilla] [y] = 0;

for (x = 0 ; x < 3 ; x++)

for (z = 0 ; z < 3 ; z++)

{

Page 53: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 53

if (ValoresYo [x] [z] >= 4)

PuntosCasilla [casilla] += 1000;

if (ValoresEl [x] [z] >= 4)

PuntosCasilla [casilla] += 100;

if (ValoresYo [x] [z] == 3 && Nveces < 3)

{

estados [casilla] [y] = 1;

System.out.println ("Llamando a IA Recursiva en la vez: " + Nveces);

if (JuegaIA (Nveces + 1) > 10)

PuntosCasilla [casilla] += 90;

else

PuntosCasilla [casilla] += 5;

estados [casilla] [y] = 0;

}

if (ValoresEl [x] [z] == 3 && Nveces < 3)

{

estados [casilla] [y] = (- 1);

System.out.println ("Llamando a IA Recursiva en la vez: " + Nveces);

if (JuegaIA (Nveces + 1) > 10)

PuntosCasilla [casilla] += 100;

else

PuntosCasilla [casilla] += 10;

estados [casilla] [y] = 0;

}

if (ValoresYo [x] [z] == 2)

{

PuntosCasilla [casilla] += 5;

}

}

//Compruebo la casilla de encima Tanto de l como yo

Page 54: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 54

if (y > 0)

{

estados [casilla] [y - 1] = (1);

CompruebaCasilla (casilla, y - 1, ValoresYo);

estados [casilla] [y - 1] = (- 1);

CompruebaCasilla (casilla, y - 1, ValoresEl);

estados [casilla] [y - 1] = 0;

}

//valoro si el gana poniendo encima de mi o si me jodo

for (x = 0 ; x < 3 ; x++)

for (z = 0 ; z < 3 ; z++)

{

//Me jodera una de victoria y eso no mola

if (ValoresYo [x] [z] >= 4)

PuntosCasilla [casilla] -= 10;

//Le dara la victoria y eso solo lo puedo permitir

//si gano con esa jugada(o sea con 1000 de antes)

if (ValoresEl [x] [z] >= 4)

PuntosCasilla [casilla] -= 100;

}

}

}

//Tenemos los tanteos de cada casilla

//as que vamos a ver cual tiene mayor puntuacin y colocar en ella

z = 0;

for (y = 0 ; y < 7 ; y++)

{

// System.out.println("La opcin: "+Integer.toString(y) + " Recibe "+Integer.toString(PuntosCasilla[y])+ " Puntos");

mayor = true;

Page 55: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 55

for (x = 0 ; x < 7 ; x++)

{

if (PuntosCasilla [y] < PuntosCasilla [x])

mayor = false;

}

if (mayor == true)

{

if (z != 0)

z = y * 10;

else

z = y;

}

}

System.out.println ("Final de JuegaIA");

return (z);

}

/***************************HASTA AQU LA IA***************************/

public void Ganaste (int jugador)

{

String s;

Thread tiempo = new Thread ();

if (jugador == (- 1))

{

victorias++;

if (unjugador)

{

s = "GANASTE JUGADOR HUMANO";

Victorias.setText ("Victorias: " + Integer.toString (victorias));

Derrotas.setText ("Derrotas: " + Integer.toString (derrotas));

Page 56: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 56

}

else

{

s = "GANASTE JUGADOR 1";

Victorias.setText ("Victorias J1: " + Integer.toString (victorias));

Derrotas.setText ("Victorias J2: " + Integer.toString (derrotas));

}

}

else

{

derrotas++;

if (unjugador)

{

s = "GAN LA MQUINA!!!";

Victorias.setText ("Victorias: " + Integer.toString (victorias));

Derrotas.setText ("Derrotas: " + Integer.toString (derrotas));

}

else

{

s = "GANASTE JUGADOR 2";

Victorias.setText ("Victorias J1: " + Integer.toString (victorias));

Derrotas.setText ("Victorias J2: " + Integer.toString (derrotas));

}

}

CuadroDialogo dig = new CuadroDialogo (this, s);

// g.setColor(Color.white);

// g.setFont (new Font ("Impact",10,60));

// g.drawString(100,333,s);

jugando = false;

dig.move (300, 10);

Page 57: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 57

dig.setVisible (true);

try

{

tiempo.sleep (1000);

}

catch (InterruptedException e)

{

}

}

public void paint (Graphics g)

{

int x;

int y;

g.setColor (Color.lightGray);

g.fillRect (1, 1, 650, 690);

g.setColor (Color.white);

g.fillRect (1, 1, 650, 55);

for (x = 0 ; x < 7 ; x++)

for (y = 0 ; y < 7 ; y++)

{

g.fillOval ((x * 90) + 20, (y * 80) + 100, 70, 70);

estados [x] [y] = 0;

}

}

public void ReStart ()

{

Graphics g = getGraphics ();

int x;

int y;

Turno = 0;

Page 58: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 58

jugando = true;

System.out.println ("reestart");

g.setColor (Color.lightGray);

g.fillRect (1, 1, 650, 690);

g.setColor (Color.white);

g.fillRect (1, 1, 650, 50);

for (x = 0 ; x < 7 ; x++)

for (y = 0 ; y < 7 ; y++)

{

g.fillOval ((x * 90) + 20, (y * 80) + 100, 70, 70);

estados [x] [y] = 0;

}

}

public static void main (String [] Args)

{

CuatroRaya a = new CuatroRaya ();

a.pack ();

a.setSize (650, 690);

a.setResizable (false);

a.show ();

}

public void actionPerformed (ActionEvent ae)

{

if (ae.getSource () == btnModo)

{

if (btnModo.getLabel () == "Un Jugador")

{

Victorias.setText ("Victorias: " + Integer.toString (victorias));

Derrotas.setText ("Derrotas: " + Integer.toString (derrotas));

btnModo.setLabel ("Dos Jugadores");

Page 59: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 59

unjugador = true;

}

else

{

Victorias.setText ("Victorias J1: " + Integer.toString (victorias));

Derrotas.setText ("Victorias J2: " + Integer.toString (derrotas));

btnModo.setLabel ("Un Jugador");

unjugador = false;

}

}

}

public void mousePressed (MouseEvent me)

{

int z;

z = me.getX ();

System.out.println ("evento click");

if (jugando)

{

System.out.println ("evento click jugando");

z = (z - 10) / 90;

PintaCasilla (z);

}

if (me.getSource () == Salir)

{

System.exit (0);

}

if (me.getSource () == Comienza)

{

ReStart ();

}

Page 60: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 60

}

public void mouseClicked (MouseEvent me)

{

//Vacio

}

public void mouseEntered (MouseEvent me)

{

//Vacio

}

public void mouseExited (MouseEvent me)

{

//Vacio

}

public void mouseReleased (MouseEvent me)

{

//Vacio

}

}

class CuadroDialogo extends Dialog

{

Button aceptar = new Button ("OK");

Label texto = new Label ();

String cad;

CuadroDialogo (Frame f, String s)

{

super (f, "informacion");

setSize (400, 100);

setResizable (false);

setBackground (Color.white);

texto.setText (s);

Page 61: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 61

add ("North", texto);

add ("South", aceptar);

}

public void paint (Graphics g)

{

g.setColor (Color.white);

g.drawString (cad, 50, 50);

}

public boolean action (Event evt, Object obj)

{

if (evt.target == aceptar)

{

dispose ();

return true;

}

return false;

}

}

Page 62: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 62

Anexo 5

Frame f = new Frame();

PanelBuscaminas panel = new PanelBuscaminas();

f.add(panel);

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we) {

System.exit(0);

}

});

f.setSize(900, 540);

f.show();

}

}

Esta parte de código es la pantalla principal.

Page 63: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 63

Anexo 6

class PanelBuscaminas extends Panel {

Casilla tablero[][];

boolean minas[][];

int maxMinas;

PanelBuscaminas(){

int f,c;

setLayout(new GridLayout(30,50));

tablero = new Casilla[30][50];

minas = new boolean[30][50];

maxMinas = 250;

// creamos los botones y vaciamos la matriz donde

// colocaremos las minas

for(f=0; f<30; f++)

for(c=0; c<50; c++)

{

minas[f][c] = false;

tablero[f][c] = new Casilla("");

Page 64: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 64

add(tablero[f][c]);

tablero[f][c].addActionListener(new AccionBoton(this,f,c));

}

// colocamos minas

for(int n=0; n<maxMinas; n++)

{

do {

f = (int)(Math.random()*30);

c = (int)(Math.random()*50);

}while(minas[f][c]);

minas[f][c] = true;

}

}

}

Esta parte de código nos indica que la casilla seleccionada se vacía con u numero o una mina.

Page 65: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 65

Anexo 7

class AccionBoton implements ActionListener {

PanelBuscaminas pb;

int f, c;

AccionBoton(PanelBuscaminas p,int ff, int cc){

pb = p;

f = ff;

c = cc;

}

public void actionPerformed(ActionEvent ae) {

if(!pb.tablero[f][c].descubierta)

{

pb.tablero[f][c].descubierta = true;

pb.tablero[f][c].setBackground(new Color(170,255,255));

if(pb.minas[f][c])

{

pb.tablero[f][c].setLabel("*");

for(int x=0; x<30; x++)

for(int y=0; y<50; y++)

if(pb.minas[x][y])

{

pb.tablero[x][y].setBackground(new Color(255,50,100));

pb.tablero[x][y].setLabel("*");

}

JOptionPane.showMessageDialog(pb.getParent(), "Lo siento, has perdido");

System.exit(0);

}

else

{

Page 66: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 66

int numMinas = CuentaMinas(f,c);

switch(numMinas){

case 0:

AutoDescubrir(f,c);

break;

default:

pb.tablero[f][c].setLabel(Integer.toString(numMinas));

};

}

int nd = numDescubiertas();

((Frame)pb.getParent()).setTitle("Quedan " + Integer.toString(1500-nd)+" casillas");

if(1500-nd == pb.maxMinas)

{

JOptionPane.showMessageDialog(pb.getParent(), "Muy bien, ya has terminado");

System.exit(0);

}

}

}

En esta parte de código nos dice quien gana si la maquina o el jugador.

Page 67: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 67

Anexo 8

Código Completo.

import java.awt.*;

import java.awt.event.*;

import javax.swing.JOptionPane;

public class Buscaminas {

public static void main(String[] args) {

Frame f = new Frame();

PanelBuscaminas panel = new PanelBuscaminas();

f.add(panel);

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we) {

System.exit(0);

}

});

f.setSize(900, 540);

f.show();

}

}

class PanelBuscaminas extends Panel {

Casilla tablero[][];

boolean minas[][];

int maxMinas;

PanelBuscaminas(){

int f,c;

setLayout(new GridLayout(30,50));

tablero = new Casilla[30][50];

minas = new boolean[30][50];

Page 68: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 68

maxMinas = 250;

// creamos los botones y vaciamos la matriz donde

for(f=0; f<30; f++)

for(c=0; c<50; c++)

{

minas[f][c] = false;

tablero[f][c] = new Casilla("");

add(tablero[f][c]);

tablero[f][c].addActionListener(new AccionBoton(this,f,c));

}

// colocamos minas

for(int n=0; n<maxMinas; n++)

{

do {

f = (int)(Math.random()*30);

c = (int)(Math.random()*50);

}while(minas[f][c]);

minas[f][c] = true;

}

}

}

class Casilla extends Button {

boolean descubierta;

Casilla(String t){

super.setLabel(t);

setBackground(new Color(200,200,200));

setFont(new Font("Comic Sans Ms", Font.BOLD, 20));

descubierta = false;

}

Page 69: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 69

}

class AccionBoton implements ActionListener {

PanelBuscaminas pb;

int f, c;

AccionBoton(PanelBuscaminas p,int ff, int cc){

pb = p;

f = ff;

c = cc;

}

public void actionPerformed(ActionEvent ae) {

if(!pb.tablero[f][c].descubierta)

{

pb.tablero[f][c].descubierta = true;

pb.tablero[f][c].setBackground(new Color(170,255,255));

if(pb.minas[f][c])

{

pb.tablero[f][c].setLabel("*");

for(int x=0; x<30; x++)

for(int y=0; y<50; y++)

if(pb.minas[x][y])

{

pb.tablero[x][y].setBackground(new Color(255,50,100));

pb.tablero[x][y].setLabel("*");

}

JOptionPane.showMessageDialog(pb.getParent(), "Lo siento, has perdido");

System.exit(0);

}

else

{

int numMinas = CuentaMinas(f,c);

Page 70: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 70

switch(numMinas){

case 0:

AutoDescubrir(f,c);

break;

default:

pb.tablero[f][c].setLabel(Integer.toString(numMinas));

};

}

int nd = numDescubiertas();

((Frame)pb.getParent()).setTitle("Quedan " + Integer.toString(1500-nd)+" casillas");

if(1500-nd == pb.maxMinas)

{

JOptionPane.showMessageDialog(pb.getParent(), "Muy bien, ya has terminado");

System.exit(0);

}

}

}

int CuentaMinas(int ff, int cc){

int nm = 0;

for(int x=ff-1; x<=ff+1; x++)

for(int y=cc-1; y<=cc+1; y++)

if(!(x==ff && y==cc) &&

x>=0 && x<30 &&

y>=0 && y<50)

if(pb.minas[x][y])

nm++;

return nm;

}

void AutoDescubrir(int ff, int cc){

pb.tablero[ff][cc].setBackground(new Color(170,255,255));

Page 71: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 71

pb.tablero[ff][cc].descubierta = true;

for(int x=ff-1; x<=ff+1; x++)

for(int y=cc-1; y<=cc+1; y++)

{

if(x>=0 && x<30 && y>=0 && y<50 &&

!(x==ff && y==cc) &&

!pb.tablero[x][y].descubierta)

{

int numMinas = CuentaMinas(x,y);

switch(numMinas){

case 0:

AutoDescubrir(x,y);

break;

default:

pb.tablero[x][y].descubierta = true;

pb.tablero[x][y].setBackground(new Color(170,255,255));

pb.tablero[x][y].setLabel(Integer.toString(numMinas));

};

}

}

}

int numDescubiertas(){

int nd=0;

for(int x=0; x<30; x++)

for(int y=0; y<50; y++)

if(pb.tablero[x][y].descubierta)

nd++;

return nd;

}

}

Page 72: Software Libre y Sus Aplicaciones Orient Ad As a Videojuegos

Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales

Taller de Investigación II

Gustavo Higareda Soto Página 72

Referencias.

[1] Jesus Gonzalez Barhaona, "Software Libre," 2003.

[2] Richard M.Stallman, "Software Libre Para Una Sociedad Libre,", 1.1 ed 1999.

[3] Moserrat Culebro Juarez and Susana Torres Sanchez, "Software Libre vs Software Propietario: Ventajas y Desventajas," 2009.

[4] Jorge Nonius, "Introduccion a las licencias de Software Libre,", 0.92 ed 2002.

[5] Jose Ramon Perez Agüera, "Documentacion y Software Libre," 2009.

[6] Fabiola Carugo and Alejandro Mazzencio, "Conociendo el Software Libre," 2007.

[7] D. R. Cheriton, "The V Kernel: A Software Base for Distributed Systems," 2006.

[8] Marlene Pérez Rivera, "Software de Sistema.," 2003.

[9] "Software Requirements Engineering,", 2nd Edition ed 1997.

[10] Moriel Retocada, "Categorías de Software," 2003.

[11] A.Gil Vida, "The Videogames, Los Videojuegos," 2008.

[12] A.Gil Vida, "The Videogames, Los Videojuegos," 2008.

[13] Simone Belli, "A brief History of videogame," 2008.

[14] "Clud de Desarrolladores de Videojuegos," 2009.

[15] Juan Linetsky, "Herramientas Alternativas Para El Desarrollo de Videojuegos,", 2nd Edition ed 2006.

[16] Bruce Eckel, "Thinking in java,".