SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
GAMEKART UN JUEGO DE CARROS
           UTILIZANDO SHELL SCRIPTS DE LINUX
                                                Steven Caicedo Mejillones
                                          Escuela Superior Politécnica de Litoral
                                   Facultad de Ingeniería en Electricidad y Computación
                                             Cátedra: Fundamentos de Linux
                                                  skcaiced@espol.edu.ec



                        RESUMEN                                          II. PLAN DE DESARROLLO
   En esta documentacion se muestra el desarrollo de un
videojuego de carros utilizando scripts de Shell bajo el          A. Fase de Propuesta
Sistema operativo LINUX.. Se muestra también el periodo           En esta fase del proyecto se comencé a analizar
de desarrollo, los objetivos del mismo así como la razón de     las dos categorías del proyecto: servicios u ocio,
ser del proyecto y las herramientas nuevas aprendidas en el
                                                                analizando el pro y los contras de elegir cada una
transcurso de elaboración del videojuego.
                                                                de las categorías, lo que por un análisis costo
                        ABSTRACT                                beneficio se decidió por el desarrollo de un juego
   This paper shows the development of a car video game         para el ocio en la consola. Una vez elegida la
using Shell scripts under the LINUX [1] operating system.       categoría comenzó la incógnita ¿qué juego? así se
Also shown the period of development, its objectives and the    comenzaron a barajar diversas propuestas de
justification of the project and the new tools learned in the   juegos posibles en la consola de Linux [3], tales
course of developing the game.
                                                                como 21, Tetris, Arkadian,          pero se llego
                                                                revisando en internet se concluyo que estos juegos
  Índice de Términos— Atari, Bash, comandos, CLI
                                                                ya están implementados. Luego haciendo memoria
Juegos de consola, Linux, Scripts, Shell.
                                                                de esos juegos inmortales producidos por ATARI
               I. INTRODUCCIÓN                                  [4] en su época dorada, llegaban recuerdos del
                                                                videojuego que mas me divertido en la infancia, el
El Presente trabajo será presentado como proyecto               famoso carito que evitaba chocar con otros carros,
final de la cátedra FUNDAMENTOS DE LINUX                        no recordando el nombre del juego lo bautice con
cuya propósito fue el utilizar los conocimientos                GAMEKAR, y fue así como fue propuesto el
adquiridos en el transcurso del dictado de la                   proyecto con las siguientes especificaciones:
cátedra para desarrollar un script sea este
orientado a la prestación de servicios en un                       1) Primera condición: El carro que avanza en
ambiente LINUX o el desarrollo de un juego para                 una carretera en la que en puntos determinados
el ocio en la consola del SO (Sistema Operativo)                hay obstáculos que este debe evitar.
[2] antes mencionado. La propuesta del proyecto                    2) Segunda condición: El carro se puede mover
fue presentada al iniciar la cátedra con el nombre              solo en dos direcciones para evitar los obstáculos,
de “Desarrollo de un juego de carros” siendo                    a la izquierda o a la derecha.
aceptada días después de la propuesta por el Ing.                  3) Tercera condición: El juego termina cuando
Ignacio Marín (docente de la cátedra).                          el carro choca con alguno de los obstáculos,
Se presenta el plan de trabajo utilizado para el                siendo el puntaje en función del tiempo que
desarrollo del script así como la estrategia de                 permaneció sin chocarse.
programación implementada en el mismo.                             4) Cuarta condición: El juego debe mostrar un
                                                                ranking de los 15 puntajes más altos almacenados
                                                                en cada juego con sus respectivos nombres.
B. Fase de Planificación                                           C. Fase de Desarrollo e Implementación
  En esta fase se comenzó a hacer el análisis de                     Esta es la fase donde se puso manos a la obra, en
las condiciones del proyecto así como las posibles                  nuestro caso diseñar cada una de las interfaces
soluciones y técnicas de programación que                           codificando y dándoles funcionalidad a cada una
usaríamos en el desarrollo. Así como planteamos                     de ellas.
en dividir el programa en las diversas interfaces
que mostraremos a los jugadores, de esta forma las                     1) Introducción: Esta parte de la interfaz es solo
interfaces quedaron de la siguiente manera:                         un grupo de secuencias de salidas de pantallas, no
                                                                    tiene mayor funcionalidad, solo da una
  1) Introducción: Una interfaz animada que                         presentación agradable del juego. El efecto se
