[ Foro de Pascal ]

hundidos

29-Dec-2015 06:33
Invitado (ramirocolom)
6 Respuestas

hola buenas noches
tengo que realizar un programa para un juego denominado barcos en el cual juegan dos jugadores cada uno con un numero de barcos, cada jugador en su turno lanza a su adversario un proyectil hacia una coordenada  determinada, el jugador que recibe el proyectil debe verificar si este a caido en el agua o sobre una de sus naves avisando  de esto al jugador que lo lanzo

el juego termina cuando alguno de los dos jugadores logra hundir todos los barcos de su adversario. cada nave ocupara un numero no determinado de celdas horizontales menor al numero de celdas correspondiemtes,
una celda con agua se indicara con el valor A
Una celda con barco se indicara con   el valor B
una celda con un segmento de barco donde cayo un proyectil se denotara con una I de impacto

mediante una funcion que reciba un vector conteniendo un barco y devuelva un mensaje si el barco esta hundido si todas sus celdas han sido impactadas por un proyectil.

bien yo se como llenar la matriz inicial visualizando que celdas son agua, barco e impacto, pero como puedo hacer el vector que contiene el barco y pasarlo a una funcion como parametro? agradezco cualquier orientacion para poder llegar  a la solucion, estoy aprendiendo y me esta costando, gracias por su gentileza en ayudarme


29-Dec-2015 16:40
Nacho Cabanes (+83)

Yo tampoco entiendo para qué es necesario pasar el barco como vector.

Pasar un array como parámetro es fácil, se hace casi igual que cualquier otro parámetro (y un vector es simplemente un array unidimensional). Pero no entiendo cómo pretenden que sea ese vector y quizá debas pedir que te lo aclaren.

A mí se me ocurre un par de formar en las que se podría plantear: una es indicando las coordenadas iniciales y finales del barco: (x1, y1, x2, y2); otra un poco más enrevesada podría ser indicando la posición inicial, longitud y dirección: (x1, y1, long, direcc). Pero como no hay un única implementación posible, mejor que preguntes a tu profesor.


29-Dec-2015 19:13
Invitado (ramirocolom)

buen dia profesor nacho,
efectivamente debe pasarse indicando las coordenadas para saber asi que longitud de celdas horizontales abarca el barco y a apartir de ahi lo que debe hacerse es validar si en todas sus celdas hay  impactos  (I) o ninguno(A) para asi saber si el barco fue  tu ayuda hundido o no respectivamente, es lo que me explico el profesor de mi catedra, agradezco a apartir de esto si puedes hacharme una mano para saber como puedo verificar si estan todos los impactos en la longitud del barco que se pasa como parametroa traves de un array.
muy agradecido por tu orientacin y ayuda posible


30-Dec-2015 18:26
Luis Torres (+18)

Creo que Turbo Pascal no permite el paso de vectores de distinta longitud (dimensión), en ese caso habría que declarar un vector del mismo tamaño que el número de columnas de la matriz que hará las veces de océano.  En algún momento de la ejecución del programa habrá que asignarle a ese vector todos los elementos de la fila de la matriz que contiene el barco.

Saludos.


30-Dec-2015 22:52
Invitado (ramirocolom)

hola luis ok , sin embargo me gustaria saber como puedo manejar el resto del programa sin tener en cuenta la funcion que piden es decir como seria el proceso para cada jugador y sus turnos , asi como mostrar la matriz con las letras designadas con A,B Y I , una vez se piden las coordenadas donde se ubicara cada barco para cada jugador, me gustaria una ayuda en ese sentido es que nunca he hecho un juego y no se como manejar los turnos y el lanzamiento de los proyectiles indicando para cada caso si se hundio completamente el barco u cayo en agua el proyectil, agradezco tu ayuda


31-Dec-2015 01:02
Luis Torres (+18)

Lamento no poder ayudarte, yo tampoco he hecho algún programa similar a ese, pensé que se trataba solo de una función y no de un programa completo; además, he estado un poco mal de salud durante los últimos días. El profesor Nacho Cabanes de seguro te dará una mano.

Saludos.


04-Jan-2016 12:06
Nacho Cabanes (+83)

Para pasar un vector, basta con que te definas un nuevo tipo de datos.

Si el problema es todo el programa en sí, porque nunca has hecho un juego por turnos, deberías empezar por hacer uno (mucho) más sencillo que te ayude a entender los fundamentos, pero en el que vayas a tener errores más sencillos que puedas resolver tú solo (o casi) y de los que puedas aprender. Yo te recomendaría empezar por un "tres en raya" (TicTacToe, Tatetí...):

https://es.wikipedia.org/wiki/Tres_en_l%C3%ADnea
 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)