Título: problema con el juego de undir la flota Publicado por: MessageBoxA en 22 Julio 2014, 05:04 am buenas e estado realizando un proyecto de la universidad y e logrado hacer muchas cosas ahora luego que finalice el proyecto a mi profesor se le ocurrio la idea de hacer que en vez de un barco sea igual a una sola posicion de la matriz, quiere que sea un barco formado por varias secciones y con sentidos definidos.
(http://thumbs.subefotos.com/f1a70818d36502593b0a1019ee9f2e64o.jpg) aqui el codigo que entregue y quiere q sea el mismo code que modifique pero realmente si me cuesta evaluar con una sola posicion no se como hacer con varias posiciones al mismo tiempo para determinar si esta undido el barco y tambien el colocarlos en el tablero por ser de varias secciones. Código
Título: Re: problema con el juego de undir la flota Publicado por: eferion en 22 Julio 2014, 09:18 am Necesitas una estructura que te permita almacenar el estado y/o la posición de los barcos:
Código
Con esto ya puedes "modelar" cada uno de los barcos. Lo ideal sería tener una instrucción que permitiese crear los barcos. Algo del tipo: Código
En este caso, "estado" almacena la "vida" del barco... si la vida llega a 0, el barco se considera hundido. Como puedes ver, no uso memoria dinámica para los barcos... no es necesaria. Una vez tienes la flota creada, lo suyo es posicionarla. Por la cantidad de barcos que hay no se me ocurre una combinación (tampoco voy a buscarla) en la que no se puedan colocar todos los barcos... yo, en primer lugar, crearía los barcos del más grande al más pequeño y, después, intentaría posicionarlos en ese orden. Una forma de posicionar los barcos pudiera ser: En un bucle, elegir al azar un par de coordenadas (x,y) y una posición (vertical u horizontal), después compruebas si el barco "entra" en esa posición... y repites el bucle hasta dar con una posición "válida". Ahora toca inicializar el tablero para borrar la partida anterior si la hubiese. Una vez has realizado estos pasos el programa está listo para iniciar la partida. Cada vez que introduces unas coordenadas de disparo puedes hacer los siguientes chequeos: * Si es una casilla que ya ha sido atacada, se piden nuevas coordenadas * Se recorre el array de barcos y se comprueba si algún barco se encuentra en la coordenada seleccionada... si es así, actualizas el estado del barco para anotar un "toque". Llegados a este punto, si la vida de 3 barcos es 0, el jugador gana la partida. Si no hay barcos en la coordenada marcada... indicas "agua". A continuación el prototipo de una función que determine si un barco ha resultado "tocado". Código
Creo que con estas guías debería ser sencillo completar el programa. |