Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoc oko prikaza pobednika u Texas Holdem Pokeru

[es] :: PHP :: Pomoc oko prikaza pobednika u Texas Holdem Pokeru

[ Pregleda: 3453 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Lord_Nenad
Lord_Nenad
Zvornik

Član broj: 143541
Poruke: 170
*.net.



+8 Profil

icon Pomoc oko prikaza pobednika u Texas Holdem Pokeru21.09.2009. u 03:05 - pre 177 meseci
Evo scripte koja racuna sta koji od ucesnika igre ima za 5 karti:

Code:


// karte se oznacavaju sa pik, tre, her i kar + jacina karte. npr. pikA, her2, treK, itd.
// karte su definisane kao $karta1 - $karta5


$strit = 0;
$rojal = 0;
$flesh = 0;
$iste = 0;
$ima2 = 0;
$ima3 = 0;
$ima4 = 0;
$kenta = 0;
$najveca = 0;

$array1 = array($karta1, $karta2, $karta3, $karta4, $karta5);
$array22 = array(substr($karta1, 3, 4), substr($karta2, 3, 4), substr($karta3, 3, 4), substr($karta4, 3, 4), substr($karta5, 3, 4) );

if ( substr($array1[0], 0, 3) == substr($array1[1], 0, 3) and 
substr($array1[1], 0, 3) == substr($array1[2], 0, 3) and 
substr($array1[2], 0, 3) == substr($array1[3], 0, 3) and 
substr($array1[3], 0, 3) == substr($array1[4], 0, 3) ) {

$array2 = array( "10", "B", "D", "K", "A");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$rojal = 1;
}


if ( $rojal != 1 ) {

$array2 = array("A", "2", "3", "4", "5");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 1;
}

$array2 = array("2", "3", "4", "5", "6");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 2;
}

$array2 = array("3", "4", "5", "6", "7");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 3;
}

$array2 = array("4", "5", "6", "7", "8");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 4;
}

$array2 = array( "5", "6", "7", "8", "9");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 5;
}

$array2 = array( "6", "7", "8", "9", "10");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 6;
}

$array2 = array( "7", "8", "9", "10", "A");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 7;
}

$array2 = array( "8", "9", "10", "A", "B");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 8;
}

$array2 = array( "9", "10", "B", "D", "K");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$strit = 9;
}

}

$flesh = 1;

}

if ( substr($array1[0], 3, 4) == substr($array1[1], 3, 4) and 
substr($array1[1], 3, 4) == substr($array1[2], 3, 4) and 
substr($array1[2], 3, 4) == substr($array1[3], 3, 4) and 
substr($array1[3], 3, 4) == substr($array1[4], 3, 3) and 
substr($array1[4], 3, 4) == substr($array1[5], 3, 3) ) {

$iste = substr($array1[4], 3, 4);

}



$ponavljanja = array_count_values($array22);
foreach ($ponavljanja as $value => $v) {
if ( $v == 3 ) {
$ima3 = $value;
}
if ( $v == 2 ) {
if ( $ima2 ) {
$ima4 = $value;
}
else
{
$ima2 = $value;
}
}
}



$array2 = array("A", "2", "3", "4", "5");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 1;
}

$array2 = array("2", "3", "4", "5", "6");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 2;
}

$array2 = array("3", "4", "5", "6", "7");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 3;
}

$array2 = array("4", "5", "6", "7", "8");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 4;
}

$array2 = array( "5", "6", "7", "8", "9");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 5;
}

$array2 = array( "6", "7", "8", "9", "10");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 6;
}

$array2 = array( "7", "8", "9", "10", "A");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 7;
}

$array2 = array( "8", "9", "10", "A", "B");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 8;
}

$array2 = array( "9", "10", "B", "D", "K");
$result = array_diff($array22, $array2);
if ( count($result) == 0 ) {
$kenta = 9;
}

$najveca = max($array22);



U Texas Holdem-u se biraju 5 karti od mogucih 7.

U ovoj scripti se racuna sta ucesnik ima od kombinacija ako vec izabere tih 5 karti.

