• Nenhum resultado encontrado

UNIVERSIDAD DE COSTA RICA FACULTAD DE INGENIERIA Escuela de Ciencias de la Computación e Informática CI-0202 Principios de Informática – Tarea Programada 2 – – Scrabble a la tica -

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDAD DE COSTA RICA FACULTAD DE INGENIERIA Escuela de Ciencias de la Computación e Informática CI-0202 Principios de Informática – Tarea Programada 2 – – Scrabble a la tica -"

Copied!
3
0
0

Texto

(1)

UNIVERSIDAD DE COSTA RICA FACULTAD DE INGENIERIA

Escuela de Ciencias de la Computación e Informática

CI-0202 Principios de Informática Tarea Programada 2 –

Scrabble a la tica -

Objetivo: Repasar los principales conceptos de vectores, matrices y recursividad.

Fecha de Entrega: Jueves 11 de noviembre.

Entregables: CD con el código fuente y documento impreso en sobre de manila.

Forma de Trabajo: Grupos de máximo 3 personas

La segunda tarea programada consiste en implementar una versión a la tica del conocido juego de mesa llamado Scrabble. El programa debe permitir a un usuario jugar contra la máquina siguiendo las reglas del juego (con algunas variantes).

Scrabble es un juego en el cual cada jugador intenta ganar más puntos mediante la construcción de palabras sobre un tablero de 15x15. Las palabras pueden formarse horizontalmente o verticalmente y se pueden cruzar siempre y cuando aparezcan en el diccionario estándar. El juego se realiza entre 2 jugadores, sobre un tablero de 15x15 casillas, en las que cada jugador coloca sus fichas. Cada jugador recibe 7 fichas (o letras). Las letras se encuentran numeradas con su respectivo valor, y por lo tanto, cada jugador obtiene por cada palabra formada un puntaje que depende tanto del valor de las letras empleadas como de la posición de dichas letras dentro del tablero. En total hay 100 fichas. Según su frecuencia de aparición, las letras tienen más o menos puntos, siempre las de mayor frecuencia valen menos. Las ediciones en inglés cuentan con 100 cuadros, en la siguiente distribución:

1 punto: E×12, A×11, I×9, O ×8, N×6, R×6, T×6, L×4, S×4, U×4 2 puntos: D×4, G×3

3 puntos: B×2, C×2, M×2, P×2 4 puntos: F×2, H×2, V×2, W×2, Y×2 5 puntos: K×1

8 puntos: J×1, X×1 10 puntos: Q×1, Z×1

Su programa al iniciar debe presentar un menú en el aparecen las siguientes opciones:

1. Jugar

(2)

2 2. Salir

Cuando el usuario selecciona Jugar, el programa debe solicitarle el nombre. Luego, el programa le reparte 7 letras a cada jugador y pone las demás en una bolsa. Después, el programa debe escoger dos letras aleatoriamente (una para el jugador y otra para la máquina). El que saque la letra menor empieza. La máquina y el jugador se turnan para intentar colocar una palabra en el tablero. Cuando es el turno del jugador, el programa le muestra las letras que tiene numeradas y le presenta un menú de 4 opciones:

1. Poner palabra nueva 2. Completar palabra 3. Pasar

4. Cambiar letras

Si el jugador elige poner una palabra nueva entonces el programa debe preguntarle al usuario cual palabra desea colocar. Cuando el usuario dice cuál palabra desea el programa debe hacer dos validaciones: que el jugador tenga todas las letras necesarias y que la palabra esté en el diccionario, luego pone la palabra del usuario en la primera fila que esté vacía. Si el jugador elige completar palabra entonces el programa debe preguntarle en cuál fila está la palabra que desea completar (la primera fila es la 1) y luego cuál es el sufijo que desea colocar. De nuevo el programa debe hacer dos validaciones: que el jugador tenga todas las letras para el sufijo y que la palabra completa de la fila esté en el diccionario.

