Sunteți pe pagina 1din 7

ALGORITMO

INICIO Inicio del programa

M=matriz, al inicio el usuario puede ver sin


Matriz(m) barcos, aparecen cada vez van disparando.

Se establece la matriz
M[1,10]
Se solicita al usuario la fila a disparar

El sig. Bucle Indique fila


a disparar Luego del ingreso del num se guarda en
permite el ingreso
de un num dentro una variable (v).
del rango. v=Ingreso
de fila
Indicar número La fila debe estar dentro del rango de la
dentro del rango matriz, se debe aceptar el num que se
Numero(v)
establece para rendirse, fuera del rango de
dentro del rango la matriz.
(v>=1&&v<=10&
No &v~=rendirse

Si
Luego de la fila se establece la columna a
El sig. Bucle disparar.
Indique columna
permite el ingreso a disparar
de un num dentro
del rango. Se ingresa número y se guarda en una
u=columna
ingresada variable.
Indicar número
dentro del rango

Numero(u)
dentro del rango
(u>=1&&u<=10&
No &u~=rendirse

Si

Se termina el juego, si el numero


Indicar al usuario
Si ingresado es la variable que se
que se ha rendido v=rendirse||
estableció.
u=rendirse

Disp(“Te rendiste”) Muestra un


disparo al agua
Si
If Si en la coordenada elegida (v,u)hay
Disp(“Disparo para el agua”)
M(v,u)==0 cero, quiere decir que no hay barcos.

No
No
Si existe disparo se Hay un barco si aparece en la
Elseif
muestra el num 1. m(v,u)=1 coordinada asignada el 3,4 y 5.
Se crea contador
v M(v,u)==barco
disparos fallados.

Muestra matriz fallos=+1


Cuando dispara al barco en la matriz
actualizada.
m(v,u)=1 que el usuario ve aparece el 1.
Disp(“m”) v Matriz que contiene los barcos, si
hay disparo aparece el 1.
Muestra juego ganado M(v,u)=1

Disp(“Excelente
juego..felicitaciones”) aciertos=+1 Contador para disparos acertados

Si
¿Derribaste Al derribar todos los barcos
todos los finaliza el juego.
barcos?
Se asigna puntuación
Disp(“Disparos”) adicional según el barco y se
Elseif No Disp(“lancha derribada) muestra el nombre del barco
Disp(“Fallos”) Si
M(v,u)==10
derribado
Disp(“Aciertos”) ¿Lancha
derribada? Pto_lancha=5
Disp(“Repeticiones”)

Disp(“Total puntos”) No
Disp(“disparos repetidos”)
Disp(“acorazado derribado)
¿Acorazado
derribado?
Repeticiones=11 Pto_acorazado=10
5
Si
FIN
Disp(“portaviones derribado)
Si aparece el 1 ¿portaviones
en la derribado?
coordenada
Pto_portaviones=15
elegida es No
Muestra porque hubo
puntuación de disparo.
los diferentes
disparos y el Muestra
puntaje total. mensaje.

Contador
disparos
repetidos.

El siguiente bucle se repite mientras


no se haya derribado los barcos.
CODIGO FUENTE EN MATLAB
fprintf('Juegos Didácticos en línea Toys2020. Batalla Naval\n');

orden=10;
pta=5;
aco=4;
lan=3;
jugar=1;
ptarriba=1;
acoarriba=1;
lanarriba=1;
rendirese=50;
puntos=0;
ptaderribado=0;
acoderribado=0;
landerribado=0;
disparos=0; aciertos=0; fallos=0; repeticiones=0;
contadorprueba=0;

m=zeros(orden,orden);
M=zeros(orden,orden);

x=randi([1,orden],1);
y=randi([1,orden-pta+1],1);
for i=0:pta-1;
M(y+i,x)=pta;
end
z=randi([1,orden]);
if x<=4
a=randi([x+1,orden+1-aco]);
elseif x>=7
a=randi([1,x-aco]);
elseif x>4 && x<7
a=randi([x+1,orden+1-aco]);
end
for i=0:aco-1;
M(z,a+i)=aco;
end

t=1;
while t==1
fi=randi([1,orden]);
if fi~=z
t=0;
end
end
if x<4
r=randi([x+1,orden+1-lan]);
elseif x>=7
r=randi([1,x-lan]);
elseif x>4 && x<7
r=randi([1,x-lan]);
end
for i=0:lan-1
M(fi,r+i)=lan;
end
disp(M);

fprintf("Escribir un numero para rendirse, el cual debe ser diferente al rango de la


matriz: \n");
fprintf("n!=[1,"+orden+"]\n");
rendirse=input("Mencionar numero para rendirse: ");
while rendirse >=1 && rendirse <=orden
rendirse=input("El numero no puede ser del mismo rango de la matriz");
end
while jugar==1
fprintf(" \n")
v=input("¿Rendirse?\n Presiona: "+rendirse+"\n Indique fila a disparar: \n");
while v~=rendirse && v<1 || v~=rendirse && v>10
v=input("Indicar fila de disparo: ");
end

if v==rendirse
fprintf(" \n")
disp(" ¡Ups!Te rendiste ");
jugar=0;
end
if jugar==0
else
u=input("Indicar columna a disparar: ");
while u~=rendirse && u<1 || u~=rendirse && u>10
u=input("Indicar columna de disparos: ");
end

if u==rendirse
fprintf(" \n")
dips(" ¡Ups! Te rendiste ");
jugar=0;
else

fprintf(" \n")
disp(m);
for i=1:1
disparos=disparos+1;
end
tiro=M(v,u);

if tiro==0
disp(" ¡Disparo para el agua! ");
m(v,u)=8;
disp(m);
for i=1:1
fallos=fallos+1;
end

elseif tiro==10
fprintf(" Ups...Impactaste antes... ");
for i=1:1
repeticiones=repeticiones+1;
end
else
M(v,u)=10;
disp(" ¡Excelente! Impacto al Barco ");
m(v,u)=1;
disp(m);
for i=1:1
aciertos=aciertos+1
end
end

if lanarriba==1
[j,l]=find(M==lan);
[lancha,o]=size(j);
if lancha==0
disp(" ¡Muy bien!Derribaste una lancha ");
disp(" Tienes 5 puntos adicionales ");
landerribado=5;
lanarriba=0;
end
end
if acoarriba==1
[j,l]=find(M==aco);
[acorazado,o]=size(j);
if acorazado==0
disp(" ¡Muy bien!Derribaste un acorazado ");
disp(" Tienes 10 puntos adicionales ");
acoderribado=10;
acoarriba=0;
end
end
if ptarriba==1
[j,l]=find(M==pta);
[portaviones,o]=size(j);
if portaviones==0
disp(" ¡Muy bien!Derribaste un portaviones ");
disp(" Tienes 15 puntos adicionales ");
ptaderribado=15;
ptarriba=0;
end
disp(" ")
end
if lanarriba==0 && acoarriba==0 && ptarriba==0
jugar=0;
fprintf(" \n");
fprintf(" \n \n \n");
fprintf(" ¡Exceente juego...Felicitaciones! ");
end
end
end
end

fprintf(" \n");
puntos=landerribado+acoderribado+ptaderribado+aciertos
disp("Total disparos acertados: "+aciertos)
disp("Total disparos fallados: "+fallos)
disp("Total disparos repetidos: "+repeticiones)
disp("Total disparos realizados: "+disparos)
disp("Total puntos obtenidos: "+puntos)

fprintf("Barcos derribados: ");


if lanarriba==1 && acoarriba==1 && ptarriba==1
fprintf("¡Ups...Ningun barco derribado!\n");
end
if lanarriba==0
fprintf("lancha,");
end
if acoarriba==0
fprintf("acorazado,");
end
if ptarriba==0
fprintf("portaviones");
end

S-ar putea să vă placă și