muestre el nombre del programa y le dé un toque                     logro con una combinación de: salidas de
de elegancia al juego.                                              pantallas, el comando para limpiar la pantalla que
  2) Menú: interfaz que muestra las diferentes                      en la consola de Linux es clear [5], además de una
opciones del juego, sea esta: juego nuevo, ranking,                 espera de 1 segundo que da la apariencia de hilos
                                                                    de ejecución usando el comando sleep [6].
información del desarrollador o salir del
programa.                                                                                      FIG. II
  3) Juego nuevo: Interfaz que muestra el juego                            PANTALLAZOS DE LA INTRODUCCIÓN DEL PROGRAMA

propiamente dicho, es en esta interfaz donde se
pondrá mas énfasis en el desarrollo.
  4) Ranking: Interfaz que muestra un listado de
los 15 mejores puntajes, cada puntaje con sus
respectivos nombres.
   5) Acerca: interfaz que muestra información
acerca del desarrollador del juego

Haciendo un diagrama de flujo del programa con
respecto a las interfaces antes mencionada queda
de la siguiente manera

                        FIG. I
           DIAGRAMA DE FLUJO DEL PROGRAMA




                                                                             El tiempo entre un pantallazo y otro es de 1 segundo


                                                                      2) Menú: Esta parte del programa está dominada
                                                                    por un lazo infinito de ejecución que
                                                                    constantemente pregunta por teclado la opción a
                                                                    escoger sea esta: nuevo juego, ranking, acerca, o
      Sel es la variable usada en el Menú para hacer las veces de
                                                                    salir del programa. El proceso de selección esta
                             Seleccionador.                         programado por la instrucción case [7] de los
                                                                    sistemas Linux. La opción salir está definida por
                                                                    la instrucción exit 1 [8]. A continuación se
                                                                    muestra un pantallazo del menú de la aplicación:
Lo interesante de este bloque es que imprime
                       FIG. III
                PANTALLAZO DEL MENÚ
                                                    solo los 15 mejores puntajes en orden descendente
                                                    usando las instrucciones sort [9] y sed [10], es por
                                                    esto que me presto a mostrar este bello código:

                                                      for n in {1..15}
                                                       do
                                                         echo "${n})$(sort -r rank.txt | sed -n ${n},${n}p) "
                                                       done

                                                      5) Acerca: Esta parte del programa es la más
                                                    sencilla,   solo   muestra     información    del
                                                    desarrollador. A continuación un pantallazo de la
                                                    interfaz:
                                                                              FIG. V
                                                                       PANTALLAZO DE ACERCA




  3) Ranking: Esta parte del programa lee un
archivo que almacena los puntajes de los
jugadores así como el nombre de los mismos, este
archivo es previamente modificado cada vez que
un usuario juega, esto se explicara en un literal
posterior.

                      FIG. IV
               PANTALLAZO DEL RANKING




                                                      4) Juego: Esta es la parte del proyecto más
                                                    compleja ya que es la que implementa el juego
                                                    propiamente dicho, es así que esta interfaz o
                                                    bloque la hemos subdividido en bloques:
                                                                              FIG. VI
                                                                     DIAGRAMA DE FLUJO DE JUEGO
1) Detección del teclado: Esta es una parte              tiempo que se mantuvo sin chocar con ningún
importante del script ya que hace la captura del           obstáculo, además pide que escriba el nombre del
teclado, y fue quizá la parte más complicada del           jugador y luego añade esta información a un
proyecto ya que para capturar el teclado usamos el         archivo de texto denominado rank.txt contendrá
comando read [11], el cual necesita siempre un enter       todos los puntajes de todas las personas que han
después de haber escrito lo que queremos enviarle al       jugado. A continuación se muestran unos
programa. Esto sería molestoso, ya que por ejemplo         pantallazos de la interfaz Juego y Game Over
cada vez que quisiéramos movernos a la derecha luego
de presionar la tecla d tendríamos que presionar luego
                                                           respectivamente:
                                                                                 FIG. VI