Ovaj kod je provucen kroz while petlju koja ucitava karte igraca ( po dve karte svakog igraca ).

Problem je sto sam zapeo kod biranja tih 5 karti
i ukoliko budu 2 ili vise ucesnika sa istim kartama kako da se pronadje koji od njih je pobednik...

Ima neko ideju, neku nadopunu na ovaj kod da proradi sa 7 karata i ukoliko se pronadje vise istih jacina?

 
Odgovor na temu

b0ris
Boris Vujicic
Senior PHP programer
Beograd

Član broj: 126587
Poruke: 158
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru21.09.2009. u 09:11 - pre 177 meseci
Mozda moze ovaj link da ti pomogne, ima svakakvih alata :)
http://www.texasholdem-poker.com/handrank
---------------------------------------------------------------------
Just do it.
 
Odgovor na temu

Lord_Nenad
Lord_Nenad
Zvornik

Član broj: 143541
Poruke: 170
*.net.



+8 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru21.09.2009. u 14:08 - pre 177 meseci
Tu imaju pravila igranja i njihov online calculator ko je pobednik...

A meni treba php scripta... tj. dorada ove moje ali da radi do kraja
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
93.86.42.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru22.09.2009. u 10:44 - pre 177 meseci
Ja sam imao ideju da napravim ovako nešto, i mislim da bi pametnije tako bilo da se uradi: Da se napravi klasa "špil karata" (deck) koja će sadržati sve karte (možda nam treba i posebna klasa za kartu?) i neke osnovne metode (promešaj, preseci, ovo-ono) i onda iz nje da se izvede klasa Texas Hold'em koja će držati broj igrača, karte svih igrača i karte na stolu, i naravno ta klasa bi trebalo da poredi ko je (naj)jači na stolu.

Mada ja ne znam koliko ću vremena imati da se posvetim ovome, ali mogli bismo da probamo ovde da napravimo tako nešto? A verujem da nije to toliko lak posao, kad ima recimo 10 igrača i 3 side pot-a, treba za svakog izračunati koji pot uzima.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Lord_Nenad
Lord_Nenad
Zvornik

Član broj: 143541
Poruke: 170
*.net.



+8 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru23.09.2009. u 20:04 - pre 177 meseci
Ja sam vec sve napravio... Photoshop, Flash, PHP, MySQL sve se iskombinuje i napravi se real time poker.
Sobe, Top lista, ima 2-10 igraca, mali ulog, veliki ulog, deljenje, licitiranje, podela 3 karte na sto, lisitiranje, odela 4te karte, licitiranje, podela 5te karte, licitiranje i onda treba mi ovo da odredim ko je pobednik, ali sam zapeo
Sve je uradjeno samo mi treba ovo na kraju... Jos mozda 10-20 redova koda...

Ovo ovde sto sam napisao ce biti funkcija koja ce se pozivati na kraju, ucitava se iz baze 5 karti koje su "na sredini" i od svakog korisnika sta ima u ruci... I onda se racunaju jacine. I ovo sto ja imam radi za 5 karti, ali problem je sto ovde ima 7 i oke, ovo radi i sa 7 donekle, ali ukoliko 2 igraca imaju iste karte, onda se moraju "odbaciti" ove karte koje prave te "iste jacine kombinacije" i odrediti ko je na osnovu ostalih karti pobednik ( ili u NAJGOREM slucaju da je neresheno ).

Ajd ako uspem da napravim poslacu ime sajta gde ce se postaviti poker, ili cu napraviti da moze da se koristi i na drugim sajtovima pomoci iframe ili tako nesto, da mogu i drugi webmasteri da ga koriste... AKO uspem...
 
Odgovor na temu

Lord_Nenad
Lord_Nenad
Zvornik

Član broj: 143541
Poruke: 170
*.net.



+8 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru25.09.2009. u 00:05 - pre 177 meseci
Neko?

