Juego de "Tron", a través del Puerto Serie, parte 2.

                                    (Este enunciado será explicado en la primera clase que corresponda a cada grupo)

Objetivos

Una vez el alumno ha adquirido conocimientos en el ciclo de producción de un programa básicos en c+asm y uso del depurador se pretende que el mismo adquiera los conocimientos necesarios para la elaboración de un programa de dificultad media en ensamblador.

Descripción problema

Para conseguir estos conocimientos se propone que el alumno elabore una versión integra y SIN driver del juego conocido como TRON. El juego a desarrollar ha de tener, al menos, la funcionalidad del juego de la práctica anterior y se permitirán incluir las mejoras que decida el alumno. Nota: NO se pretende que el alumno haga una versión del tron.c de la práctica anterior en ASM, sino que elabore el juego de forma íntegra y SIN recurrir a drivert, el cual desaparece en esta práctica

Recursos

Para facilitar la tarea de elaboración del juego se facilitarán una serie de librerías que permitirán abstraerse del acceso al hardware y centrarse en el flujo del programa en ASM. Así mismo se permite el uso de cualquier código elaborado en la práctica anterior.

El esquema que corresponde a esta nueva situación se muestra en la figura siguiente:

Guión

No se recomienda abordar toda la práctica de una vez, sino la elaboración de un programa pequeño al inicio al que se le va añadiendo funcionalidad. Se recomienda el siguiente plan de trabajo:

1º Programa base: Creación de un programa que pase a modo gráfico, escriba un texto y líneas por pantalla, pida una tecla y salga a modo normal. En este punto se recomienda usar sólo las librerías graficos.lib (graficos.h) y teclado.lib (esta última es la desarrollada por el alumno en la práctica anterior).

2º Representación de tablero: Se define una estructura de memoria que representará el tablero (Un array de bytes puede servir), se inicializa la misma y se muestra por pantalla el tablero inicial donde antes se escribía texto y líneas por pantalla. Usar sólo graficos.lib y teclado.lib.

3º Lógica de juego: Se implementa el bucle principal del juego. En este bucle, se obtienen los movimientos de las motos, se actualiza el tablero y se muestra y se analiza si el juego ha finalizado. Usar sólo graficos.lib y teclado.lib. Para la temporización utilizar un pequeño bucle de espera.

4º Timer y serie_ Se añade la funcionalidad de acceso al puerto serie y temporización mediante llamadas a las librerías proporcionadas. Incluir ahora las librerías serie.lib y rtc.lib (Detalles de las funciones en rtc.h y serie.h)

 

Más datos sobre el modo utilizado en graficos.lib: Modo MCGA

Posible pseudocódigo (no es obligatorio el hacerlo así, es sólo una referencia)

main()

inicializamos_tablero()
inicializamos_modo_grafico()
obtenemos_modo_juego()

while (analizar_partida!=fin)
  obtener_movimientos()
  aplicar_movimientos()
  mostrar_tablero()
  temporizacion()

mostrar_resultado()

finalizamos_modo_grafico()


obtener_movimientos()

switch modo_juego
  case jugador_simple:
     movimiento1=leer_teclado()
     movimiento2=algoritmo_aleat()

   case servidor:
      movimiento1=leer_teclado()
      escribir_serie(movimiento1)
      movimiento2=leer_serie()


   case cliente
      movimiento2=leer_teclado()
      escribir_serie(movimiento2)
      movimiento1=leer_serie()

obtener_modo_juego()

preguntar_modo();
swith  modo_juego
  case  jugador_simple:
         return
  case servidor:
  case cliente:
          escribir_serie(ACK)
          while (leer_serie!=ACK);
Debido a que las librerías proporcionadas han sido escritas en C, para generar el fichero ejecutable final no se utilizará el programa TLINK, sino el TCC.

La secuencia de comandos será:

tasm /ml [/zi] nombreP2.asm  (/ml Case Sensitive all, /zi Opcional. Sirve para dar información al debugger)

tcc -ml [-v] nombreP2.obj grafico.lib teclado.lib serie.lib rtc.lib  (-ml: modelo largo, -v Opcional. Da información al debugger)

Por la misma razón, es OBLIGATORIO que el programa pedido incluya un procedimiento principal con la sintaxis mostrada a continuación. Se muestra la estructura que deberá tener el fichero nombreP2.asm:

{Declaración de funciones externas, las que estén en librerías}

{segmento de pila}

{segmento de datos}

{segmento de código}

      procedimientos varios

      _main proc far

       public _main

            {código del procedimiento _main}

       _main endp

end

 

 Consejos

  1. Dividir al máximo
  2. Procedimientos con pila equilibrada!
  3. En caso de que algo no funcione USAR DEPURADOR

Qué se pide

Programa TRON con al menos la funcionalidad de la anterior práctica.

Opcional

Cualquier mejora a considerar por el alumno, incluyendo en la memoria las mejoras realizadas, indicando como se han implementado. También se incluirán aquellos aspectos que el alumno considere dignos de mención.


Plazo de entrega : La presentación y evaluación de esta práctica será según el calendario propuesto. El nombre del fichero o ficheros a entregar será de la forma parejap2.asm, por ejemplo 3a28p2.asm. Si hay más de un fichero, nombrarlo con números sucesivos y añadir un .bat que los ensamble y enlace (3a28p21.asm, 3a28p22.asm,... 3a28p2.bat)


Página editada y mantenida por Guillermo Glez. de Rivera
  Volver atrás