Avatar billede dexterweb Nybegynder
09. december 2003 - 12:55 Der er 1 kommentar og
1 løsning

Yatzy spil med problemer!!

Hej.....
Er igang med et yatzy spil i delphi, men er nået til et problem. Jeg skal igang med at lave "et par" funktionen. Dette kan jeg ikke få en god ide til at lave. Så jeg har derfor brug for en løsning. Problemet er at der er så mange muligheder i at få et par. Terningerne kan f.eks ligge på forskellige måder. Koden til det som jeg har lavet ligger her: www.dexterweb.dk/yatzy.txt
Håber nogle har en fed ide til at løse problemet.....
Avatar billede hreiff Nybegynder
10. december 2003 - 12:34 #1
Hvorfor bruger du ikke et array til terningværdierne i stedet for 6 variable.
Nå men pyt med det.
En funktion der checker for et par;

function etpar(a,b,c,d,e:integer):boolean; {ovrfør terning øjne}
var
  x:array[1..6] of integer;
  i: integer
Begin
  etpar := false;
  for i := 1 to 6 do
    x[i] := 0;

  inc(x[a]);
  inc(x[b]);
  inc(x[c]);
  inc(x[d]);
  inc(x[e]);
 
  for i := 1 to 6 do
    if x[i] >= 2 then etpar := true;
end;



  if etpar(terning1,terning2,terning3,terning4,terning5) then
    showmessage('Der er et par');

Funktionen kan naturligvis udvides så det oplyses det højeste par;

function etpar(a,b,c,d,e:integer):integer;
var
  x:array[1..6] of integer;
  i: integer
Begin
  etpar := 0;
  for i := 1 to 6 do
    x[i] := 0;

  inc(x[a]);
  inc(x[b]);
  inc(x[c]);
  inc(x[d]);
  inc(x[e]);
 
  for i := 1 to 6 do
    if x[i] >= 2 then etpar := i;
end;


  par := etpar(terning1,terning2,terning3,terning4,terning5)
  if par > 0 then showmessage('Der er et par '+par+'-ere');

Tilsvarende funktion kan også bruges til 3 ens, 4 ens, yatzy osv. ved at ændre sidste linje til


    if x[i] >= ens then etpar := i;

hvor ens er antallet af ens terninger. Du kan jo omdøbe funktionen til antalens

function antalens(a,b,c,d,e: integer; ens:integer):integer;

og kalde den med:

  if antalens(terning1,terning2,terning3,terning4,terning5,5)>0 then
    showmessage('Yatzy');
  if antalens(terning1,terning2,terning3,terning4,terning5,4)>0 then
    showmessage('4 ens');

osv.

God fornøjelse
Avatar billede dexterweb Nybegynder
11. december 2003 - 10:14 #2
Tak for hjælpen du får point....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester