Jogo do galo

riicardoo

Power Member
Boas. Eu estou a construir um jogo do galo, mas tenho algumas duvidas e gostaria que me ajudassem se fosse possível. Este jogo vai ter de ser apresentado a júri um dia destes.

program galo ;
uses crt;
var i, vez, jogada: integer;
jogador1, jogador2: string;
begin
textbackground(white);
textcolor(blue);
clrscr;
for i:=21 to 56 do begin
gotoxy(i,15);write('-');
gotoxy(i,9);write('-');
gotoxy(i,20);write('-');
gotoxy(i,4);write('-');
end;
for i:=5 to 19 do begin
gotoxy(21,i);write('|');
gotoxy(56,i);write('|');
gotoxy(33,i);write('|');
gotoxy(45,i);write('|');
end;
textcolor(black);
gotoxy (1,22);write ('Insira o nome do primeiro jogador: ' );
readln(jogador1);
gotoxy(58,12);
writeln('Jogador 1 :',jogador1);
gotoxy (3,22);write ('Insira o nome do segundo jogador ');
readln(jogador2);
gotoxy(58,15);
writeln('Jogador 2 : ',jogador2);
vez:=1;
for i:=1 to 9 do begin
if vez =1 then
gotoxy (1,24);write(jogador1,' qual a jogada?');
readln(jogada);
case jogada of
1: begin
gotoxy(25,6);write('X');
end;
2 : begin
gotoxy(40,6);write('X');
end;
3:begin
gotoxy(50,6);write('X');
end;
4:begin
gotoxy (25,12);write('X');
end;
5:begin
gotoxy(40,12);write('X');
end;
6:begin
gotoxy(50,12);write('X');
end;
7 :begin
gotoxy (25,18);write('X');
end;
8: begin
gotoxy(40,18);write('X');
end;
9: begin
gotoxy (50,18);write('X');
end;
end;
vez:=2;

begin
gotoxy (1,24);write(jogador2,' qual a jogada?');
readln(jogada);
case jogada of
1: begin
gotoxy(12,6 );write('O');
end;
2 : begin
gotoxy(40,6);write('O');
end;
3:begin
gotoxy(50,6);write('O');
end;
4:begin
gotoxy (25,12);write('O');
end;
5:begin
gotoxy(40,12);write('O');
end;
6:begin
gotoxy(50,12);write('O');
end;
7 :begin
gotoxy (25,18);write('O');
end;
8: begin
gotoxy(40,18);write('O');
end;
9: begin
gotoxy (50,18);write('O');
end;
end;

end;
end;

readln;
end.
end.


Este é o codigo que ja tenho feito.
So que quando executo e chega a vez do segundo jogador fazer a sua jogada aparece-me isto: http://item.slide.com/r/1/219/i/SfX3XlcY4j_5FTMRuNVFUb0FYPpadrbF/

Como podem ver o "O" é colocado mas aparece a pergunta a frente
Alguem me pode ajudar?

obrigado
 
Boas. Não programo em PASCAL há uns ~6 anos mas acho que sei qual é o problema.
Código:
if vez =1 then
gotoxy (1,24);write(jogador1,' qual a jogada?');
Aí deves ter:
Código:
if vez =1 then
   begin
     gotoxy (1,24); write(jogador1,' qual a jogada?');
   end;
se quiseres que ambas sejam executadas se a vez for 1. O outro problema é que no fim do último case não voltas a meter a vez a 1, ou seja, o "if" dá falso e como tal o gotoxy(...) não é executado mas o write(...) é, por não fazer parte do "then".

Espero ter ajudado. :)
 
Boas. Não programo em PASCAL há uns ~6 anos mas acho que sei qual é o problema.
Código:
if vez =1 then
gotoxy (1,24);write(jogador1,' qual a jogada?');
Aí deves ter:
Código:
if vez =1 then
   begin
     gotoxy (1,24); write(jogador1,' qual a jogada?');
   end;
se quiseres que ambas sejam executadas se a vez for 1. O outro problema é que no fim do último case não voltas a meter a vez a 1, ou seja, o "if" dá falso e como tal o gotoxy(...) não é executado mas o write(...) é, por não fazer parte do "then".






Espero ter ajudado. :)


Muito obrigado. Agora aconteceu outro problema.
http://item.slide.com/r/1/47/i/Anf6bC0J1j8uFb64l6OeSw4zvRRwFxQB/
escolho a posição que quero, e ele alem de inserir o símbolo também insere o numero da minha opção.
ja agora pra declarar victorias sera muito dificil?
 
Boas. Pois baseado no código anterior e com as alterações que te disse não estou a ver o problema. Vê se não fazes aí um write(jogada); algures no teu código. Já agora, só agora é que me lembrei que não precisas de andar com a variável vez e com aquele if. Com o ciclo isso já bate tudo certo automaticamente sem precisares de ver essa condição.
Quanto ao declarar victórias, podes declarar um array bidimensional e terás que guardar lá as jogadas de cada jogador. A partir da 3ª jogada (de cada jogador) tens que ver se o jogador X ganhou, a cada jogada. Só tens que ver as 2 diagonais, as 3 colunas e as 3 linhas.
Procura como se trabalha com array's em PASCAL se ainda não sabes. :)

Se não descobrires o erro que está a acontecer agora, volta a meter o código actualizado. E tira a var vez e o if que não estão aí a fazer nada. ;)

Boa sorte.
 
Boas. Pois baseado no código anterior e com as alterações que te disse não estou a ver o problema. Vê se não fazes aí um write(jogada); algures no teu código. Já agora, só agora é que me lembrei que não precisas de andar com a variável vez e com aquele if. Com o ciclo isso já bate tudo certo automaticamente sem precisares de ver essa condição.
Quanto ao declarar victórias, podes declarar um array bidimensional e terás que guardar lá as jogadas de cada jogador. A partir da 3ª jogada (de cada jogador) tens que ver se o jogador X ganhou, a cada jogada. Só tens que ver as 2 diagonais, as 3 colunas e as 3 linhas.
Procura como se trabalha com array's em PASCAL se ainda não sabes. :)

Se não descobrires o erro que está a acontecer agora, volta a meter o código actualizado. E tira a var vez e o if que não estão aí a fazer nada. ;)

Boa sorte.

Obrigado pelas dicas :)
 
Back
Topo