Si es la máquina la que está jugando entonces el algoritmo es diferente. Cuando le toca a la máquina, el programa debe calcular todas las posibles palabras desde 2 hasta 7 que se pueden formar con las letras que tiene la máquina en la mano (Esto se conoce como n-gramas). Luego, por cada palabra debe verificarse que exista en el diccionario, si no se deshecha. Cuando se tienen solamente las palabras válidas se debe calcular cuál palabra tiene el mayor puntaje y ponerla en el tablero. Si al finalizar este proceso la máquina no puede poner ninguna palabra entonces pasa.

Cada palabra que la máquina pone se coloca en una fila por aparte. La máquina no puede completar palabras.

Cuando el jugador termina de poner la palabra, el programa debe revisar si la palabra colocada por el jugador existe en el diccionario. En caso negativo, le informa al usuario, limpia el tablero y le presente pregunta cuántas letras desea colocar de nuevo. En caso positivo, el programa debe calcular el puntaje total que obtuvo el jugador. El puntaje total de una jugada se compone la suma del puntaje de cada letra.

Antes de terminar el turno del jugador se debe darle las fichas necesarias para completar las 7 de la bolsa o las que haya en caso de que ya no queden. El juego termina cuando ya que no quedan letras en la bolsa y ambos jugadores ya no tienen fichas en la mano o cuando ya no quedan letras en la bolsa y ambos jugadores han pasado su turno 2 veces. Cuando el juego termina, el programa decida quién es el ganador basado en la puntuación total, sin embargo antes de declarar al

(3)

3

ganador, el programa debe restar al puntaje total el puntaje que suman las fichas que cada jugador tiene en la mano. El que tenga el mayor puntaje total gana.

Con respecto al diccionario, este también es cargado de un archivo de texto cuando el programa inicia. La primera línea de este archivo indica la cantidad de palabras que contiene el diccionario y a partir de la segunda viene una palabra por línea ordenadas alfabéticamente (Se adjunta ejemplo). Cuando el programa inicia debe leer todas las palabras del diccionario (del archivo) y cargarlos en un vector. Este es el vector que se consulta para poder ver si una palabra existe o no (por ejemplo utilizando búsqueda binaria).

Para mostrar el tablero deberán utilizar una clase desarrollada por el profesor llamada ScrabbleBoard. Esta clase dibuja una ventana con el tablero completo y las fichas del jugador con base en dos parámetros que se deben enviar: la matriz de caracteres representando el tablero y un vector de caracteres representando las fichas del usuario humano.

Figura 1. Tablero dibujado por la clase ScrabbleBoard (con letras generadas al azar)

Referências

Documentos relacionados

“Dispõe sobre a classificação dos corpos de água e diretrizes ambientais para o seu enquadramento, bem como estabelece as condições e padrões de lançamento de

This work proposes an optimization model for the Link Scheduling Problem based on Fractional Edge-Coloring considering the Physical Interference Model. The Physical In- terference

Desta forma, conclui-se que o IMC não é um bom parâmetro para classificar o estado nutricional de atletas de futsal quando comparado ao percentual de

Tabela 9 Principais cadeias hoteleiras internacionais no Brasil.... O propósito deste estudo de caso no Praia Brava Hotel, em Florianópolis, foi o de propor estratégias

No âmbito da presente dissertação e indo de encontro ao objectivo proposto, pretende-se neste capítulo apresentar os endurecedores utilizados no estudo, as

Regarding solubility studies, two different types of profiles were noted: the β-CyD and HP-β-CyD systems exhibited an A P type phase solubility curve while the

Quanto a massa seca de frutos, no outono as plantas de T2 evidenciaram valores in- feriores, porém as diferenças não foram significativas em relação a T1 (Figura 2c e Tabela 1)..

As matrizes de custos anuais e custos médios de produção de vapor a partir de geradores movidos pela queima da madeira picada e pela queima de óleo combustível são