Pascal/Turbo Pascal - Ayuda con algunas funciones y procedimiento

 
Vista:

Ayuda con algunas funciones y procedimiento

Publicado por rosario (4 intervenciones) el 03/12/2006 20:43:40
Hola tengo porblemas con las funciones de los juegos mayores(FULL POKER etc) cunado las compilo todo bien no me salta ningun error pero en el momento de ejecutarlas salen siempre true! y no encuentro cual puede ser el error...y tambien tengo problemas con el procedimiento cambiar dados q no me cambia los dados! si me pueden solucionar el error se los agradeceria mucho1!(uso el compilador Free pascal compilater win32 para compilar) desde ya muchas gracias...

ro



Program generala;

uses

crt,dos;

type

matriz = array [1..2,1..5] of byte;

t_puntos= array [1..11, 1..5] of byte;

vector= array [1..6] of byte;

var


i,j:integer;

cant_jugadores:integer;

dados: matriz;

E,F,P,G,D: boolean;

tabla:t_puntos;

s:boolean;


{FUNCION QUE VALIDA EL INGRESO DE NUMEROS POR TECLADOS}
function validar:integer;

var
c:char;

s:string;

error:integer;

valid:integer;

begin

s:='';

repeat

repeat

c:=upcase(readkey);

until c in ['1','2','3','4','5','6','7','8','9',#13];

write (c);

if (c<>#13) then s:=s+c;

until (c=#13);

val (s,valid,error);

validar:=valid;

end;

procedure cambiardados (dados: matriz);

var

cambio:integer;

I,j: integer;

begin

writeln ('Elija el dado a cambiar, cero para no cambiar nada');

readln (cambio);

cambio:= validar;

while (cambio<>0) do

begin

if (dados[2,cambio]= 1) then

writeln ('Dado ya seleccionado, elija otro')

else

dados[2,cambio]:= 1;

end;

for j:= 1 to 5 do

begin

if (dados [2,i]= 1) then

begin

dados[1,i]:= random (6) + 1;

end;


end;

readkey;
end;

{FUNCION PARA SELECCIONAR CANTIDAD DE JUGADORES}

function seleccionar_cant_jugadores:byte;

var

aux:integer;

begin

repeat

writeln ('Ingrese la cantidad de jugadores');

aux:= validar;

if ((aux>5) or (aux<2)) then

writeln ('la cantidad de jugadores ingresados esta fuera de rango');

until (aux<6) and (aux>1);

seleccionar_cant_jugadores:=aux;

end;

{PRECEDIMIENTO QUE ORDENA LOS DADOS TIRADOS ANTERIORMENTE }

procedure ordenar (var dados: matriz);

var

i,j,k,aux: integer;

begin

for i:= 1 to 4 do

begin

aux:=dados[1,i];

k:= i;

for j:= (i+1) to 5 do

begin

if (dados [1,j]< aux) then

begin

aux:= dados [1,j];

k:= j;

end;

dados [1,k]:= dados [1,i];

dados [1,i]:= aux;

end;
end;
end;

{PROCEDIMIENTO QUE TIRA LOS DADOS}

procedure dado (dados: matriz);

var

color: byte;

i: integer;

j: integer;

begin

for i:= 1 to 5 do

begin

dados [1,i]:= random (6)+1;

dados [2,i]:= 0;

textcolor (10);

end;

ordenar(dados);

for j:= 1 to 5 do


write ('[',dados [1,j], ']');

writeln (' ');

writeln (' ');

readkey;

end;

{FUNCIONES QUE COMPRUEBAN SI HAY JUEGOS MAYORES}

function escalera (dados: matriz):boolean;

Begin
Ordenar (dados);

If ((Dados [1,1] = 1) and (Dados [1,2] = 2) and (Dados [1,3] = 3) and (Dados [1,4] = 4) and (Dados [1,5] = 5)) then

escalera:= true

else

if ((Dados [1,1] = 2) and (Dados [1,2] = 3) and (Dados [1,3] = 4) and (Dados [1,4] = 5) and (Dados [1,5] = 6)) then

escalera:=true

else

if ((Dados [1,1] = 1) and (Dados [1,2] = 3) and (Dados [1,3] = 4) and (Dados [1,4] = 5) and (Dados [1,5] = 6)) then

escalera:= true;

end;

function full (dados: matriz): boolean;

begin

ordenar (dados);

If ((Dados [1,1] = Dados [1,3]) and (Dados [1,4] = Dados [1,5]) and (Dados [1,1]<> Dados [1,4]))

or

((Dados [1,1] = Dados [1,2]) and (Dados [1,3] = Dados [1,5]) and (Dados [1,1]<> Dados [1,3])) then

full:= true;

end;

function poker (dados:matriz):boolean;

begin
ordenar(dados);

if (( dados[1,1] = dados[1,4] ) and ( dados[1,1] <> dados [1,5] )) then

poker:= true

else

if (( dados[1,2] = dados [1,5]) and ( dados [1,1]<> dados [1,2] )) then

poker:= true;

readkey;

end;

function generala (dados: matriz): boolean;

begin

ordenar (dados);

If (Dados [1,1] = Dados [1,5]) then

Generala := true;

end;


function doblegenerala (dados:matriz; g:boolean): boolean;

var

d: boolean;

begin

ordenar (dados);

if g then

d:= true;

end;


procedure jugadasmayores(e,f,p,g,d: boolean);

begin

if d then

writeln ('doble generala');

if g then

writeln ('generala');

if p then

writeln ('póker');

if f then

writeln ('full');

if e then

writeln ('escalera');

readkey;

end;

{PROGRAMA PRINCIPAL}

Begin

Randomize;

Clrscr;

cant_jugadores:=seleccionar_cant_jugadores;

Clrscr;

For i:=1 to 11 do

Begin

For j:=1 to cant_jugadores do

Begin

dado(Dados);

G:= Generala (Dados);

D:= Doblegenerala (dados,g);

P:= Poker (dados);

F:= full (dados);

E:= escalera (dados);

jugadasmayores(d,g,p,f,e);

cambiardados(dados);

end;

end;


readkey;

end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con algunas funciones y procedimiento

Publicado por Carlos Guimaraenz (265 intervenciones) el 04/12/2006 21:24:08
Hola Rosario! La verdad es que no he podido seguir mucho el juego, y el código menos... si puedes comentarlo para saber qué hace cada procedimiento, función, sería de gran ayuda... hasta pronto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con algunas funciones y procedimiento

Publicado por rosario (4 intervenciones) el 05/12/2006 13:54:20
El juego se trata de la Generala, que se juegan hasta 5 jugadores, y son 11 vueltas en total...Estan las funciones de los juegos mayores que serian (GEnerala, full, poker ,escalera, y doble generala); La primera si cuando tiras los dados te tocan todos los dados =!, la otra es full que es cuando tenes 3 dados iguales y otros dos = (ejeplo: 3 3 3 2 2 ), despues poker que son 4 = y uno distinto, y escalera que todos los dados forman escalera de numeros y las tres posibilidades son (1 3 4 5 6, 2 3 4 5 6, 1 2 3 4 5); y la doble es cuando ya tenes hecha la generala te toka otra vez generala!...Lo que hacen estas funciones ,....una vez que estan tirados los dados y ordenados con los respectivos procedimientos...se fija si tenemos algunos de estos juegos...entrando a cada funcion y fijandoce si tenemos tal juego sale en true sino en false...pero mi problema es que cuando llamo a estas funciones me salen siempre en true!....Y nose cual puede ser el problema! Si me pudieran ayudar seria de gran ayuda!!mchisimas gracias!!!

ro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar