JUEGO DE LA OCA by Barrett Juan Viamonte Dominguez (NIP 510242) Grupo de practicas 14, puesto 12. {$I-}{$I+}IORESULT: directiva al compilador para que se guarde un mismo tipo de dato que el esperado. USO DE CRT: accedo a la biblioteca para poder hacer clearscreen y usar la paleta de colores. El programa esta compuesto de estos procedimientos y funciones: FUNCION pide_opcion: Devuelve un booleano que dice si seguimos ejecutando o salimos del prgrama. El repeat es un conjunto de opciones seleccionadas con case of segun el valor de la variable entera "opcion". En dos casos muestra un conjunto de texto en pantalla, y en los otros dos da la opcion de empezar a jugar, o salir del programa. FUNCION comprueba_casilla_especial: Asocia el uso o no uso de cada casilla especial con la salida de un numero entero. Las que no varían: ocas, puentes y jardin; y las que elijo: posada y calavera. PRODECIMIENTO pide_casillas_especiales: Solicita la introduccion del numero de posicion que ocupan las casillas posada y calavera en cada partida almacenandose en las variables enteras posa y cala. PROCEDIMIENTO pide_nombre_jugador: Solicita la introduccion de un string que queda almacenado como el nombre del jugador de la partida. FUNCION tirada_dado: De esta funcion sale un entero entre 1 y 6 de forma aleatoria. Hay que llamar a randomize en el programa principal para que la estructura random genere el numero aleatorio. Se hace random(6)+1 porque random(6) da un numero aleatorio entre 0 y 5. PROCEDIMIENTO mueve_ficha: Este procedimiento lee un entero aleatorio y lo almacena junto a la posicion de la casilla anterior en la variable tirada actual. De este modo compruebo antes de hacer el movimiento de la ficha, cual será la posicion que va a ocupar para hacer las acciones pertinentes. Queda definida una estructura con un booleano para hacer la perdida de turno para la posada y para el jugador contrario en una caida en oca (asi hago que el jugador que cae en oca vuelva a tirar). En esta estructura comprueba que: "jugador1(o2)espera" sea true (false--> todo correcto; true--> perdida de turno) y el turno para dejar sin tirar a un player o a otro. El procedimiento hace entonces una comprobacion de la posicion que ocuparia la "tiradaactual" y actua en funcion de que esta sea menor o mayor que 28. Si es mayor que 28 quiere decir que tiradaactual esta fuera del tablero y hay que retroceder segun las instrucciones. Pero si es menor que 28 el programa empieza de forma normal con las diferentes posibilidades segun sea una casilla u otra comprobandolo con la funcion comprueba_casilla_especial: * No es casilla especial (0): casillajug es tiradaactual. * Oca (1): hace el cambio de casilla, escribe el mensaje y ademas pasa de turno al jugador no actual. * Puente (2): hace el cambio de casilla a posa, escribe mensaje y ademas pasa de turno al jugador actual. * Posada (3): hace el cambio de casilla a posa, escribe mensaje y ademas pasa de turno al jugador actual. * Calavera (4): hace el cambio hasta la primera casilla y escribe mensaje. * Jardin (5): el juego deja de avanzar porque se ha llegado al final. PROCEDIMIENTO muestra_tablero: Escribe en cada turno la posicion de la fichas (posicion de casillajug (1 y 2)). PROCEDIMIENTO cambia_turno: Cambia el valor de turno en cada movimiento de la ficha (excepto en perdida de turno). COMIENZO DEL PROGRAMA clearscreen--> limpia pantalla al empezar el programa. jugador1enposada: siempre en false xa q juego se ejecute normal, si es true cambio de turno} {var siempre jugador1enposada=false y el juego se ejecuta normal. Si cae en posada cambio a jugador1enposada=true y entonces cuando ejecute, como no esta en false no hara nada y le digo que la vuela a poner false. lo mismo con jugador2enposada. Cuando has elegido una de las opciones se inicia: pide_nombre_jugador usando "nombre". pide_casillas_especiales usando posada y calavera. y comienza el REPEAT: si turno es 1 haz mueve_ficha con jugador1 y sino con jugador 2. se inicia: muestra_tablero usando nombre, y posicion de casillas jugador 1 y 2. cambia_turno; hasta que comprueba_casilla_especial (usando casillas jug 1 y 2 y casillas posada y calavera) llega al jardin. Cuando se llega al jardin (casilla 27) muestra nombre del ganador. ---------------------------- (añadido tras someter) ---------------------------- 22:03:28 11/12/09 -> Segun los datos introducidos los ficheros son: G14P12D2 -> Los autores del trabajo son: VIAMONTE DOMINGUEZ, JUAN Nombres originales de los archivos entregados -> Q14P12D2.pas, Q14P12D2.txt