Ajd ako nekom treba poker, stavicu kao "polu-opensource", napraviti kako da se uklopi sve da radi i na drugim sajtovima,
posto stvarno ne bih da se menja Flash animacija, posto sam ipak puno vremena proveo praveci,
celu grafiku sam ja nacrtao "rucno" pomocu Photoshopa i Cinema 4D ( jedino karte nisam :D ), znachi sve je samo moje...
Samo da mi bi zavrshiti...
Ajd evo slike kako izgleda TRENUTNO, treba mu jos posla, sredjivanja, ali ne mogu nista dok ne uradim ovo...

Slika


 
Odgovor na temu

Lord_Nenad
Lord_Nenad
Zvornik

Član broj: 143541
Poruke: 170
*.net.



+8 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru28.09.2009. u 15:20 - pre 177 meseci
I niko...?
 
Odgovor na temu

b0ris
Boris Vujicic
Senior PHP programer
Beograd

Član broj: 126587
Poruke: 158
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru28.09.2009. u 20:53 - pre 177 meseci
Pomoci cu ti ja javi mi se na PP da vidim kako to tacno radi i da mi das kod.
Postovacemo ovde resenje posle
---------------------------------------------------------------------
Just do it.
 
Odgovor na temu

b0ris
Boris Vujicic
Senior PHP programer
Beograd

Član broj: 126587
Poruke: 158
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru28.09.2009. u 23:52 - pre 177 meseci
Bilo mi dosadno i malo sam se igrao veceras. nema potrebe da mi saljes pp
Evo kod koji bi trebalo da ti radi za 7 karata.
Znaci vraca ti broj bodova. Svaka ruka vredi odredjen broj bodova.
Izvrsi to za sve igrace i znaces ko je sta i koliko dobio.

Nisam mnogo komentarisao kod, nadam se da ces i ovako moci da razumes (ako treba nesto da popravis)
Code:

/*
   Kako se boduju karte
   // Karta vredi broj bodova od 2 do 15 A = 15 //Uzeli smo 100 jer je najvise bodova na kartama KKAAA = 73
   // High Card      = 0
   // One Pair       = 100
   // Two Pair       = 200
   // Trips          = 300
   // Run            = 400
   // Flush          = 500
   // Boat           = 600
   // Quads          = 700
   // Straight Flush = 800  // Ova dva su ista
   // Royal Flush    = 900  // Ova dva 
*/
$brojbodova = 0;

$karta1 = "karA";
$karta2 = "karD";
$karta3 = "kar10";
$karta4 = "karB";
$karta5 = "karK";
$karta6 = "her10";
$karta7 = "her3";

$karta1 = "karK";
$karta2 = "karD";
$karta3 = "kar10";
$karta4 = "tre8";
$karta5 = "karA";
$karta6 = "tre10";
$karta7 = "her3";

