Está en la página 1de 3

% Programa de prueba Random Ships

clc
Mcol = randi([8 10]);
Mrow = Mcol;
% -------------------------
% Longitud de los barcos
% tb(1) == 5 Portaaviones
% tb(2) == 4 Acorazado
% tb(3) == 3 Lancha
tb = [5 4 3];
Matriz = zeros(Mrow,Mcol);
for i=1:length(tb)
v = false;
while (v == false)
% Orientación: 0 = Horizontal, 1 = Vertical
orientacion = randi([0 1]);

if orientacion == 0 % Horizontal
fila = randi([1 Mcol-tb(i)+1]);
columna = randi([1 Mrow]);
v=true;
for c=fila:fila+tb(i)-1
if Matriz(columna,c) ~= 0 % Oceano
v = false;
end
end
% ubicación Nave
if v == true
Matriz(columna, fila:fila+tb(i)-1) = tb(i); % Nave
v = true;
end
else % Vertical
fila = randi([1 Mcol]);
columna = randi([1 Mrow-tb(i)+1]);
v = true;
for f=columna:columna+tb(i)-1
if Matriz(f,fila) ~= 0 % Oceano
v = false;
end
end
% Hubicación Nave
if v == true
Matriz(columna:columna+tb(i)-1, fila) = tb(i); % Nave
v = true;
end
end
end % end while
end % end for

puntaje=0;
disparos=0;
iaco=1;
ipor=1;
ilan=1;
p=1;
while p>0
clc
disp(Matriz);
disp("1. Si")
disp("2. No")
rendirse=input("¿Desea Rendirse?: ");
if rendirse == 1
disp("USTED SE RINDIÓ")
p=p-1;
else
if Matriz ~= 4
if iaco == 1
disp("Acorazado derribado")
iaco = iaco - 1;
end
end
if Matriz ~= 5
if ipor == 1
disp("Porta_Aviones derribado")
ipor = ipor - 1;
end
end
if Matriz ~= 3
if ilan == 1
disp("Lancha derribado")
ilan = ilan - 1;
end
end
eC = input("Ingrese la columna a disparar: ");
eF = input("Ingrese la fila a disparar: ");
for i=1:Mcol
for j=1:Mrow
if i==eC && j==eF
if Matriz(i,j) >= 3 && Matriz(i,j) <= 5
Matriz(i,j)= 1;
puntaje = puntaje + 10;
else
Matriz(i,j)= 2;
end
end
end
end
if Matriz ~= 5
if Matriz ~= 4
if Matriz ~= 3
p=p-1;
end
end
end
disparos = disparos+1;
end
end
clc
if Matriz ~= 4
disp("Acorazado derribado")
else
disp("No Se Derribo El Acorazado")
end
if Matriz ~= 5
disp("Porta_Aviones derribado")
else
disp("No Se Derribo El Porta_Aviones")
end
if Matriz ~= 3
disp("Lancha derribado")
else
disp("No Se Derribo La Lancha")
end

fprintf("Usted disparo %d veces \n", disparos)


fprintf("Su puntaje fue: %d puntos \n", puntaje)
disp("FIN DEL JUEGO")

También podría gustarte