un enter. Debido a este problema se decidió darle un                       PANTALLAZO DE JUEGO
tiempo determinado de lectura al teclado en cada
interacción, para esto podíamos utilizar la bandera –t
del comando read que da un tiempo de lectura al
teclado, pero esta opción no funciona correctamente
en algunas versiones de intérpretes de comandos en
Linux [12]. En el caso de la versión de mi intérprete no
funcionaba correctamente esta opción, así que decidí
buscar alternativas en internet, y pensé “alguien en
algún lugar alguna ocasión tuvo q haber necesitado
algo parecido”. Es así como encontré una hermosa
función que realizaba exactamente como lo necesitaba,
aquí se los muestro:
    timedout_read() {
      timeout=$1
      varname=$2
      old_tty_settings=`stty -g`
      stty -icanon min 0 time ${timeout}0
      eval read $varname      # or just read $varname
      stty "$old_tty_settings"
    } [13]

  2) Movimiento del carro: Esta parte de la
interfaz o bloque juego es la que efectúa el                                     FIG. VII

movimiento del carro hacia la derecha si el                            Pantallazo de Game Over
usuario presiono d y hacia la izquierda si el
usuario presiono a.
  3) Generación de obstáculos aleatorio: Esta
parte del bloque juego es la que genera que los
obstáculos vayan apareciendo de forma aleatoria
usando la instrucción RANDOM [14].
  4) Caída de obstáculos: Esta parte es una
función que hace que los obstáculos vayan
cayendo, haciendo una modificación en los
arreglos ya que cada línea de la interfaz está
definida como un arreglo de tamaño 17.
   5) Muestra de Pantalla: Esta es la parte del
bloque juego que imprime en pantalla el juego
propiamente dicho.
  6) Game Over: Es una interfaz que se muestra
cuando el jugador ha perdido la partida, mostrado
un mensaje que dice GAME OVER, además
muestra la puntuación obtenida basada en el
III. CONCLUSIONES                                            APÉNDICE C
                                                                 PROCESO DE CARGA DE UN PROGRAMA


        Es necesario antes de insertarse en la
programación de programas, sean estos scripts o
programas en cualquier tipo de lenguaje, analizar
las condiciones del programa objetivo y realizar
un diseño conceptual de la solución del mismo,
para facilitar la programación, además de hacerla
de una forma pulcra y ordenada.
        Los script son archivos de texto que
pueden ser ejecutados por un intérprete de
comandos, que sirven para automatizar procesos
en los dispositivos electrónicos, además de poder
crear programas que emulen juegos para el ocio en
la consola de Linux.
        Los scripts no son compilados, son
interpretados por el intérprete de comandos cada
vez que uno ejecute el mismo.

                      APÉNDICE
                      APÉNDICE A                                           APÉNDICE D
                                                                     KERNEL- SHELL- COMMANDS
           LENGUAJE COMPILADO E INTERPRETADO




                       APÉNDICE B
      DIAGRAMA DE BLOQUES DEL LENGUAJE INTERPRETADO




                                                                      RECONOCIMIENTOS
                                                        Agradecimientos Ing. Ignacio Marín García
                                                      docente de la cátedra de Fundamentos de Linux y
                                                      tutor de este proyecto, por ser el facilitador de
                                                      aprendizaje de este Sistema Operativo.
REFERENCIAS                                                         AUTOR
[1] Anónimo (2012), “Linux”, [online] Wikipedia            la   Steven Caicedo Mejillones Ingreso a la Facultad de
    enciclopedia libre                                          Ingeniera en Electricidad y Computación (FIEC) de la
    Disponible en: http://es.wikipedia.org/wiki/Linux           Escuela Superior Politécnica del Litoral (ESPOL) en 2008
    .                                                           cursando una Ingeniería en Telemática, su principal interés
[2] Anónimo (2012), “SO”, [online] Wikipedia               la   son los sistemas de comunicación digital, además del diseño
    enciclopedia libre                                          de circuitos digitales de control.
    Disponible en:
    http://es.wikipedia.org/wiki/Sistema_operativo

[3] Anónimo (2012), “La consola de Linux”,
    [online] Wikipedia la enciclopedia libre
    Disponible en:
    http://www.linuxadictos.com/la-consola-de-linux-
    %C2%BFla-pantalla-negra-de-la-muerte.html

[4] Anónimo (2012), “Atari”, [online] Wikipedia            la
    enciclopedia libre
    Disponible en: http://es.wikipedia.org/wiki/Atari

[5] Anónimo (2012), “clear”, [online] Linux Documentation
    Disponible en: http://linux.die.net/man/1/clear
[6] Anónimo(2012), “sleep”, [online] Linux Documentation
    Disponible en: http://linux.die.net/man/3/sleep