$allcards = array($karta1, $karta2, $karta3, $karta4, $karta5, $karta6, $karta7);
for($i = 1; $i<=7; $i++){
  $karta = 'karta'.$i;
  $num = substr($$karta, 3, 4);
  $allnumbers[] =  $num == 'A'?14:($num=='B'?11:($num=='D'?12:($num=='K'?13:$num)));
  $allsings[] = substr($$karta, 0, 3);
}
$allnumbers_copy = $allnumbers;
$allsings_copy = $allsings;
// Da li ima boju
$array = array_count_values($allsings);
$daliimaboje = false;
foreach($array as $key => $value) $value >= 5?$daliimaboje = true:false;
$array = array(); 
if($daliimaboje){
  // HM eto Boje, aj sad da vidimo da li ima skalu
  $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  $brojbodova = 500; // Samo boja
  sort($allnumbers);
  $skala = 1;
  $bodovi = $allnumbers[$i-1];
  $malaskala = 0;
  for($i = 1; $i<7; $i++){
    if($skala<5){ // Ovo smo postavili zbog moguceg A
      $allnumbers[$i-1]+1 == $allnumbers[$i]?$skala++:$skala = 1;
      $allnumbers[$i-1]+1 == $allnumbers[$i]?
        $bodovi += $allnumbers[$i-1]:$bodovi = 0;
      $last = $i;
      $skala > $malaskala?$malaskala = $skala:false;
    }
  }
  if($skala >= 5) $brojbodova = 800+$bodovi+$allnumbers[$last]; // Nasli smo boju + skalu
  elseif($malaskala == 4){
    // Ispitujemo specijalan slucaj da li je mozda skala 2,3,4,5 i A
    // Posto su brojevi slozeni dovoljno je da ispitamo da li postoje 2,3,4,5
    if($allnumbers[0]+$allnumbers[1]+$allnumbers[2]+$allnumbers[3] == 14){
      for($i = 4; $i<7; $i++)
        $allnumbers[$i] == 14?$brojbodova = 800+15:$brojbodova = 500;
    }
  }
  // Da nasli smo boju + skalu :) Lep broj bodova za sad
}   
// Ovde bi mogli da prekinemo racunanje ako je broj bodova iznad 800 jer to znaci da imamo najacu ruku mogucu
if($brojbodova > 800){
  echo $brojbodova;  exit(1);
}
else{
  // Ajmo sad dalje da racunamo
  // Sledece na listi je poker ajde da vratimo sacuvane vrednosti
  $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  if(count(array_unique($allnumbers)) < 5){
    // Imamo 4 iste :)
    $brojbodova = 700;
    $bodovi = 0;
    // Aj sad da vidimo koje 4 iste imamo
    $array = array_count_values($allnumbers);
    foreach($array as $key => $value){
      $value == 4?$bodovi = 4*$key:false;
    }
    $brojbodova += $bodovi;
  }  
}
// Ajde sad da izbacimo broj bodova ako je poker
if($brojbodova > 700 && $brojbodova < 800){
  echo $brojbodova; exit(1);
}else{
  // Da nastavimo da racunamo
  // Sledece na listi je ful. Trebaju nam dve iste i tri iste
    $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  $triiste = $dveiste = false;
  $array = array_count_values($allnumbers);
  foreach($array as $key => $value){
      // Posto moze da se desi da imamo dva puta po 3 iste jer imamo 7 karata na raspolaganju
      if($triiste) $value == 3?$dveiste = true:false;
      $value == 3?$triiste = true:false;
      $value == 2?$dveiste = true:false;
  }
  if($triiste && $dveiste){
    $brojbodova = 600;
    // Sad je bitno da izaberemo prave karte.
    $bodoviTri = $bodoviDve = 0;
    foreach($array as $key => $value){
      if($bodoviTri != 0){
        if($value == 3?($bodoviTri > $key*3?$bodoviDve = $key*2:true):false){
          if($bodoviDve == 0){
            $bodoviDve = ($bodoviTri/3)*2;
            $bodoviTri = $key*3;
          }
        }
      }
      $value == 3?$bodoviTri = $key*3:false;
      $value == 2?($bodoviDve== 0?$bodoviDve = $key*2:($bodoviDve > $key*2?false:$bodoviDve = $key*2)):false;
    }
    $brojbodova += $bodoviDve+$bodoviTri;
  }
}
// Hm da li je broj bodova veci od 600 ako jeste ispisujemo
if($brojbodova > 600 && $brojbodova < 700){
  echo $brojbodova; exit(1);
}else{
  // idemo dalje Sledece na spisku je boja
    $allnumbers = $allnumbers_copy;
    $allsings = $allsings_copy;
    if($daliimaboje){ 
      sort($allnumbers);
      $bodovi = 0;
      for($i = 6; $i>=2; $i--){
        $bodovi += $allnumbers[$i]+(($i-1)*15);
      }
      $bodovi = $bodovi/5;
      $brojbodova = (int)(500 + $bodovi);
    }
}
if($brojbodova > 500 && $brojbodova < 600){
  echo $brojbodova;  exit(1);
}
else{
  // Sledece na listi je skala
  $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  $brojbodova = 400; // Samo boja
  sort($allnumbers);
  $skala = 1;
  $bodovi = $allnumbers[$i-1];
  $malaskala = 0;
  for($i = 1; $i<7; $i++){
    if($skala<5){ // Ovo smo postavili zbog moguceg A
      $allnumbers[$i-1]+1 == $allnumbers[$i]?$skala++:$skala = 1;
      $allnumbers[$i-1]+1 == $allnumbers[$i]?
        $bodovi += $allnumbers[$i-1]:$bodovi = 0;
      $last = $i;
      $skala > $malaskala?$malaskala = $skala:false;
    }
  }
  if($skala >= 5) $brojbodova = 400+$bodovi+$allnumbers[$last]; // Nasli smo boju + skalu
  elseif($malaskala == 4){
    // Ispitujemo specijalan slucaj da li je mozda skala 2,3,4,5 i A
    // Posto su brojevi slozeni dovoljno je da ispitamo da li postoje 2,3,4,5
    if($allnumbers[0]+$allnumbers[1]+$allnumbers[2]+$allnumbers[3] == 14){
      for($i = 4; $i<7; $i++)
        $allnumbers[$i] == 14?$brojbodova = 400+15:$brojbodova = 0;
    }
  }
}
if($brojbodova > 400 && $brojbodova < 500){
  echo $brojbodova; exit(1);
}
else{
  // Sad nas interesuje da li imamo triling
  $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  if(count(array_unique($allnumbers)) < 6){
    // Imamo 4 iste :)
    $brojbodova = 300;
    $bodovi = 0;
    // Aj sad da vidimo koje 4 iste imamo
    $array = array_count_values($allnumbers);
    foreach($array as $key => $value){
      $value == 3?$bodovi = 3*$key:false;
    }
    $brojbodova += $bodovi;
  } 
}
if($brojbodova > 300 && $brojbodova < 400){
  echo $brojbodova; exit(1);
}
else{
  // Sad nas interesuje da li imamo dva para
  $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  $allnumbers = array_count_values($allnumbers);
  $prviPar = $drugiPar = $treciPar = 0;
  foreach($allnumbers as $key => $value){
    if($drugiPar){$value == 2?$treciPar = $key*2:false;}
    else{
      if($prviPar){$value == 2?$drugiPar = $key*2:false;}
      else $value == 2?$prviPar = $key*2:false;
    } 
  }
  if($treciPar){
    $array = array();
    $array[] = $prviPar+$drugiPar;
    $array[] = $prviPar+$treciPar;
    $array[] = $drugiPar+$treciPar;
    sort($array);
    $brojbodova = 200+$array[2];    
  }elseif($drugiPar) $brojbodova = 200+$prviPar+$drugiPar;
}
if($brojbodova > 200 && $brojbodova < 300){
  echo $brojbodova; exit(1);
}
else{
  // Sad nas interesuje samo jedan par
  $allnumbers = $allnumbers_copy;
  $allsings = $allsings_copy;
  $allnumbers = array_count_values($allnumbers);
  $bodovi = 0;
  foreach($allnumbers as $key => $value){
    $value == 2?$bodovi = $key*2:false;
  }
  if($bodovi)    
    $brojbodova = 100+$bodovi;
}
if($brojbodova > 100 && $brojbodova < 200){
  echo $brojbodova; exit(1);
}
else{
  if($brojbodova == 0){
    // Posledenj racunanje :)
    $allnumbers = $allnumbers_copy;
    $allsings = $allsings_copy;
    sort($allnumbers);
    $bodovi = 0;
    for($i = 6; $i>=2; $i--){
      $bodovi += $allnumbers[$i]+(($i-1)*15);
    }
    $bodovi = $bodovi/5;
    $brojbodova = $bodovi;
  }
}
if($brojbodova > 0 && $brojbodova < 100){
  echo $brojbodova; exit(1);
}

---------------------------------------------------------------------
Just do it.
 
Odgovor na temu

Lord_Nenad
Lord_Nenad
Zvornik

Član broj: 143541
Poruke: 170
*.net.



+8 Profil

icon Re: Pomoc oko prikaza pobednika u Texas Holdem Pokeru29.09.2009. u 08:01 - pre 177 meseci
Wow... Lepa scripta... Ajd pisacu na PP...
 
Odgovor na temu

[es] :: PHP :: Pomoc oko prikaza pobednika u Texas Holdem Pokeru

[ Pregleda: 3453 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.