PrInf15: Juego: acertar en un polígono
| Práctica de Informática | |
|---|---|
| Juego: acertar en un polígono | |
| Práctica anterior | Siguiente práctica |
| Este artículo es un guión de prácticas de Informática | |
En esta práctica vamos a aplicar los conocimientos que hemos adquirido sobre bucles para crear un juego sencillo. Se trata de pedir al usuario un punto, que representa una posición en el plano, y comprobar si el punto está dentro de un polígono. El jugador acierta si proporciona un punto dentro del polígono. Si no acierta dentro del polígono, se le da otra oportunidad. Si alcanza un número límite de intentos, pierde la partida.
Contenido
1 Requisitos previos
Es importante haber realizado las siguientes prácticas antes de realizar esta práctica:
2 Comandos que se aprenderán en esta práctica
| fill | inpolygon |
3 Contenido de la práctica
Al igual que en la práctica anterior, en este caso usaremos un bucle while que tiene una condición compleja. Para implementar esta condición podemos usar tanto un operador lógico, como un break dentro del bucle. En la práctica usaremos un break, y dejaremos como ejercicio post-práctica la implementación que usa un operador lógico y evita el break.
Este programa tiene dos partes complejas, que no hemos programado hasta ahora:
- Representar y dibujar un polígono
- Comprobar si un punto está dentro de un polígono
3.1 Representar y dibujar un polígono
Para representar y dibujar un polígono podemos usar la función fill.
| |
Tarea: | Comprueba cómo se usa la función fill usando help fill |
La función fill acepta tres argumentos de entrada:
- Un vector con las coordenadas x de los vértices del polígono
- Un vector con las coordenadas y de los vértices del polígono
- El color con el que se va a rellenar el polígono
Cada vértice del polígono es un punto en el plano, que tendrá dos coordenadas. Por ejemplo, el punto de la imagen de la derecha tiene como coordenadas [math]x=3[/math] e [math]y=2[/math], y se representa como [math](3,2)[/math]. Si tenemos varios puntos y los unimos, podemos formar un polígono. Por ejemplo, con tres puntos podemos formar un triángulo.
El comando fill se encarga de unir los puntos y dibujar el polígono. Pero tiene una manera peculiar de recibir los puntos que forman el polígono. En vez de recibir una lista de puntos, acepta por un lado la lista de las coordenadas x de esos puntos, y como segundo argumento la lista de las coordenadas y de los mismos puntos. Además, necesita también que especifiquemos el color con el que va a pintar el polígono. Si alguno de estos tres argumentos no es correcto, la función fill no pintará el polígono.
Por ejemplo, el triángulo de la derecha está formado por los tres puntos siguientes: [math]\begin{matrix} P1:& (0, 0)\\ P2:& (0.5, 1)\\ P3:& (1, 0)\\ \end{matrix}[/math] Sin embargo, para poder representarlo con el comando fill tenemos que separar las coordenadas x e y de cada punto. El orden en el que ponemos las coordenadas es importante, ya que tanto el vector x como el vector y tienen que coincidir en sus posiciones (de lo contrario, estaríamos representando un polígono diferente):
x = [0 0.5 1];
y = [0 1 0];
fill(x, y, 'g'); % Lo pinta de color verde, g viene de greenEl comando anterior dibujaría el triángulo relleno de color verde. La forma del triángulo es similar a la mostrada en la figura de la derecha.