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.