[7] Anónimo (2012), “clear”, [online] Linux Documentation
    Disponible en: http://linux.die.net/man/1/case

[8] Anónimo (2012), “exit”, [online] Linux Documentation
    Disponible en:http://linux.die.net/man/1/exit.

[9] Anónimo (2012), “sort”, [online] Linux Documentation
    Disponible en: http://linux.die.net/man/1/sort.

[10] Anónimo (2012), “set”, [online] Linux Documentation
     Disponible en: http://linux.die.net/man/1/sed

[11] Anónimo (2012), “read”, [online] Linux Documentation
     Disponible en: http://linux.die.net/man/2/read.

[12] Anónimo (2012), “Interprete de comandos”,
     [online] Wikipedia la enciclopedia libre
     Disponible en:
     http://es.wikipedia.org/wiki/Int%C3%A9rprete_de_com
     andos.

[13] Anónimo (2012), “Advanced Bash-Scripting Guide”,
     [online] Linux Documentation Proyect Guides
     Disponible en:
     http://www.tldp.org/LDP/abs/html/internalvariables.htm
     l#TIMEOUT

[14] Anónimo       (2012),      “random”,      [online] Linux
     Documentation
     Disponible en: http://linux.die.net/man/1/random

Más contenido relacionado

Destacado

Emprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidarioEmprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidarioluiscargo
 
Emprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidarioEmprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidarioluiscargo
 
2eso tecno 1a ud electricitat
2eso tecno 1a ud electricitat2eso tecno 1a ud electricitat
2eso tecno 1a ud electricitatGTV Escola Garbí
 
Guia de a..1
Guia de a..1Guia de a..1
Guia de a..1luiscargo
 
Seminario democratic school_governance-libre
Seminario democratic school_governance-libreSeminario democratic school_governance-libre
Seminario democratic school_governance-libreGTV Escola Garbí
 
L'escola garbí des dels seus inicis
L'escola garbí des dels seus inicisL'escola garbí des dels seus inicis
L'escola garbí des dels seus inicisGTV Escola Garbí
 
Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013GTV Escola Garbí
 
Etapas del desarrollo humano
Etapas del desarrollo humano Etapas del desarrollo humano
Etapas del desarrollo humano sebasfernan03
 
Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)
Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)
Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)Lindsay Kate Pizon
 
Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013GTV Escola Garbí
 
Presentacic3b3n memoria
Presentacic3b3n memoriaPresentacic3b3n memoria
Presentacic3b3n memoriaMoises Garcia
 
«Se não tens oportunidade de fazer grandes coisas, podes fazer pequenas cois...
«Se não tens oportunidade de fazer grandes coisas,  podes fazer pequenas cois...«Se não tens oportunidade de fazer grandes coisas,  podes fazer pequenas cois...
«Se não tens oportunidade de fazer grandes coisas, podes fazer pequenas cois...Brazão Castro
 

Destacado (20)

Emprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidarioEmprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidario
 
Emprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidarioEmprendimiento y empresarismo solidario
Emprendimiento y empresarismo solidario
 
2eso tecno 1a ud electricitat
2eso tecno 1a ud electricitat2eso tecno 1a ud electricitat
2eso tecno 1a ud electricitat
 
Guia de a..1
Guia de a..1Guia de a..1
Guia de a..1
 
Diplomado tic
Diplomado ticDiplomado tic
Diplomado tic
 
Seminario democratic school_governance-libre
Seminario democratic school_governance-libreSeminario democratic school_governance-libre
Seminario democratic school_governance-libre
 
L'escola garbí des dels seus inicis
L'escola garbí des dels seus inicisL'escola garbí des dels seus inicis
L'escola garbí des dels seus inicis
 
Resum colonies
Resum coloniesResum colonies
Resum colonies
 
Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013
 
Jolicloud
JolicloudJolicloud
Jolicloud
 
Etapas del desarrollo humano
Etapas del desarrollo humano Etapas del desarrollo humano
Etapas del desarrollo humano
 
Dober Projekt
Dober ProjektDober Projekt
Dober Projekt
 
Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)
Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)
Virtual Museum( Chapter 26 Age of Democracy and Progress, 1815–1914)
 
13 tipos de_memoria
13 tipos de_memoria13 tipos de_memoria
13 tipos de_memoria
 
Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013Convocatòria xlvii premis_sant_jordi_2013
Convocatòria xlvii premis_sant_jordi_2013
 
