Necesito ayuda en un proyecto
Publicado por Alejandro (1 intervención) el 28/01/2012 16:26:57
el proyecto se trata de hacer un domino en pascal, se trata de que 1 jugador juegue contra la computadora, el jugador y la computadora poseen 14 fichas, sin pote,el que tenga el doble 6 empieza la partida, después se colocan las fichas en la 'mesa',el jugador podrá escoger que ficha colocar,si la ficha que escogió no concuerda con el de la mesa escoge otra y la computadora es automático, así sucesivamente hasta que uno de los dos se quede sin ficha o no puede colocar mas fichas, al final el jugador que se quedo sin fichas gana los puntos del otro( se suman las fichas que le quedan al perdedor y se le suman al ganador que posee 0 fichas) , el jugador en cualquier momento del juego tendrá la opción salirse de la partida, es como cualquier juego de domino normal,no es necesario un interfaz gráfico solo que se vean como imprime las fichas y la mesa como 2/2 o 1:6 ( así serian las fichas ).
ya tengo la primera parte pero no se como hacer que se repita la jugada, lo intente con un case of pero no se que condición para que repita las jugadas, también con un repeat pero no se porque no me repite las jugadas, y un while lo mismo, creo que es una de mis condiciones que esta mal,o un begin o end, .hay muchas variable que no se usan XD era por si las dudas si las necesitaba, si me podrían ayuda a corregir lo que tengo se los agradecería.
program domino;
type
matriz=array[1..2,1..14] of integer;
vector=array[1..100] of integer;
var
z,priC,PriJ,Fiz,Fde,o,t,y,a,b,m,i,j,p,contador,fichasC,fichasJ1,puntos1,puntosc:integer;
Jugador1, pote, computadora: matriz;
s,n,resp:string;
mesa:vector;
termino,emp,encontro,comp,juga:boolean;
fichas: array [0..6, 0..6] of boolean;
procedure llenar (var ficha:matriz; n:integer); {rellena las ficha de los jUgadores y pote}
var
j,c1,c2:integer;
begin
randomize;
j:=1;
while (j <= n) do
begin
c1:= random(7);
c2:= random(7);
if (not(fichas[c1,c2]) and not(fichas[c2,c1])) then
begin
ficha[1,j] := c1;
ficha[2,j] := c2;
fichas[c1,c2] := true;
fichas[c2,c1] := true;
j := j + 1;
end;
end;
end;
procedure escribir (m:matriz; n:integer); {para imprimir las fichas}
var
i, j : integer;
begin
for i:= 1 to 2 do
begin
for j:= 1 to n do
write (m[i,j], ' ');
writeln;
end;
end;
{------------------------------------------------------------------- } {programa principal}
begin
for i:= 0 to 6 do
begin
for j:= 0 to 6 do
fichas[i,j] := false;
end;
contador:=0;
While contador <> 1 do {si son mas de 1 jugador}
begin
writeln('cuantos jugadores van a participar ?');readln(p);
writeln;
if p<>1 then
begin
writeln('solo se permite 1 jugador');
writeln;
end
Else
contador:=contador+1;
end;
If p=1 then
begin
llenar(jugador1,14);
llenar(computadora, 14);
writeln('JUGADOR 1');
escribir(jugador1,14);
writeln;
writeln('COMPUTADORA');
escribir(computadora,14);
writeln;
readln;
{------------------------------------------------------------------------------} { para saber cual jugador empieza primero}
fichasJ1:=14;
fichasC:=14;
comp:=false;
juga:=false;
emp:=false;
termino:=false;
for m:=1 to 14 do
begin
If computadora[1,m] and computadora[2,m]=6 then
begin
writeln('la computadora empieza la partida');
comp:=true;
emp:=true;
juga:=false;
end;
end;
while emp=false do
begin
writeln('usted empieza la partida');
juga:=true;
emp:=true;
comp:=false;
end;
writeln;
{------------------------------------------------------------------------} {iniciar la partida}
y:=50;
z:=51;
resp:='s';
writeln('desea iniciar la partida (s/n) : ');readln(resp);
writeln;
begin
if resp<>'s' then
writeln(' cierre la pantalla para iniciar otra partida')
else
priJ:=0;
priC:=0;
while (fichasC<>0) or (fichasJ1<>0) do
begin
if comp=true then
begin
if priC=0 then {para que la comp ponga la primera ficha, si es su turno}
begin
writeln('mesa');
mesa[y]:=computadora[1,1];
mesa[z]:=computadora[2,1];
writeln(mesa[y]);
writeln(mesa[z]);
writeln;
comp:=false;
juga:=true;
priC:=1;
priJ:=1;
Fiz:=mesa[y];
Fde:=mesa[z];
encontro:=false;
computadora[1,1]:=-1;
computadora[2,1]:=-1;
fichasC:=fichasC-1;
{ writeln('computadora');
escribir(computadora,14); }
writeln;
end;
end;
if comp=true then
begin
encontro:=false;
for m:=1 to 14 do
begin
while encontro=false do
begin
if (computadora[1,m] = Fiz) or (computadora[2,m] = Fiz) then
begin
writeln('mesa');
y:=y-1;
mesa[y]:=computadora[1,m];
writeln(mesa[y]);
y:=y-1;
mesa[y]:=computadora[2,m];
writeln(mesa[y]);
writeln;
encontro:=true;
comp:=false;
juga:=true;
Fiz:= computadora[2,m];
computadora[1,m]:=-1;
computadora[2,m]:=-1;
end
else
begin
if (computadora[1,m] = Fde) or (computadora[2,m] = Fde) then
begin
writeln('mesa');
z:=z+1;
mesa[z]:=computadora[1,m];
writeln(mesa[z]);
z:=z+1;
mesa[z]:=computadora[2,m];
writeln(mesa[z]);
writeln;
encontro:=true;
comp:=false;
juga:=true;
Fde:= computadora[2,m];
computadora[1,m]:=-1;
computadora[2,m]:=-1;
end;
end;
end;
end;
end;
end; { final de la computadora }
{ comienza del jugador 1}
begin
if juga=true then
begin
if priJ=0 then {para que la jugador ponga la primera ficha, si es su turno}
begin
writeln(' Cual ficha desea colocar primero');readln(o);
writeln;
writeln('mesa');
mesa[y]:=Jugador1[1,o];
mesa[z]:=Jugador1[2,o];
writeln(mesa[y]);
writeln(mesa[z]);
writeln;
comp:=true;
juga:=false;
priJ:=1;
priC:=1;
Fiz:=mesa[y];
Fde:=mesa[z];
Jugador1[1,o]:=-1;
Jugador1[2,o]:=-1;
fichasJ1:=fichasJ1-1;
encontro:=false;
{ writeln('Jugador 1 ');
escribir(jugador1,14);}
writeln;
end;
end;
if juga=true then
begin
writeln(' Cual ficha desea colocar ');readln(o);
writeln;
begin
if (jugador1[1,o] = Fiz) or (jugador1[2,o] = Fiz) then
begin
writeln('mesa');
y:=y-1;
mesa[y]:=jugador1[1,o];
writeln(mesa[y]);
y:=y-1;
mesa[y]:=jugador1[2,o];
writeln(mesa[y]);
writeln;
fichasJ1:=fichasJ1-1;
encontro:=false;
juga:=false;
comp:=true;
Fiz:=jugador1[2,o];
Jugador1[1,o]:=-1;
Jugador1[2,o]:=-1;
end
else
if (jugador1[1,o] = Fde) or (jugador1[2,o] = Fde )then
begin
writeln('mesa');
z:=z+1;
mesa[z]:=jugador1[1,o];
writeln(mesa[z]);
z:=z+1;
mesa[z]:=jugador1[2,o];
writeln(mesa[z]);
writeln;
fichasJ1:=fichasJ1-1;
encontro:=false;
juga:=false;
comp:=true;
Fde:=jugador1[2,o];
Jugador1[1,o]:=-1;
Jugador1[2,o]:=-1;
end;
end; {comienso del jugador 1}
end; {while termino}
end; {comienso del juego}
end; {resp s }
end; {p=1}
readln;
end. {final del programa}
{ if fichasJ1=0 then para sumar lo puntos de los jugadore, no esta dentro del programa aun
begin
for t:=1 to 2 do
begin
for m:=1 to 14 do
begin
puntos1:=puntos1+computadora[t,m];
if
end;
end;
writeln('LOS PUNTOS DEL JUGADOR SON ', puntos1 );
readln;
end
else
if fichasC=0 then
begin
for a:=1 to 2 do
begin
for b:=1 to 14 do
begin
puntosC:=puntosC+jugador1[a,m];
end;
end;
writeln('LOS PUNTOS DE LA COMPUTADORA SON ', puntosC );
readln;
end;
end; }
ya tengo la primera parte pero no se como hacer que se repita la jugada, lo intente con un case of pero no se que condición para que repita las jugadas, también con un repeat pero no se porque no me repite las jugadas, y un while lo mismo, creo que es una de mis condiciones que esta mal,o un begin o end, .hay muchas variable que no se usan XD era por si las dudas si las necesitaba, si me podrían ayuda a corregir lo que tengo se los agradecería.
program domino;
type
matriz=array[1..2,1..14] of integer;
vector=array[1..100] of integer;
var
z,priC,PriJ,Fiz,Fde,o,t,y,a,b,m,i,j,p,contador,fichasC,fichasJ1,puntos1,puntosc:integer;
Jugador1, pote, computadora: matriz;
s,n,resp:string;
mesa:vector;
termino,emp,encontro,comp,juga:boolean;
fichas: array [0..6, 0..6] of boolean;
procedure llenar (var ficha:matriz; n:integer); {rellena las ficha de los jUgadores y pote}
var
j,c1,c2:integer;
begin
randomize;
j:=1;
while (j <= n) do
begin
c1:= random(7);
c2:= random(7);
if (not(fichas[c1,c2]) and not(fichas[c2,c1])) then
begin
ficha[1,j] := c1;
ficha[2,j] := c2;
fichas[c1,c2] := true;
fichas[c2,c1] := true;
j := j + 1;
end;
end;
end;
procedure escribir (m:matriz; n:integer); {para imprimir las fichas}
var
i, j : integer;
begin
for i:= 1 to 2 do
begin
for j:= 1 to n do
write (m[i,j], ' ');
writeln;
end;
end;
{------------------------------------------------------------------- } {programa principal}
begin
for i:= 0 to 6 do
begin
for j:= 0 to 6 do
fichas[i,j] := false;
end;
contador:=0;
While contador <> 1 do {si son mas de 1 jugador}
begin
writeln('cuantos jugadores van a participar ?');readln(p);
writeln;
if p<>1 then
begin
writeln('solo se permite 1 jugador');
writeln;
end
Else
contador:=contador+1;
end;
If p=1 then
begin
llenar(jugador1,14);
llenar(computadora, 14);
writeln('JUGADOR 1');
escribir(jugador1,14);
writeln;
writeln('COMPUTADORA');
escribir(computadora,14);
writeln;
readln;
{------------------------------------------------------------------------------} { para saber cual jugador empieza primero}
fichasJ1:=14;
fichasC:=14;
comp:=false;
juga:=false;
emp:=false;
termino:=false;
for m:=1 to 14 do
begin
If computadora[1,m] and computadora[2,m]=6 then
begin
writeln('la computadora empieza la partida');
comp:=true;
emp:=true;
juga:=false;
end;
end;
while emp=false do
begin
writeln('usted empieza la partida');
juga:=true;
emp:=true;
comp:=false;
end;
writeln;
{------------------------------------------------------------------------} {iniciar la partida}
y:=50;
z:=51;
resp:='s';
writeln('desea iniciar la partida (s/n) : ');readln(resp);
writeln;
begin
if resp<>'s' then
writeln(' cierre la pantalla para iniciar otra partida')
else
priJ:=0;
priC:=0;
while (fichasC<>0) or (fichasJ1<>0) do
begin
if comp=true then
begin
if priC=0 then {para que la comp ponga la primera ficha, si es su turno}
begin
writeln('mesa');
mesa[y]:=computadora[1,1];
mesa[z]:=computadora[2,1];
writeln(mesa[y]);
writeln(mesa[z]);
writeln;
comp:=false;
juga:=true;
priC:=1;
priJ:=1;
Fiz:=mesa[y];
Fde:=mesa[z];
encontro:=false;
computadora[1,1]:=-1;
computadora[2,1]:=-1;
fichasC:=fichasC-1;
{ writeln('computadora');
escribir(computadora,14); }
writeln;
end;
end;
if comp=true then
begin
encontro:=false;
for m:=1 to 14 do
begin
while encontro=false do
begin
if (computadora[1,m] = Fiz) or (computadora[2,m] = Fiz) then
begin
writeln('mesa');
y:=y-1;
mesa[y]:=computadora[1,m];
writeln(mesa[y]);
y:=y-1;
mesa[y]:=computadora[2,m];
writeln(mesa[y]);
writeln;
encontro:=true;
comp:=false;
juga:=true;
Fiz:= computadora[2,m];
computadora[1,m]:=-1;
computadora[2,m]:=-1;
end
else
begin
if (computadora[1,m] = Fde) or (computadora[2,m] = Fde) then
begin
writeln('mesa');
z:=z+1;
mesa[z]:=computadora[1,m];
writeln(mesa[z]);
z:=z+1;
mesa[z]:=computadora[2,m];
writeln(mesa[z]);
writeln;
encontro:=true;
comp:=false;
juga:=true;
Fde:= computadora[2,m];
computadora[1,m]:=-1;
computadora[2,m]:=-1;
end;
end;
end;
end;
end;
end; { final de la computadora }
{ comienza del jugador 1}
begin
if juga=true then
begin
if priJ=0 then {para que la jugador ponga la primera ficha, si es su turno}
begin
writeln(' Cual ficha desea colocar primero');readln(o);
writeln;
writeln('mesa');
mesa[y]:=Jugador1[1,o];
mesa[z]:=Jugador1[2,o];
writeln(mesa[y]);
writeln(mesa[z]);
writeln;
comp:=true;
juga:=false;
priJ:=1;
priC:=1;
Fiz:=mesa[y];
Fde:=mesa[z];
Jugador1[1,o]:=-1;
Jugador1[2,o]:=-1;
fichasJ1:=fichasJ1-1;
encontro:=false;
{ writeln('Jugador 1 ');
escribir(jugador1,14);}
writeln;
end;
end;
if juga=true then
begin
writeln(' Cual ficha desea colocar ');readln(o);
writeln;
begin
if (jugador1[1,o] = Fiz) or (jugador1[2,o] = Fiz) then
begin
writeln('mesa');
y:=y-1;
mesa[y]:=jugador1[1,o];
writeln(mesa[y]);
y:=y-1;
mesa[y]:=jugador1[2,o];
writeln(mesa[y]);
writeln;
fichasJ1:=fichasJ1-1;
encontro:=false;
juga:=false;
comp:=true;
Fiz:=jugador1[2,o];
Jugador1[1,o]:=-1;
Jugador1[2,o]:=-1;
end
else
if (jugador1[1,o] = Fde) or (jugador1[2,o] = Fde )then
begin
writeln('mesa');
z:=z+1;
mesa[z]:=jugador1[1,o];
writeln(mesa[z]);
z:=z+1;
mesa[z]:=jugador1[2,o];
writeln(mesa[z]);
writeln;
fichasJ1:=fichasJ1-1;
encontro:=false;
juga:=false;
comp:=true;
Fde:=jugador1[2,o];
Jugador1[1,o]:=-1;
Jugador1[2,o]:=-1;
end;
end; {comienso del jugador 1}
end; {while termino}
end; {comienso del juego}
end; {resp s }
end; {p=1}
readln;
end. {final del programa}
{ if fichasJ1=0 then para sumar lo puntos de los jugadore, no esta dentro del programa aun
begin
for t:=1 to 2 do
begin
for m:=1 to 14 do
begin
puntos1:=puntos1+computadora[t,m];
if
end;
end;
writeln('LOS PUNTOS DEL JUGADOR SON ', puntos1 );
readln;
end
else
if fichasC=0 then
begin
for a:=1 to 2 do
begin
for b:=1 to 14 do
begin
puntosC:=puntosC+jugador1[a,m];
end;
end;
writeln('LOS PUNTOS DE LA COMPUTADORA SON ', puntosC );
readln;
end;
end; }
Valora esta pregunta
0