Beruflich Dokumente
Kultur Dokumente
Cada barco es nico y est representado por un nmero que indica su longitud. Las celdas vacas contienen un cero y las celdas de los barcos hundidos contienen un -1. Ud. Debe implementar: 1. Un juego que permita colocar un barco dada una coordenada, una longitud y una direccin (horizontal=0, vertical =1). El barco no puede utilizar ninguna de las celdas ya ocupadas. El programa retorna un mensaje si el barco fue colocado exitosamente. 2. Permitir disparar a un barco. Cuando el disparo se realiza: Si cae en el mar o en una posicin de barco hundido, los puntos=0. Si la celda atacada contena un barco se debe hundir el barco actualizando con -1 todas las casillas de ese barco. Los puntos son iguales a la longitud del barco. 3. Al final del programa muestre los puntos ganados Nota: asuma que en el tablero solo puede existir un bote de la misma longitud
DIM=6 mar=zeros(DIM,DIM) puntos=0 colocado=1 op=0 while(op<>3) disp("Elija su operacion:") disp("1) Colocar") disp("2) Disparar") disp("3) Salir") op=input("Ingrese su eleccion:") select(op) case(1) longitud=input("Ingrese la longitud del bote: ") direccion=input("Ingrese la direccion del bote (horizontal=0, vertical =1): ") fila=input("Ingrese la fila del bote: ") columna=input("Ingrese la columna del bote: ") for i=1:1:longitud if (direccion==1) then if((columna>DIM)|(fila+longitud-1>DIM)|(mar(fila+i-1,columna)<>0)) then colocado=0 end end if (direccion==0) then if((fila>DIM)|(columna+longitud-1>DIM)|(mar(fila,columna+i-1)<>0)) then colocado=0 end end end if (colocado==1) then if (direccion==1) then for i=1:1:longitud mar(fila+i-1,columna)=longitud end else for i=1:1:longitud mar(fila,columna+i-1)=longitud
end end mprintf("Se coloco el bote de longitud %i en direccion %i en la posicion %i,%i\n",longitud,direccion,fila,columna); else disp("No se puede colocar el bote en esa posicion.") end colocado=1 disp(mar) case(2) fila=input("Ingrese la fila: ") columna=input("Ingrese la columna: ") if (fila>DIM | columna >DIM) then disp("Coordenadas invalidas.") disp(mar) else if ((mar(fila,columna)==0)|(mar(fila,columna)==-1)) then disp("No se hundio barco.") else num=mar(fila,columna) for i=1:1:DIM if (mar(i,columna)==num) then mar(i,columna)=-1 end if (mar(fila,i)==num) then mar(fila,i)=-1 end end puntos=puntos+num mprintf("Se hundio el barco de longitud, %i\n",num); disp(mar) end end end mprintf("Puntos ganados: %i",puntos) end