Anda di halaman 1dari 9
Univ ersidad Sim n Bol var Departamento de Computaci n yTecnolog a de la Informaci n

Univ ersidad Sim n Bol var

Departamento de Computaci n

yTecnolog a de la Informaci n

Algoritmos y Estructuras I

CI

Sep Dic

Pro yecto de Algoritmos I

Introducci n

En este proyecto que tiene como n consolidar los conocimientos te ricos y

pr cticos impartidos en este curso se pretende desarrollar un juego

En

es

ta oportunidad hemos escogido al archi conocido juego de DOMIN En los

siguientes p rrafos presentaremos una breve descripci n del mismo

En la si

guiente secci n presentaremos el problema concreto que queremos se resuelva

en este traba jo

Un domin es una pieza o piedra rectangular que est formada por dos

cuadrados unidos por una de sus aristas

En el interior de cada cuadrado se

dibujan entre y puntos negros que representan los n meros del al Un

juego de domin consiste de todas las piezas de domin que se pueden formar

de esta manera en total

El juego de domin es un juego popular que se juega t picamente entre cuatro

personas Estas personas se sientan en una mesa y por lo general cada par de

personas que est n una frente a la otra forman un equipo A cada jugador se le

reparten siete piedras de domin y al empezar el juego cada uno por turno est

obligado a colocar una de sus piezas que coincida con uno de los dos n meros

que est n al nal de la cadena de piedras Si no tiene una pieza adecuada para

jugar pierde su turno Gana el equipo del jugador que coloque todas sus piedras

o si nadie puede jugar el juego se tranca gana el equipo cuyas piedras sumen

menos

Estructura del juego

Un juego de domin se compone de varias partidas Al nal de cada partida las

parejas reciben puntos de acuerdo al resultado de la misma El juego termina

cuando una de las parejas alcanza o supera una cantidad de puntos previamente

establecida que por lo regular son esta pareja pierde el juego

Cuando s lo son tres los jugadores se acostumbra repartir las todas chas

entre los tres jugadores y la que sobre se coloca sobre la mesa para empezar

Tambi n hay quienes reparten s lo siete a cada jugador y dejan las restantes

siete en la mesa para que las vaya tomando quien las necesite cuando no tenga

piedras que jugar

En caso de ser dos los jugadores se suelen repartir siete piedras a cada ju

gador y las restantes se colocan sobre la mesa A este conjunto de piedras las

denominaremos el pil n cuando un jugador no tenga piedras que jugar debe

tomar una del pil n si con ella puede jugar lo hace de lo con trario debe con

tinuar tomando del pil n hasta obtener una que pueda jugar o que se acabe el

pil n

Inicio del juego

Se colocan las chas en el centro de la mesa cara aba jo nadie puede ver los

puntos de las chas Uno de los jugadores revuelve las chas utilizando mo

vimientos circulares con ambas manos Una vez que las chas est n revueltas

cada jugador toma y las coloca de pie frente a l de tal forma que ning n

otro jugador ni siquiera su compa ero pueda ver los puntos de las chas Un

jugador que tenga entre sus chas cinco om smulas puede indicarlo al resto

de los jugadores mostrando sus chas Todos los jugadores regresan sus chas

al centro para que sean de nuevo revueltas y tomadas

Este proceso puede

repetirse hasta que ning n jugador tenga om smulas en su mano

El jugador que posea la mula de seises es el primero en jugar colocando

esta cha en el centro de la mesa cara arriba mostrando los puntos A partir

de ese momento los jugadores realizar n su jugada siguiendo el sentido de las

manecillas del relo j

Planteamiento del Problema

En nuestro caso queremos que se escriba un programa que permita jugar el

JUEGO DE DOMIN entre una persona y la computadora No se asusten que

la computadora no tiene que jugar inteligentemente

Realmente no se pide que se implemente el juego completo s lo se requiere

que se puedan hacer partidas sueltas y que despu s de cada partida se desplie

gue un mensa je indicando el resultado de la misma El resultado debe incluir

el ganador y los puntos que le quedaron en mano al perdedor

Qu se espera del juego

Al empezar un juego se le debe solicitar al usuario su nombre para colocarlo

