Escolar Documentos
Profissional Documentos
Cultura Documentos
Instituto Tecnológico
de Durango
Ingeniería en Sistemas
Computacionales
Taller de Investigación
II
Software Libre y sus aplicaciones
orientadas a Videojuegos.
18/06/2009
Instituto Tecnológico de Durango Ingeniería en Sistemas Computacionales
Taller de Investigación II
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
Á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
1 Introducción.
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.
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
5 Alcances y Limitaciones
El término software libre (o programas libres) se refiere a libertad, tal como fue
concebido por Richard Stallman en su definición. [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”.
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.
Desventajas
1.4 LICENCIAS
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
Licencia LGPL
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).
1. Sistemas operativos
2. Controladores de dispositivo
3. Herramientas de diagnóstico
4. Herramientas de Corrección y Optimización
5. Servidores
6. Utilidades
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]
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.
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.
3.1 CONCEPTO
3.2 Origen
En 1966 Ralph Baer empezó a desarrollar junto a Albert Maricon y Ted Dabney
un proyecto de videojuego llamado Fox and Hounds dando inicio 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
televisión y que permitía jugar a varios juegos pregrabados. [13]
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.
A continuación se muestra en tabla las diferentes consolas que se han creado a lo largo
de la historia.
3.3 Géneros
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]
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]
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]
Infiltración
Plataformas
Árcade
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]
Carreras
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
Aventura
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”.
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]
• 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.
• Código abierto.
• Aplicaciones pequeñas.
• Libertad y Flexibilidad.
• Portabilidad.
• Reaprendizaje [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.
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.
Fig. 4.3 Imagen del juego cuatro en raya “La maquina gano”.
Fig. 4.4 Imagen del juego cuatro en raya “Gano el jugador humano”.
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).
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.
CAPITULO V Metodología.
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.
20%
Si
No
80%
50,00
40,00
30,00
20,00
10,00
0,00
Java SQL Sistemas Aplicaciones Ninguno No tiene idea
Operativos de S.L
4%
Si
No
96%
En la grafica anterior de las personas que han creado algún software libre los resultados
obtenidos fueron:
En esta grafica nos muestra las ventajas que las personas encuestadas creen sobre el
software libre así mismo las respuestas que se encontraron
ncontraron coinciden con lo investigado en el
Capitulo 1.
30
25
20
15
10
0
Es gratuito Modificable Accesible No se
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.
CONCLUSIONES
ANEXOS
Anexo 1
Anexo 2
int result;
int z = 0;
int y;
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);
Quien.setText ("Maquina");
if (!unjugador)
else
g.setColor (Color.blue);
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
String s;
if (jugador == (- 1))
victorias++;
if (unjugador)
else
else
derrotas++;
if (unjugador)
s = "GAN LA MQUINA!!!";
Anexo 4
Código completo.
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
int Turno;
int victorias;
int derrotas;
boolean jugando;
boolean unjugador;
CuatroRaya ()
int x, y;
addMouseListener (this);
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;
System.exit (0);
);
int result;
int z = 0;
int y;
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);
Quien.setText ("Maquina");
if (!unjugador)
else
g.setColor (Color.blue);
Turno++;
else
if (Turno % 2 != 0)
if (unjugador)
else
PintaCasilla (result);
public boolean CompruebaCasilla (int posx, int posy, int cuantas [] [])
int x, y;
if (x != 0 || y != 0)
if (cuantas [x + 1] [y + 1] >= 4)
return true;
return false;
int val;
int cuantas = 1;
tempx = posx + x;
tempy = posy + y;
while ((tempy >= 0 && tempx >= 0) && (tempx < 7 && tempy < 7))
cuantas++;
tempx += x;
tempy += y;
else
tempx = (- 1);
tempx = posx - x;
tempy = posy - y;
while ((tempy >= 0 && tempx >= 0) && (tempx < 7 && tempy < 7))
cuantas++;
tempx -= x;
tempy -= y;
else
tempx = (- 1);
return cuantas;
int temp;
int x, y, casilla;
int z;
boolean mayor;
z = 0;
z++;
if (z == 7)
break;
if (z == 0)
y = 6;
else
y = z - 1;
//Una casilla recibe puntos por altura, un factor semialeatorio, para evitar
//bucles infinitos
PuntosCasilla [casilla] += y;
//Obtengo los valores para esa jugada simulando la colocación de una ficha
//Se obtiene los resultados que se tendra con esa jugada simulando
else
PuntosCasilla [casilla] += 5;
else
PuntosCasilla [casilla] += 5;
if (y > 0)
estados [casilla] [y - 1] = 0;
//as que vamos a ver cual tiene mayor puntuacin y colocar en ella
z = 0;
mayor = true;
mayor = false;
if (mayor == true)
if (z != 0)
z = y * 10;
else
z = y;
return (z);
String s;
if (jugador == (- 1))
victorias++;
if (unjugador)
else
else
derrotas++;
if (unjugador)
s = "GAN LA MQUINA!!!";
else
// g.setColor(Color.white);
// g.drawString(100,333,s);
jugando = false;
dig.setVisible (true);
try
tiempo.sleep (1000);
catch (InterruptedException e)
int x;
int y;
g.setColor (Color.lightGray);
g.setColor (Color.white);
int x;
int y;
Turno = 0;
jugando = true;
System.out.println ("reestart");
g.setColor (Color.lightGray);
g.setColor (Color.white);
a.pack ();
a.setResizable (false);
a.show ();
if (ae.getSource () == btnModo)
unjugador = true;
else
unjugador = false;
int z;
z = me.getX ();
if (jugando)
z = (z - 10) / 90;
PintaCasilla (z);
if (me.getSource () == Salir)
System.exit (0);
if (me.getSource () == Comienza)
ReStart ();
//Vacio
//Vacio
//Vacio
//Vacio
String cad;
setResizable (false);
setBackground (Color.white);
texto.setText (s);
g.setColor (Color.white);
if (evt.target == aceptar)
dispose ();
return true;
return false;
Anexo 5
f.add(panel);
f.addWindowListener(new WindowAdapter() {
System.exit(0);
});
f.setSize(900, 540);
f.show();
Anexo 6
Casilla tablero[][];
boolean minas[][];
int maxMinas;
PanelBuscaminas(){
int f,c;
setLayout(new GridLayout(30,50));
maxMinas = 250;
minas[f][c] = false;
add(tablero[f][c]);
tablero[f][c].addActionListener(new AccionBoton(this,f,c));
// colocamos minas
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.
Anexo 7
PanelBuscaminas pb;
int f, c;
pb = p;
f = ff;
c = cc;
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("*");
if(pb.minas[x][y])
pb.tablero[x][y].setBackground(new Color(255,50,100));
pb.tablero[x][y].setLabel("*");
System.exit(0);
else
switch(numMinas){
case 0:
AutoDescubrir(f,c);
break;
default:
pb.tablero[f][c].setLabel(Integer.toString(numMinas));
};
int nd = numDescubiertas();
if(1500-nd == pb.maxMinas)
System.exit(0);
Anexo 8
Código Completo.
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
f.add(panel);
f.addWindowListener(new WindowAdapter() {
System.exit(0);
});
f.setSize(900, 540);
f.show();
Casilla tablero[][];
boolean minas[][];
int maxMinas;
PanelBuscaminas(){
int f,c;
setLayout(new GridLayout(30,50));
maxMinas = 250;
minas[f][c] = false;
add(tablero[f][c]);
tablero[f][c].addActionListener(new AccionBoton(this,f,c));
// colocamos minas
do {
f = (int)(Math.random()*30);
c = (int)(Math.random()*50);
}while(minas[f][c]);
minas[f][c] = true;
boolean descubierta;
Casilla(String t){
super.setLabel(t);
setBackground(new Color(200,200,200));
descubierta = false;
PanelBuscaminas pb;
int f, c;
pb = p;
f = ff;
c = cc;
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("*");
if(pb.minas[x][y])
pb.tablero[x][y].setBackground(new Color(255,50,100));
pb.tablero[x][y].setLabel("*");
System.exit(0);
else
switch(numMinas){
case 0:
AutoDescubrir(f,c);
break;
default:
pb.tablero[f][c].setLabel(Integer.toString(numMinas));
};
int nd = numDescubiertas();
if(1500-nd == pb.maxMinas)
System.exit(0);
int nm = 0;
if(pb.minas[x][y])
nm++;
return nm;
pb.tablero[ff][cc].setBackground(new Color(170,255,255));
pb.tablero[ff][cc].descubierta = true;
!pb.tablero[x][y].descubierta)
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;
if(pb.tablero[x][y].descubierta)
nd++;
return nd;
Referencias.
[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.
[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.