Avatar billede l33t_gejl Nybegynder
18. januar 2006 - 21:02 Der er 3 kommentarer

Hjælp til et poker spil i php (det må kunne gøres nemmere)

Okay jeg er lige gået i gang med et texas hold em poker spil. For jer der ikke kender det så får man to kort på hånden og så blir der smidt 5 kort på bordet. Det her er hvad jeg har indtil videre:
<?
$a = rand(1, 13);
$b = rand(1, 4);

$c = rand(1, 13);
$d = rand(1, 4);

function findkorta($a, $b) {
    echo "Dit første kort er:<br>";
    switch ($b) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($a < 11 and $a > 1) {
    echo $a;
  } else {
    switch ($a) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}
function findkortb($c, $d){
  echo "Dit andet kort er:<br>";
  switch ($d) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }
  if ($c < 11 and $c > 1) {
    echo $c;
  } else {
    switch ($c) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}


function stripa($a, $b) {
$array = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13");
$arrayb = array("1", "2", "3", "4");

unset($array['$a']);

$bb = rand($array['0'], $array['11']);
$aa = rand($array['0'], $array['3']);

    echo "Dit første kort er:<br>";
    switch ($aa) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($bb < 11 and $bb > 1) {
    echo $bb;
  } else {
    switch ($bb) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}
function stripb($c, $d) {
$arrayc = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13");
$arrayd = array("1", "2", "3", "4");

unset($arrayc['$c']);

$cc = rand($arrayc['0'], $arrayc['11']);
$dd = rand($arrayd['0'], $arrayd['3']);

    echo "Dit første kort er:<br>";
    switch ($dd) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($cc < 11 and $cc > 1) {
    echo $cc;
  } else {
    switch ($cc) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}

if ("$a - $b" == "$c - $d") {
  stripa("$a", "$b");
  echo "<br>";
  stripb("$c", "$d");
} else {
  findkorta("$a", "$b");
  echo "<br>";
  findkortb("$c", "$d");
}
$e = rand(1, 13);
$ee = rand(1, 4);

function korta($e, $ee) {
    switch ($ee) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($e < 11 and $e > 1) {
    echo $e;
  } else {
    switch ($e) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}

$f = rand(1, 13);
$ff = rand(1, 4);

function kortb($f, $ff) {
    switch ($ff) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($f < 11 and $f > 1) {
    echo $f;
  } else {
    switch ($f) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}

$g = rand(1, 13);
$gg = rand(1, 4);

function kortc($g, $gg) {
    switch ($gg) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($g < 11 and $g > 1) {
    echo $g;
  } else {
    switch ($g) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}


$h = rand(1, 13);
$hh = rand(1, 4);

function kortd($h, $hh) {
    switch ($hh) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($h < 11 and $h > 1) {
    echo $h;
  } else {
    switch ($h) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}

$i = rand(1, 13);
$ii = rand(1, 4);

function korte($i, $ii) {
    switch ($ii) {
    case 1:
    echo "klør ";
    break;
    case 2:
    echo "spar ";
    break;
    case 3:
    echo "ruder ";
    break;
    case 4:
    echo "hjerter ";
    break;
  }

  if ($i < 11 and $i > 1) {
    echo $i;
  } else {
    switch ($i) {
      case 1:
      echo "es ";
      break;
      case 11:
      echo "bonde ";
      break;
      case 12:
      echo "dronning ";
      break;
      case 13:
      echo "konge ";
      break;
    }
  }
}
echo "<br>";
echo "--------------------";
echo "<br>";
korta("$e", "$ee");
echo "<br>";
kortb("$f", "$ff");
echo "<br>";
kortc("$g", "$gg");
echo "<br>";
kortd("$h", "$hh");
echo "<br>";
korte("$i", "$ii");

?>
Forklarer lige hurtigt koden. Ved funktionerne findkorta -b -c osv. finder den sjovt nok et kort med de 2 tilfældige tal jeg har givet den, den erstatter så det ene (1 - 4) med navnet for kuløren og det andet skriver den og hvis nødvendigt erstatter den med konge, es osv. funktionerne stripa og stripb skal vælge et nyt kort hvis de to kort bliver ens. Jeg er så gået igang med at finde de fem kort, men jeg er begyndt at tænke på at der må være en kortere vej, jeg synes det bliver lidt underligt at skulle sidde med 7 forskellige strip funktionerne og vælg kort funktion der må helt ærligt være en lettere måde(uden at lyde alt for doven):)
Avatar billede tjp Mester
19. januar 2006 - 01:15 #1
Uden at lyde alt for doven, så har jeg kun skimmet din kode meget løst. ;-)
Men ville det ikke være oplagt at lave det lidt objektorienteret, altså oprette en klasse for spillekort, evt. også en for helt sættet af spillekort? Så kunne hvert kort-objekt selv holde rede sin værdi og kulør, og du kunne nøjes med at spørge det isf. dine serier af switch'er.
Holder du egentlig rede på hvilke kort, der allerede er gået?
Avatar billede l33t_gejl Nybegynder
19. januar 2006 - 22:14 #2
I funktionerne stripa og stipb erstatter den et brugt kort med et nyt (laver et array med 13 tal og fjerne så det brugte tal) :) Kan du uddybe hvad din idé går ud på?
Avatar billede tjp Mester
19. januar 2006 - 22:34 #3
Jeg har ikke tænkt dybere over udformningen, men når jeg ser en omgang Copy/Paste-nedarv, dvs. når den samme kodestump gentages flere steder i koden, så slår det mig altid, at dette må kunne, eller rettere, burde samles ét sted - fx i en funktion eller i en klasse. Så skal det kun skrives én gang, ét sted, og er derfor også lettere at rette/ændre, hvis det skulle blive nødvendigt.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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