Ejercicio de C: El Juego de los Barquitos Diseñar e implementar en lenguaje C, el juego de los barquitos, teniendo en cuenta las siguientes consideraciones:
Introducción: Es un juego para dos jugadores, cada uno tendrá un tablero de juego de 10x10 casillas, en el que deben situar los siguientes elementos: 1 barco de 5 posiciones 1 barco de 4 posiciones 2 barcos de 3 posiciones 2 barcos de 2 posiciones 2 barcos de 1 posición
o o o o o
El juego consiste en intentar acertar en qué posiciones ha colocado el jugador contrario todos sus barcos. Para ello los jugadores realizarán disparos alternativos hasta conseguir el objetivo final del juego.
Consideraciones: El juego empieza mostrando el tablero del jugador1 y a continuación pidiendo la introducción de los barcos del jugador. En la introducción tendrá que controlarse:
1. 2. 3. 4. 5.
Que los valores valores de las las casillas introducidas son válidos, es es decir, están entre 1 y 10. Que la posición posición no está ocupada por otro barco. Las posiciones de un barco deben ser contiguas. Los barcos sólo pueden estar en posición horizontal o vertical. Los barcos tienen que estar separados unos de otros por al menos una casilla. Cada vez que se introduce una posición de un barco de forma forma correcta, debe debe borrase la pantalla y volver a dibujar el tablero, mostrando la situación de los barcos introducidos hasta el momento. 1
2
3
4
5
6
B
B
B
B
B
7
8
9
1 2 3
B
4
B
5
B
6
B
10
La letra B permitirá ver dónde se han introducido los barcos. En este caso, se han introducido ya, los barcos de 5 y 4 posiciones y se está solicitando que se introduzca la primera casilla del barco de 3.
7 8 9 10
Jugador 1: Introduce 1ª posición del barco de 3: Horizontal?: 3 Vertical?: 4
Se repite el proceso para el jugador 2 y comienza el juego!!
La dinámica general del juego consiste en ir alternando los disparos de ambos jugadores hasta que uno de ellos consiga acertar todas las posiciones del otro.
Cada vez que un jugador dispara, debemos tener en cuenta:
1.
Antes de introducir las coordenadas de disparo, debe borrarse la pantalla y mostrar el tablero del del jugador contrario, indicando las casillas a las que ya hemos disparado. 2. Hay que controlar controlar que los valores de las casillas introducidas son válidos, es decir, decir, están entre 1 y 10. 3. Si al disparar acertamos sobre un barco, dirá “TOCADO!” “TOCADO!” o “HUNDIDO!”. “HUNDIDO!”. Si por el contrario fallamos indicará “AGUA!”
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tablero Jugador 2 1
2
3
4
5
1 2
6
7
8
9
10
T
T
A
A A
3
A
4
H
5
H
6
H
7
H
A A
A A
A
A
A- Indica “Agua”, se ha disparado, pero no hay un barco en esa posición. T- indica “Tocado”, se ha acertado la posición de un barco.
A
8 9
Simbología:
A
A
H- Indica “Hundido”, se ha hundido un barco
10
Jugador 1: Introduce coordenadas de tiro: Horizontal?: 1 Vertical?: 1
Mejoras: Situar los barcos introduciendo sólo una coordenada y la dirección en la que se colocará, es decir a la izquierda, derecha, arriba o abajo. Mostrar una pantalla inicial de Ayuda/Introducción del juego, en la que se explique el objetivo y reglas del juego. Se tendrán en cuanta la limpieza del trabajo y la presentación de cara al usuario del juego. Cuando el juego termina, preguntar si se desea volver a jugar. Poder interrumpir el juego durante la partida y no tener que esperar al final para salir del programa.
NOTAS: o
Podemos utilizar funciones para no tener que repetir código:
/*Ejemplo de funciones*/ #include main() { printf(“Este mensaje lo muestra la función main\n”); MiFuncion(); } /*Defino la función*/ MiFuncion() { printf(“Este otro mensaje lo imprime la función MiFuncion\n”); }
También puedo usar funciones a las que se les pasan datos (Parámetros): /*Ejemplo de funciones con parámetros*/ #include main() { Int num; printf(“Introduce un número\n”); scanf(“%d”, &num); cuadrado(num); } /*Defino la función cuadrado*/