Outreach
OutreachOutreach
Outreach
 
Makeup Revolution - Mobile App case study
Makeup Revolution - Mobile App case studyMakeup Revolution - Mobile App case study
Makeup Revolution - Mobile App case study
 
El aborto
El abortoEl aborto
El aborto
 
Presentacic3b3n memoria
Presentacic3b3n memoriaPresentacic3b3n memoria
Presentacic3b3n memoria
 
«Se não tens oportunidade de fazer grandes coisas, podes fazer pequenas cois...
«Se não tens oportunidade de fazer grandes coisas,  podes fazer pequenas cois...«Se não tens oportunidade de fazer grandes coisas,  podes fazer pequenas cois...
«Se não tens oportunidade de fazer grandes coisas, podes fazer pequenas cois...
 

Similar a Caicedo_Juego_consola_Linux

Guia practica 1.0 2011
Guia practica 1.0  2011Guia practica 1.0  2011
Guia practica 1.0 2011puchichin666
 
Introduccion A Xna By Lasa
Introduccion A Xna By LasaIntroduccion A Xna By Lasa
Introduccion A Xna By LasaLuis A. Sanchez
 
Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2Alejandra Hoyos
 
Modelamiento de juegos
Modelamiento de juegosModelamiento de juegos
Modelamiento de juegosingsistemas1
 
Diapositiva de juegos, Cesar negret velasco
Diapositiva de juegos, Cesar negret velascoDiapositiva de juegos, Cesar negret velasco
Diapositiva de juegos, Cesar negret velascoDeibyAlexanderGomezF
 
Jugando con Virtualización
Jugando con VirtualizaciónJugando con Virtualización
Jugando con VirtualizaciónEnrique Verdes
 
10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuego10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuegoNicole2411
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.docx
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.docxDesarrollo De habilidades De Pensamiento equipo 5, 9-5.docx
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.docxCamilaCordoba30
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdfDesarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdfMariaICrdenas
 
Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.sofaMuoz31
 
Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.JulyMuoz18
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdfDesarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdfMariaICrdenas
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.pdfDesarrollo De habilidades De Pensamiento equipo 5, 9-5.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.pdfSofiaCollazos
 
Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2elidetjc
 
Manual del programador (saber matemático)
Manual del programador  (saber matemático)Manual del programador  (saber matemático)
Manual del programador (saber matemático)Salazar Garcia Diana
 

Similar a Caicedo_Juego_consola_Linux (20)

Guia practica 1.0 2011
Guia practica 1.0  2011Guia practica 1.0  2011
Guia practica 1.0 2011
 
Introduccion A Xna By Lasa
Introduccion A Xna By LasaIntroduccion A Xna By Lasa
Introduccion A Xna By Lasa
 
Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2Grp 203037 7_colaborativo2
Grp 203037 7_colaborativo2
 
Modelamiento de juegos
Modelamiento de juegosModelamiento de juegos
Modelamiento de juegos
 
Diapositiva de juegos, Cesar negret velasco
Diapositiva de juegos, Cesar negret velascoDiapositiva de juegos, Cesar negret velasco
Diapositiva de juegos, Cesar negret velasco
 
Desarrollo de Juegos
Desarrollo de JuegosDesarrollo de Juegos
Desarrollo de Juegos
 
Diapositiva de juegos 9A
Diapositiva de juegos 9ADiapositiva de juegos 9A
Diapositiva de juegos 9A
 
Jugando con Virtualización
Jugando con VirtualizaciónJugando con Virtualización
Jugando con Virtualización
 
Taller 1 Grado 6
Taller 1 Grado 6Taller 1 Grado 6
Taller 1 Grado 6
 
Bermejo
BermejoBermejo
Bermejo
 
10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuego10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuego
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.docx
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.docxDesarrollo De habilidades De Pensamiento equipo 5, 9-5.docx
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.docx
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdfDesarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-1.pdf
 
Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.
 
Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.Desarrollo De habilidades De Pensamiento equipo 5.
Desarrollo De habilidades De Pensamiento equipo 5.
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdfDesarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5-2.pdf
 
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.pdfDesarrollo De habilidades De Pensamiento equipo 5, 9-5.pdf
Desarrollo De habilidades De Pensamiento equipo 5, 9-5.pdf
 
Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2Presentacion de power_de_emuladores2
Presentacion de power_de_emuladores2
 