en alg n lugar adecuado en el tablero de juego

Si el usuario solicita un juego se debe crear el mismo generando aleato

riamente un conjunto de siete piedras para el usuario siete para la com

putadora y catorce para el pil n Alerta ro jo se debe veri car que no se

repitan ni falten piedras Ser a recomendable que los conjuntos de siete

tengan a lo sumo cuatro dobles

Se le debe pedir al usuario un n mero que permita decidir a la computa

dora qui n empieza el juego

Tanto la computadora como el usuario pueden empezar jugando cualquier

piedra

Se debe proveer el mecanismo para seleccionar qui n empieza

Es opcional obligar a jugar al principio un doble si el jugador que le toca

empezar lo tiene

Cuando le toque el turno a la computadora se debe

Elegir si es posible una de las piedras del conjunto de piedras de la

computadora para jugarla siguiendo la estrategia descrita m s aba jo

de lo contrario se debe seleccionar una de las piedras del pil n hasta

que alguna se pueda jugar o se agote el pil n Si no puede jugar debe

anunciarlo de lo contrario debe indicar que pieza jug

Se deben hacer todos los cambios pertinentes en el tablero de juego

Importa la creatividad

La estrategia de la computadora es

a Si tiene m s de una opci n de juego jugar la piedra m s grande

b

Si puede trancar

debe hacerlo si tiene menos piedras que su

oponente

c Si una piedra la puede colocar en cualquiera de los extremos de

la cadena colocarla en el extremo donde pueda trancar si le con

viene seg n la regla anterior o en el extremo que le proporcione

  • m schance de juego para la pr xima jugada Los n meros que

queden en los extremos proporcionen un m ximo del n mero de

piedras que pueda jugar despu s de colocarla

d

Se puede

agregar reglas adicionales que hagan el juego de la

computadora m s interesante

Cuando le toque el turno al usuario se debe poder

Realizar su jugada seleccionar la cha que desea jugar o tomar del

pil n las chas necesarias para completar su jugada

Se deben poder rechazar los intentos de realizar una jugada no v lida

Para ello se requiere un mecanismo para detectar si una jugada es

v lida

Proveer el mecanismo para que el usuario decida tomar una cha del

pil n Debe chequearse que el usuario en efecto no tenga piedras que

jugar Debe rechazarse tomar del pil n si el usuario tiene piedras

que jugar Una vez seleccionada la cha el usuario debe poder elegir

en que extremo jugarla si tiene dos alternativas de lo contrario la

jugada debe completarse autom ticamente

Debe chequearse que el usuario no pasa teniendo chas que pueda

jugar

En cada caso se debe actualizar estado del juego

En todo momento el usuario debe tener la opci n de abandonar el juego

El programa debe brindar la facilidad de que el usuario pueda estar jugan

do nuevas partidas hasta que se canse y decida abandonar la aplicaci n

El estado del juego se debe desplegar en una v entana que se dibujar usan

do la m quina de trazados La misma debe tener a la derecha una regi n

para dibujar las piedras del pil n que deben mostrarse por detr sy con

un n mero del uno al catorce que las identi que Las piedras del usuario

deben mostrarse descubiertas por defecto Las piedras de la computadora

se deben mostrar sobre la mesa cubiertas Lo que importa en este caso

es cuantas son Pero debe existir la opci n de mostrar las piedras de la

computadora y mostrar las piedras del pil n

La primera piedra que se coloca debe colocarse en el centro de la regi n

destinada para ello verticalmente si es un doble y horizontalmente si no lo

es

Debe proveerse un mecanismo para intercambiar los turnos de los jugado

res

Para lograr la apariencia visual del proyecto se usar la m quina de tra

zados que viene integrada con GaCeLa

Consultar en el GCLWiki las

primitivas que provee la misma

Se quiere que en la misma ventana si

fuese posible se representasen las piedras de los dos jugadores las piedras

del pil ny las piedras que se han ido jugando

La primer piedra juga

da se representar en la parte central de la regi n destinada para tal n

Los dobles se dibujaran verticalmente mientras que las dem s piedras se

dibujar n horizontalmente

Para complicar el proceso de dibujo todas

las piezas se

dibujar n en la

