Practica 2. Simón dice

Transcripción

Practica 2. Simón dice
Laboratorio de Programación. Curso 2002/2003
1er Curso Ingeniería Técnica de Telecomunicación
Práctica 2
UMA -LCC
Simón dice...
Fecha de entrega:
En esta práctica se aprenderá a:
- Manejar de números aleatorios
- Trabajar con arrays
- Crear proyectos utilizando la librería allegro
- Controlar el ratón
- Dibujar en pantalla
Se desea desarrollar el juego de ‘Simón dice...’. En este juego hay 4 casillas de colores (rojo, verde,
azul y amarillo). El ordenador da una secuencia de colores que el usuario debe repetir. La secuencia
empieza con un solo color y va creciendo hasta que el usuario falla. Ejemplo: 1ª Vez: rojo, 2ª:rojo,
amarillo, 3ª rojo, amarillo, rojo .... El jugador obtendrá tantos puntos como la longitud de la
secuencia.
Para almacenar la secuencia puede utilizarse un array de naturales que contenga valores de 1..4 cada
posición de la secuencia.
Para trabajar con la librería allegro que permitirá crear ventanas, dibujar, manejar el teclado y ratón,
se puede crear un procedimiento InicializaAllegro como el siguiente:
void InicializaAllegro() {
// Initializa la librería Allegro.
allegro_init();
set_color_depth(24); // Pone el número de colores a 24 bits
// Selecciona la resolución de la pantalla a 640x480
set_gfx_mode(GFX_SAFE, 640, 480, 0, 0);
install_keyboard(); // Inicializa las funciones de teclado de la librería
install_timer();// Inicializa los temporizadores necesarios para manejar el ratón
install_mouse(); // Prepara el ratón para poder utilizarlo
show_mouse(screen); // Muestra el ratón en pantalla
}
Se recomienda mirar con detalle todas las funciones expuestas en la ayuda de allegro para conocer
exactamente su funcionamiento.
En esta librería la variable screen hace referencia a la pantalla. Por ejemplo, para pintar un
rectángulo en la pantalla se utiliza la función rect(pantalla,x1,y1,x2,y2,color) y un rectangulo
relleno rectfill(pantalla,x1,y1,x2,y2,color). Donde (x1,y1) es la esquina superior izquierda del
rectángulo y (x2,y2) la esquina inferior derecha. Si la resolución es de 640x480 quiere decir que
x1,x2 pueden tomar un valor entre [0..639] e y1,y2 entre [0..479]. El color es un número
hexadecimal en RGB(Rojo,Verde y Azul) 0xRRGGBB, es decir para cada tonalidad se pueden
poner dos valores entre 00 y FF. Ejemplos: Blanco(0xFFFFFF), Negro(0x000000),
Amarillo(0xFFFF00), Rojo (0xFF0000). En cualquier programa de dibujo se pueden obtener estos
Notas:
1. De cada práctica debe entregarse:
? un programa C++ que la resuelva, debidamente comentado y legible;
? un fichero de texto donde se incluya una 'memoria' del desarrollo del programa
incluyendo el enfoque dado, las decisiones en cuanto a uso de estructuras de
datos, control y modularización.
2. Las prácticas serán revisadas con el alumno para determinar su valoración.
Laboratorio de Programación. Curso 2002/2003
Práctica 2
er
1 Curso Ingeniería Técnica de Telecomunicación
UMA -LCC
valores para cualquier color. Un ejemplo que pintaría un rectángulo rojo de la llamada para pintar
un rectangulo sería: rect(screen,100,100,200,200,0xFF0000).
El manejo del ratón también es muy sencillo. Tras inicializar el ratón con install_mouse, se puede
acceder en cualquier momento a las coordenadas del ratón con las variables enteras mouse_x y
mouse_y. Por ejemplo, si mouse_x=100 y mouse_y=234 indica que el ratón está en la coordenada
(100,234) de la pantalla. Para saber si se ha pulsado el botón izquierdo del ratón, se puede utilizar la
variable mouse_b que indica si se ha pulsado un botón, la expresión mouse_b & 1 vale 1 si el
botón izquierdo se ha pulsado. Para comprobar si se ha pulsado el botón derecho la expresión a
consultar es (mouse_b & 2 == 2).
Para saber si el ratón está dentro de un rectángulo, es suficiente con comprobar las coordenadas de
los extremos. Por ejemplo, si el ratón está en (x,y), se localizará dentro del rectángulo
(100,200,150,250) si se cumple que (100<x<150) y (200<y<250).
Si se quiere producir un retraso, es decir, parar la ejecución durante un tiempo, se puede utilizar la
instrucción rest(milisegundos). Por ejemplo, rest(1000) para el programa un segundo.
Es importante diferenciar y separar el algoritmo para solucionar el problema de la interfaz utilizada.
Notas:
1. De cada práctica debe entregarse:
? un programa C++ que la resuelva, debidamente comentado y legible;
? un fichero de texto donde se incluya una 'memoria' del desarrollo del programa
incluyendo el enfoque dado, las decisiones en cuanto a uso de estructuras de
datos, control y modularización.
2. Las prácticas serán revisadas con el alumno para determinar su valoración.

Documentos relacionados