juego de cartas
Publicado por franco sanguedolce (32 intervenciones) el 23/04/2013 21:24:27
hola gente, bueno se me presento un amigo a casa y me dio un desafio, programar el juego del truco,
la cuestion es que intentando programarlo se me plantea la situacion donde debo crear el mazo de cartas,
para lo cual use esto
donde crea el mazo de cartas,
pero aqui esta la cuestion, como puedo hacer para que las cartas se repartan de manera aleatoria 3 para cada jugador( jugador y computadora) sin que se me repitan en la mano,
habia hecho algo asi
como veran puse en las condiciones que si alguna carta en mano de los jugadores era igual se volviera a empezar,
pero aun asi, se repiten cartas,
como resuelvo esto??
la cuestion es que intentando programarlo se me plantea la situacion donde debo crear el mazo de cartas,
para lo cual use esto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Type
cartas = array [1..40]
Of string[3];
players = Record
c: array[1..3] Of string[5];
puntos: byte;
End;
Var
i: byte;
carta: cartas;
num: array[1..10] Of string[2] = ('1','2','3','4','5','6','7','10','11','12');
let: array[1..4] Of string[1] = ('e','b','o','c');
jug: players;
com: players;
Procedure inicializacartas;
Var i,j: byte;
Begin
For i:=1 To 10 Do
For j:=1 To 1 Do
carta[i] := num[i]+let[j];
For i:=11 To 20 Do
For j:=2 To 2 Do
carta[i] := num[i-10]+let[j];
For i:=21 To 30 Do
For j:=3 To 3 Do
carta[i] := num[i-20]+let[j];
For i:=31 To 40 Do
For j:=4 To 4 Do
carta[i] := num[i-30]+let[j];
End;
donde crea el mazo de cartas,
pero aqui esta la cuestion, como puedo hacer para que las cartas se repartan de manera aleatoria 3 para cada jugador( jugador y computadora) sin que se me repitan en la mano,
habia hecho algo asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure repartecartas;
var i,j:byte;
ran:byte;
begin
randomize;
for i:= 1 to 3 do
begin
ran:=random(40)+1;
jug.c[i]:=carta[ran];
end;
for i:= 1 to 3 do
begin
ran:=random(40)+1;
com.c[i]:=carta[ran];
end;
if (jug.c[1]=jug.c[2]) or (jug.c[2]=jug.c[3]) or (jug.c[1]=com.c[1])
or (jug.c[1]=com.c[2]) or (jug.c[1]=com.c[3]) or (jug.c[2]=com.c[1])
or (jug.c[2]=com.c[2]) or (jug.c[2]=com.c[3]) or (jug.c[3]=com.c[1])
or (jug.c[3]=com.c[2]) or (jug.c[3]=com.c[3]) or (com.c[1]=com.c[2])
or (com.c[2]=com.c[3]) then
repartecartas;
end;
como veran puse en las condiciones que si alguna carta en mano de los jugadores era igual se volviera a empezar,
pero aun asi, se repiten cartas,
como resuelvo esto??
Valora esta pregunta


0