Jump to content

Batalha naval em Pascalzim


Duarte

Recommended Posts

Estou a criar um Jogo em Pascalzim com matrizes.

Foi me pedido para fazer a batalha naval singleplayer para a escola mas quero fazxer com que haja outro jogador. Como Posso Fazer isso?

Aqui esta o codigo:

{ 24-02-2021}
Program Batalha_Naval ; 
{Jogo da batalha naval single player contra o computador}
{Campo de 10 por 10}
type Matriz=array[1..10, 1..10] of char;
var
batalha:matriz;
li,c,contaS:integer;
opc:char;
{-----------------------------------------------------------------
objectivo: preencher o tabuleiro com submarios em posicoes aleatorias.
parâmetros: matriz
-------------------------------------------------------------------}
Procedure PreencheBatalha(var Jogo:matriz);
var linha,coluna,sub:integer;
begin
    {gerador de números aleatórios}
    randomize();    
    {Põe todos os elemntos a Agua}
    For linha:= 1 to 10 do
           For coluna:= 1 to 10 do
               {A=agua}
               jogo[linha,coluna]:='A' ;
               
               {Poe dois submarinos}
           for sub:=1 to 2 do
               {Poe os submarinos em posicoes aleatorias}
               jogo[random(9)+1,random(9)+1]:='S';{S=submarino}
            
end;
{-----------------------------------------------------------------
objectivo: mostrar no ecrã o tabuleiro
parâmetros: matriz
-------------------------------------------------------------------}
Procedure mostranoecra(jogo: matriz);
var linha,coluna:integer;
begin
    {Ciclo para percorrer todos os elementos da matriz}
    for linha:=1 to 10 do
    begin
        for coluna:=1 to 10 do
        begin
            Write(jogo[linha,coluna]);
            write(' ');
        end;
        writeln;
    end; 
end;
{-----------------------------------------------------------------
objectivo: pedir as coordenadas para afundar os submarinos
parâmetros: matriz
-------------------------------------------------------------------}
procedure JogarBatalha(Jogo:matriz);
var linha,coluna:integer;
begin
    writeln('insira a linha e coluna.');
    write('Linha:');
    readln(linha);
    writeln;
    write('coluna:');
    readln(coluna);
    writeln(linha, coluna);
    if batalha[linha,coluna]='S' then
    begin
        writeln('afundou');
            contaS:=contaS-1;
    end
    else
        writeln('agua');
end;
{----------------------------------corpo-principal----------------------------}
begin    
    {Contador para parar quando se afundou todos os submarinos}
    contaS:=2;
    PreencheBatalha(batalha);
    {Mostra No ecrã o tabuleiro
    mostranoecra(batalha);}
    //repete enquanto houver submarinos
    repeat
        JogarBatalha(batalha)
    until(contaS=0);
    writeln('Parabens! Afundou todos os Submarinos!');
End.

 

Edited by nunopicado
Syntax Highlight
Link to comment
Share on other sites

1 hora atrás, Duarte disse:

Estou a criar um Jogo em Pascalzim com matrizes.

Foi me pedido para fazer a batalha naval singleplayer para a escola mas quero fazxer com que haja outro jogador. Como Posso Fazer isso?

Sem entrar em detalhes muito específicos.... 2 jogadores, implica 2 matrizes (1 para cada jogador), portanto bastaria acrescentar mais uma dimensão a "Matriz" que já tens algo tipo "array[1..2, 1..10, 1..10]" e depois adaptar as funções que já tens para efectuarem as operações numa "1" ou outra "2" dimensão da Matriz[10x10].

Terás também de adaptar a parte de "Contar os submarinos afundados" para se ajustar aos 2 jogadores.

(mesmo agora single/player, assim a primeira vista, também não está a 100% => se o jogador, jogar 2x no mesmo sítio X,Y e afunda o submarino, afunda o mesmo 2x e ganha o jogo sem afundar o outro).

cps e boa programação.

  • Thanks 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.