program Truco;
uses CRT;
(***************************************************************************)
type
TNaipe = record
Palo : (Espada,Basto,Oro,Copa);
Nro : Byte;
Dib : char;
end;
TBaraja = array [1..40] of TNaipe;
(***************************************************************************)
Var
Espad : TNaipe;
Baraja : TBaraja;
Ch : char;
I : integer;
(***************************************************************************)
procedure RandomCarta(var Naipe : Tnaipe);
var
I : Integer;
J : Integer;
begin
I := Random(4)+1;
J := Random(12)+1;
If (J=8) or (J=9) Then J := Random(12)+1;
Naipe.Nro := J;
Case I of
1: begin
Naipe.Palo := Espada;
Naipe.Dib := #6;
end;
2: begin
Naipe.Palo := Basto;
Naipe.Dib := #3;
end;
3: begin
Naipe.Palo :=Oro;
Naipe.Dib := #4;
end;
4: begin
Naipe.Palo :=Copa;
Naipe.Dib := #5;
end;
end;
end;
function SinRepetir(N:Integer; Naipe:TNaipe; Maso:TBaraja ) : boolean;
var I : Integer;
begin
for I := 1 to N do
begin
if(Maso[I].Nro=Naipe.Nro)
and (Ord(Maso[I].Palo)=Ord(Naipe.Palo))
then SinRepetir := False
else SinRepetir := True
end;
end;
procedure RandomBaraja(var Maso : TBaraja);
var
I : integer;
Carta : TNaipe;
begin
for I := 1 to 40 do
begin
RandomCarta(Carta);
If SinRepetir(I,Carta,Maso)
then Maso[I] := Carta
else RandomCarta(Carta);
end;
end;
(***************************************************************************)
Begin
TextMode(3);
ClrScr;
Randomize;
RandomBaraja(Baraja);
TextColor(4);
for I := 1 to 40 do
begin
WriteLn(' ',Baraja[I].Nro:5,' ',Baraja[I].Dib);
if I = 20 Then
begin
window(40,1,70,25);
WriteLn(' ',Baraja[I].Nro:5,' ',Baraja[I].Dib)
end;
end;
ReadKey;
End.