misma l nea

Sin embargo no se prohibe

si alguien quiere tomarse el traba jo de hacer los c lculos necesarios para

cambiar la direcci n de colocaci n de las piezas

Esquema que se Sugiere para el Programa

En base a los requerimientos se plantea el siguiente esquema del programa que

se quiere desarrollar

inicializarJuego

do quieroJugar

 

repartirFichas

jarQuienEmpieza

dibujarTableroInicial

 

do

noFin noAbandono

 

ejecutaJugada

actualizaTablero

cambiarJuagor

 

od

 

od

En este esquema se en tiende que quieroJugar noFin y noAbandono son va

riable que indican respectivamente que se quiere continuar jugando otra partida

que no se ha terminado la partida actual y que no se desea abandonar la partida

o el juego Se sugiere un n mero minimal de procedimientos con el n de per

mitir su ciente libertad en el dise o del programa Se pueden a adir otros si se

considera necesario No se indica donde preguntarle al usuario si desea abando

nar o si desea jugar otra partida Queda a juicio de cada equipo donde hacerlo

Posiblemente en la pr xima versi n se den otras sugerencias al respecto

Estructura de los Datos

El programa debe mantener la informaci n sobre las piedras que usuario las

piedras de la computadora y las piedras en el pil n Tambi n puede ser con

veniente almacenar la informaci n sobre las piedras jugadas Una manera de

representar la piedras del domin puede ser usando una matriz de de

enteros como se muestra
enteros como se muestra

Con esta representaci n de las chas del domin las piedras de cada juga

dor el pil ny las chas jugadas se pueden representar como arreglos de tama o

de

booleanos

En base a esta representaci n bara jar las chas consiste en

generar n meros aleatorios entre y ambos incluidos y asignarlos al usuario

ya la computadora Mientras que dibujar las chas del usuario consiste en re

correr el arreglo que representa las chas del usuario y dibujar las marcadas true

Tambi n hace falta mantener los valores actuales de las dos cabeceras de

la cadena de chas colocadas y las coordenadas de posiciones donde empieza y

termina la cadena de chas colocadas Podr a ser til almacenar la secuencia de

chas colocadas Si se quiere por ejemplo usar estrategias m s elaboradas para

el computador

Usted puede usar otra estructura de datos diferente esto es s lo una su

gerencia que no

tiene

por que

ser

la mejor

Adem s aqu s lo comentamos

algunas de las estructuras de datos que nos parecen relevantes Sientase libre de

seleccionar otras estructuras que le permitan llevar a feliz t rmino su proyecto

Material de Apoyo

Para la generaci n de n meros aleatorios revise algunos de los ejemplo del

GCLWiki

http gacela ac labf usb ve GCLWiki Uso del procedimiento random

Despu s de usar

random r la variable r

de tipo double toma un valor

entre r Si se desea un entero entre yn hay que multiplicar por

na ry truncar el valor usar toInt r n Buscar la acci n RANDOM

Realmente se puede usar random x x x

Para aprender a usar la m quina de trazados o incrementar sus destrezas

en el uso de la misma revise ejemplos en el GCLWiki P ngale particular

inter s al uso de las aserciones de correcci n

Consulte la guia del Prof

dente

Oscar Meza por ejemplos de an lisis descen

Tambi n puede encontrar en el GCLWiki informaci n sobre el uso de los

procedimientos y funciones en GCL

Entregas

Primera entrega Semana

Escriba en GaCeLa el esqueleto de su programa Declare las funciones y

procedimientos que usar indicando sus par metros formales Los cuerpos

no tiene que escribirlos

En su lugar haga que escriban un mensa je del

estilo hago tal cosa no estoy listo Los procedimientos escritos as se

suelen llamar dummy La intenci n es proveer un mecanismo para probar

el ujo de control del programa

Especi que y escriba un programa que bara je las chas esto es que haga

la repartici n de las chas entre el usuario y la computadora

Las no

repartidas son las del pil n Los resultados almacenados en las variable

usadas como estructura de datos deben mostrarse en pantalla como tres

listas denominadas usuario computadora y pil n Se debe escribir en la

pantalla el nombre de cada lista seguida por o lineas que contienen

cada una dos enteros que represente los tantos de cada cha

Procedimiento que dibuje el tablero que representar el juego El mismo

debe contemplar una regi n para las piedras en el pil n las piedras del

usuario y las piedras de la computadora

Se

requiere que se dibuje el

tablero inicial En esta etapa no se requiere que las piedras tengan pinta

dos los tantos Basta con dibujar los reversos Aseg rese de escribir las

condiciones de correcci n

Segunda entrega Semana

En esta entrega el programa debe ser capaz de simular la realizaci n de partidas

Ello incluye inicializar el juego repartir las chas mostrar el tablero inicial con

todos sus detalles y proveer la facilidad de terminar el ciclo de ejecuci n de

partidas En resumen se requiere

Inicializar el juego

Repartir las chas

Seleccionar el jugador que empieza el juego

Dibujar el tablero inicial con todos sus detalles

Preguntarle al usuario si quiere una nueva partida

L o que no se requiere es desarrol lar el DO interno

Entrega nal Semana

Para el d a de la revisi n usted deber llevar una versi n operativa del progra

ma en GCL que permita jugar domin seg n las especi caciones indicadas en

el planteamiento del problema Es importante que el equipo traba je de manera

integrada Durante la revisi n se veri car el funcionamiento del programa y se

har un interrogatorio corto a cada miembro del equipo

La versi n operativa del programa se deber entregar al profesor en un dis

quete debidamente identi cado

Adem s deber entregar un informe que describa en detalle todo el proceso

de dise oy desarrollo de la soluci n El informe no se debe limitar a reportar

las actividades indicadas en este enunciado las actividades deben servir de gu a

para elaborar el informe

En este sentido se sugiere que se entregue un informe que contenga las si

guientes secciones

Portada Una ho ja que contenga

Arriba a la izquierda el nombre de la universidad carrera y materia

Centrado nombre del proyecto

Aba jo a la izquierda nombre del profesor de laboratorio

Aba jo a la derecha nombre y carnet de los integrantes del equipo

Introducci n

Breve descripci n del problema atacado en el proyecto

Contenido del informe

Dise o

Resultado del an lisis descendente del problema Diferencias con el

an lisis presentado en este instructivo

Demostraciones de correcci n De las entregas

Optimizaciones

Detalles de implementaci n

Estructuras de datos Diferencias con el an lisis presentado en este

instructivo

Lista de procedimientos y funciones indicando la relaci n de invoca

  • ci n qui n invoca a qui n

C digo fuente documentado

Estado actual

Operatividad del programa decir si funciona perfectamente o no En

caso negativo describir las anomal as

Manual de operaci n nombre del archivo a ejecutar y modo de operar

el programa

Conclusiones

Resultados obtenidos

Di cultades presentadas

Recomendaciones

Bibliograf a

Libros revistas o cualquier recurso bibliogr co consultado Una referen

cia bibliogr ca debe incluir la siguiente informaci n

Libro autor es nombre editorial ya o

Art culo autor es nombre revista volumen n mero ya o

P gina Web autor es nombre url fecha ltima visita

A continuaci n se muestran algunos ejemplos de referencias bibliogr cas

Libro Blair D Language and Representation in Information Retrieval

Elsevier Science Publisher

Revista Isaacson M What is SMDI Electronic Musician p

P gina Web Sun Microsystems The Java Tutorial http java sun com

Noviembre

Sobre la ltima entrega

Al inicio de la clase de la semana usted deber entregar en un sobre

sellado y debidamente identi cado nombre y carnet de los integrantes del

equipo y nombre del proyecto

Un disquete debidamen te identi cado nombre y carnet de los inte

grantes del equipo y nombre del proyecto que contenga en el direc

torio ra z los archivos gcl de su proyecto El disquete debe estar libre

de defectos f sicos y de virus

En caso de que el disquete no tenga

la informaci n requerida o presente alg n tipo de defecto se asignar

una nota de cero a la revisi n de la corrida

Un informe seg n la estructura sugerida anteriormente

El listado del programa debidamente documentado

Los sobres se deben entregar puntualmente en el laboratorio a la

hora de entrada No se recibir n proyectos despu s de hora