Sem 02-sof-had
Sem 02-sof-hadSem 02-sof-had
Sem 02-sof-had
 
Manual del programador (saber matemático)
Manual del programador  (saber matemático)Manual del programador  (saber matemático)
Manual del programador (saber matemático)
 

Caicedo_Juego_consola_Linux

  • 1. GAMEKART UN JUEGO DE CARROS UTILIZANDO SHELL SCRIPTS DE LINUX Steven Caicedo Mejillones Escuela Superior Politécnica de Litoral Facultad de Ingeniería en Electricidad y Computación Cátedra: Fundamentos de Linux skcaiced@espol.edu.ec RESUMEN II. PLAN DE DESARROLLO En esta documentacion se muestra el desarrollo de un videojuego de carros utilizando scripts de Shell bajo el A. Fase de Propuesta Sistema operativo LINUX.. Se muestra también el periodo En esta fase del proyecto se comencé a analizar de desarrollo, los objetivos del mismo así como la razón de las dos categorías del proyecto: servicios u ocio, ser del proyecto y las herramientas nuevas aprendidas en el analizando el pro y los contras de elegir cada una transcurso de elaboración del videojuego. de las categorías, lo que por un análisis costo ABSTRACT beneficio se decidió por el desarrollo de un juego This paper shows the development of a car video game para el ocio en la consola. Una vez elegida la using Shell scripts under the LINUX [1] operating system. categoría comenzó la incógnita ¿qué juego? así se Also shown the period of development, its objectives and the comenzaron a barajar diversas propuestas de justification of the project and the new tools learned in the juegos posibles en la consola de Linux [3], tales course of developing the game. como 21, Tetris, Arkadian, pero se llego revisando en internet se concluyo que estos juegos Índice de Términos— Atari, Bash, comandos, CLI ya están implementados. Luego haciendo memoria Juegos de consola, Linux, Scripts, Shell. de esos juegos inmortales producidos por ATARI I. INTRODUCCIÓN [4] en su época dorada, llegaban recuerdos del videojuego que mas me divertido en la infancia, el El Presente trabajo será presentado como proyecto famoso carito que evitaba chocar con otros carros, final de la cátedra FUNDAMENTOS DE LINUX no recordando el nombre del juego lo bautice con cuya propósito fue el utilizar los conocimientos GAMEKAR, y fue así como fue propuesto el adquiridos en el transcurso del dictado de la proyecto con las siguientes especificaciones: cátedra para desarrollar un script sea este orientado a la prestación de servicios en un 1) Primera condición: El carro que avanza en ambiente LINUX o el desarrollo de un juego para una carretera en la que en puntos determinados el ocio en la consola del SO (Sistema Operativo) hay obstáculos que este debe evitar. [2] antes mencionado. La propuesta del proyecto 2) Segunda condición: El carro se puede mover fue presentada al iniciar la cátedra con el nombre solo en dos direcciones para evitar los obstáculos, de “Desarrollo de un juego de carros” siendo a la izquierda o a la derecha. aceptada días después de la propuesta por el Ing. 3) Tercera condición: El juego termina cuando Ignacio Marín (docente de la cátedra). el carro choca con alguno de los obstáculos, Se presenta el plan de trabajo utilizado para el siendo el puntaje en función del tiempo que desarrollo del script así como la estrategia de permaneció sin chocarse. programación implementada en el mismo. 4) Cuarta condición: El juego debe mostrar un ranking de los 15 puntajes más altos almacenados en cada juego con sus respectivos nombres.
  • 2. B. Fase de Planificación C. Fase de Desarrollo e Implementación En esta fase se comenzó a hacer el análisis de Esta es la fase donde se puso manos a la obra, en las condiciones del proyecto así como las posibles nuestro caso diseñar cada una de las interfaces soluciones y técnicas de programación que codificando y dándoles funcionalidad a cada una usaríamos en el desarrollo. Así como planteamos de ellas. en dividir el programa en las diversas interfaces que mostraremos a los jugadores, de esta forma las 1) Introducción: Esta parte de la interfaz es solo interfaces quedaron de la siguiente manera: un grupo de secuencias de salidas de pantallas, no tiene mayor funcionalidad, solo da una 1) Introducción: Una interfaz animada que presentación agradable del juego. El efecto se muestre el nombre del programa y le dé un toque logro con una combinación de: salidas de de elegancia al juego. pantallas, el comando para limpiar la pantalla que 2) Menú: interfaz que muestra las diferentes en la consola de Linux es clear [5], además de una opciones del juego, sea esta: juego nuevo, ranking, espera de 1 segundo que da la apariencia de hilos de ejecución usando el comando sleep [6]. información del desarrollador o salir del programa. FIG. II 3) Juego nuevo: Interfaz que muestra el juego PANTALLAZOS DE LA INTRODUCCIÓN DEL PROGRAMA propiamente dicho, es en esta interfaz donde se pondrá mas énfasis en el desarrollo. 4) Ranking: Interfaz que muestra un listado de los 15 mejores puntajes, cada puntaje con sus respectivos nombres. 5) Acerca: interfaz que muestra información acerca del desarrollador del juego Haciendo un diagrama de flujo del programa con respecto a las interfaces antes mencionada queda de la siguiente manera FIG. I DIAGRAMA DE FLUJO DEL PROGRAMA El tiempo entre un pantallazo y otro es de 1 segundo 2) Menú: Esta parte del programa está dominada por un lazo infinito de ejecución que constantemente pregunta por teclado la opción a escoger sea esta: nuevo juego, ranking, acerca, o Sel es la variable usada en el Menú para hacer las veces de salir del programa. El proceso de selección esta Seleccionador. programado por la instrucción case [7] de los sistemas Linux. La opción salir está definida por la instrucción exit 1 [8]. A continuación se muestra un pantallazo del menú de la aplicación:
  • 3. Lo interesante de este bloque es que imprime FIG. III PANTALLAZO DEL MENÚ solo los 15 mejores puntajes en orden descendente usando las instrucciones sort [9] y sed [10], es por esto que me presto a mostrar este bello código: for n in {1..15} do echo "${n})$(sort -r rank.txt | sed -n ${n},${n}p) " done 5) Acerca: Esta parte del programa es la más sencilla, solo muestra información del desarrollador. A continuación un pantallazo de la interfaz: FIG. V PANTALLAZO DE ACERCA 3) Ranking: Esta parte del programa lee un archivo que almacena los puntajes de los jugadores así como el nombre de los mismos, este archivo es previamente modificado cada vez que un usuario juega, esto se explicara en un literal posterior. FIG. IV PANTALLAZO DEL RANKING 4) Juego: Esta es la parte del proyecto más compleja ya que es la que implementa el juego propiamente dicho, es así que esta interfaz o bloque la hemos subdividido en bloques: FIG. VI DIAGRAMA DE FLUJO DE JUEGO
  • 4. 1) Detección del teclado: Esta es una parte tiempo que se mantuvo sin chocar con ningún importante del script ya que hace la captura del obstáculo, además pide que escriba el nombre del teclado, y fue quizá la parte más complicada del jugador y luego añade esta información a un proyecto ya que para capturar el teclado usamos el archivo de texto denominado rank.txt contendrá comando read [11], el cual necesita siempre un enter todos los puntajes de todas las personas que han después de haber escrito lo que queremos enviarle al jugado. A continuación se muestran unos programa. Esto sería molestoso, ya que por ejemplo pantallazos de la interfaz Juego y Game Over cada vez que quisiéramos movernos a la derecha luego de presionar la tecla d tendríamos que presionar luego respectivamente: FIG. VI un enter. Debido a este problema se decidió darle un PANTALLAZO DE JUEGO tiempo determinado de lectura al teclado en cada interacción, para esto podíamos utilizar la bandera –t del comando read que da un tiempo de lectura al teclado, pero esta opción no funciona correctamente en algunas versiones de intérpretes de comandos en Linux [12]. En el caso de la versión de mi intérprete no funcionaba correctamente esta opción, así que decidí buscar alternativas en internet, y pensé “alguien en algún lugar alguna ocasión tuvo q haber necesitado algo parecido”. Es así como encontré una hermosa función que realizaba exactamente como lo necesitaba, aquí se los muestro: timedout_read() { timeout=$1 varname=$2 old_tty_settings=`stty -g` stty -icanon min 0 time ${timeout}0 eval read $varname # or just read $varname stty "$old_tty_settings" } [13] 2) Movimiento del carro: Esta parte de la interfaz o bloque juego es la que efectúa el FIG. VII movimiento del carro hacia la derecha si el Pantallazo de Game Over usuario presiono d y hacia la izquierda si el usuario presiono a. 3) Generación de obstáculos aleatorio: Esta parte del bloque juego es la que genera que los obstáculos vayan apareciendo de forma aleatoria usando la instrucción RANDOM [14]. 4) Caída de obstáculos: Esta parte es una función que hace que los obstáculos vayan cayendo, haciendo una modificación en los arreglos ya que cada línea de la interfaz está definida como un arreglo de tamaño 17. 5) Muestra de Pantalla: Esta es la parte del bloque juego que imprime en pantalla el juego propiamente dicho. 6) Game Over: Es una interfaz que se muestra cuando el jugador ha perdido la partida, mostrado un mensaje que dice GAME OVER, además muestra la puntuación obtenida basada en el
  • 5. III. CONCLUSIONES APÉNDICE C PROCESO DE CARGA DE UN PROGRAMA Es necesario antes de insertarse en la programación de programas, sean estos scripts o programas en cualquier tipo de lenguaje, analizar las condiciones del programa objetivo y realizar un diseño conceptual de la solución del mismo, para facilitar la programación, además de hacerla de una forma pulcra y ordenada. Los script son archivos de texto que pueden ser ejecutados por un intérprete de comandos, que sirven para automatizar procesos en los dispositivos electrónicos, además de poder crear programas que emulen juegos para el ocio en la consola de Linux. Los scripts no son compilados, son interpretados por el intérprete de comandos cada vez que uno ejecute el mismo. APÉNDICE APÉNDICE A APÉNDICE D KERNEL- SHELL- COMMANDS LENGUAJE COMPILADO E INTERPRETADO APÉNDICE B DIAGRAMA DE BLOQUES DEL LENGUAJE INTERPRETADO RECONOCIMIENTOS Agradecimientos Ing. Ignacio Marín García docente de la cátedra de Fundamentos de Linux y tutor de este proyecto, por ser el facilitador de aprendizaje de este Sistema Operativo.
  • 6. REFERENCIAS AUTOR [1] Anónimo (2012), “Linux”, [online] Wikipedia la Steven Caicedo Mejillones Ingreso a la Facultad de enciclopedia libre Ingeniera en Electricidad y Computación (FIEC) de la Disponible en: http://es.wikipedia.org/wiki/Linux Escuela Superior Politécnica del Litoral (ESPOL) en 2008 . cursando una Ingeniería en Telemática, su principal interés [2] Anónimo (2012), “SO”, [online] Wikipedia la son los sistemas de comunicación digital, además del diseño enciclopedia libre de circuitos digitales de control. Disponible en: http://es.wikipedia.org/wiki/Sistema_operativo [3] Anónimo (2012), “La consola de Linux”, [online] Wikipedia la enciclopedia libre Disponible en: http://www.linuxadictos.com/la-consola-de-linux- %C2%BFla-pantalla-negra-de-la-muerte.html [4] Anónimo (2012), “Atari”, [online] Wikipedia la enciclopedia libre Disponible en: http://es.wikipedia.org/wiki/Atari [5] Anónimo (2012), “clear”, [online] Linux Documentation Disponible en: http://linux.die.net/man/1/clear [6] Anónimo(2012), “sleep”, [online] Linux Documentation Disponible en: http://linux.die.net/man/3/sleep [7] Anónimo (2012), “clear”, [online] Linux Documentation Disponible en: http://linux.die.net/man/1/case [8] Anónimo (2012), “exit”, [online] Linux Documentation Disponible en:http://linux.die.net/man/1/exit. [9] Anónimo (2012), “sort”, [online] Linux Documentation Disponible en: http://linux.die.net/man/1/sort. [10] Anónimo (2012), “set”, [online] Linux Documentation Disponible en: http://linux.die.net/man/1/sed [11] Anónimo (2012), “read”, [online] Linux Documentation Disponible en: http://linux.die.net/man/2/read. [12] Anónimo (2012), “Interprete de comandos”, [online] Wikipedia la enciclopedia libre Disponible en: http://es.wikipedia.org/wiki/Int%C3%A9rprete_de_com andos. [13] Anónimo (2012), “Advanced Bash-Scripting Guide”, [online] Linux Documentation Proyect Guides Disponible en: http://www.tldp.org/LDP/abs/html/internalvariables.htm l#TIMEOUT [14] Anónimo (2012), “random”, [online] Linux Documentation Disponible en: http://linux.die.net/man/1/random