Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: poker
Forum PHP.pl > Forum > Gotowe rozwi±zania > Szukam
xsandrax13
Witam, jak w temacie, potrzebuję algorytmu pokera w php. Dopiero zaczynam pisać, a mam do wykonania pokera z obsług± sieci. Jak już wspomniałam zależy mi na jakim¶ bardzo prostym skrypcie, abym miała jaki¶ punkt odniesienia.

Pozdrawiam
DREEMus
Poszukaj w artykułach na php.pl smile.gif Było!

http://wortal.php.pl/wortal/artykuly/pomys...my_do_gry_poker
Moli
Jaki¶ czas temu pisałem klase do pokera. Kod już trochę czasu ma ale działa dobrze smile.gif
  1. <?php
  2.  
  3. /**
  4.  * Klasa do gry w Pokera
  5.  *
  6.  * @Author: Michał Molenda
  7.  * @Contact: praca@michalmolenda.pl
  8.  * @Www: www.michalmolenda.pl
  9.  */
  10. class poker
  11. {
  12.    
  13.    private $talia        = array();
  14.    private $karty        = array();
  15.    private $zaklady    = array();
  16.    
  17.    /**
  18.      * Ustawienie tali kart
  19.      *
  20.      */
  21.    public function __construct ()
  22.    {
  23.        $talia = array (
  24.            array ( '9' , 'trefl' , 1 ),
  25.            array ( '10' , 'trefl' , 2 ),
  26.            array ( 'W' , 'trefl' , 3 ),
  27.            array ( 'D' , 'trefl' , 4 ),
  28.            array ( 'K' , 'trefl' , 5 ),
  29.            array ( 'A' , 'trefl' , 6 ),
  30.            
  31.            array ( '9' , 'karo' , 1 ),
  32.            array ( '10' , 'karo' , 2 ),
  33.            array ( 'W' , 'karo' , 3 ),
  34.            array ( 'D' , 'karo' , 4 ),
  35.            array ( 'K' , 'karo' , 5 ),
  36.            array ( 'A' , 'karo' , 6 ),
  37.            
  38.            array ( '9' , 'kier' , 1 ),
  39.            array ( '10' , 'kier' , 2 ),
  40.            array ( 'W' , 'kier' , 3 ),
  41.            array ( 'D' , 'kier' , 4 ),
  42.            array ( 'K' , 'kier' , 5 ),
  43.            array ( 'A' , 'kier', 6 ),
  44.            
  45.            array ( '9' , 'pik' , 1 ),
  46.            array ( '10' , 'pik' , 2 ),
  47.            array ( 'W' , 'pik' , 3 ),
  48.            array ( 'D' , 'pik' , 4 ),
  49.            array ( 'K' , 'pik' , 5 ),
  50.            array ( 'A' , 'pik' , 6 ),
  51.        );
  52.        
  53.        $zaklady = array (
  54.            0.1,
  55.            0.2,
  56.            0.3,
  57.            0.4,
  58.            0.5,
  59.            0.6,
  60.            0.7,
  61.            0.8,
  62.            0.9,
  63.        );
  64.        
  65.        $this->talia    = $talia;
  66.        $this->zaklady    = $zaklady;
  67.    }
  68.    
  69.    /**
  70.      * Rozdanie kart
  71.      *
  72.      * @param int $ile
  73.      */
  74.    public function Rozdanie( $ile = 5 )
  75.    {
  76.        for ( $i = 0 ; $i < $ile ; $i++ )
  77.        {
  78.            $rand = rand(0,count($this->talia));
  79.            
  80.            if ( !empty ( $this->talia[$rand] ) )
  81.            {
  82.                $this->karty[] = $this->talia[$rand];
  83.                unset($this->talia[$rand]);
  84.            }
  85.            else
  86.                $this->Rozdanie(1);
  87.        }
  88.    }
  89.    
  90.    /**
  91.      * Zwraca talię
  92.      *
  93.      * @return array
  94.      */
  95.    public function Talia()
  96.    {
  97.        return $this->talia;
  98.    }
  99.    
  100.    /**
  101.      * Zwraca karty gracza
  102.      *
  103.      * @return array
  104.      */
  105.    public function Karty ()
  106.    {
  107.        return $this->karty;
  108.    }
  109.    
  110.    /**
  111.      * Ustawia tablicę z kartami
  112.      *
  113.      */
  114.    public function setKarty($karty)
  115.    {
  116.        $this->karty = $karty;
  117.    }
  118.    
  119.    /**
  120.      * Podmienia podane karty
  121.      *
  122.      * @param array $karty
  123.      */
  124.    public function Podmien ( $karty )
  125.    {
  126.        if ( is_array ( $karty ) )
  127.        {
  128.            $ile = count($karty);
  129.            
  130.            foreach ( $karty as $row )
  131.            {
  132.                unset($this->karty[$row]);
  133.            }
  134.            
  135.            $this->Rozdanie($ile);
  136.        }
  137.    }
  138.    
  139.    /**
  140.      * Obliczanie wygranej użytkownika
  141.      *
  142.      * @param int $stawka
  143.      */
  144.    public function Sprawdz( $stawka )
  145.    {
  146.         $parm = array('type'=>0,'wygrana'=>0);
  147.  
  148.         // Poker królewski
  149.         if ( $this->isKrolewskiPoker() )
  150.             $parm = array('type'=>9,'wygrana'=>$stawka*$this->zaklady[8]);
  151.  
  152.        // Poker
  153.         if ( $this->isPoker() )
  154.             $parm = array('type'=>8,'wygrana'=>$stawka*$this->zaklady[7]);    
  155.            
  156.        // Kareta
  157.         if ( $this->isKareta() )
  158.             $parm = array('type'=>7,'wygrana'=>$stawka*$this->zaklady[6]);    
  159.            
  160.        // Ful
  161.         if ( $this->isFul() )
  162.             $parm = array('type'=>6,'wygrana'=>$stawka*$this->zaklady[5]);    
  163.            
  164.        // Kolor
  165.         if ( $this->isKolor() )
  166.             $parm = array('type'=>5,'wygrana'=>$stawka*$this->zaklady[4]);
  167.            
  168.        // Strit
  169.         if ( $this->isStrit() )
  170.             $parm = array('type'=>4,'wygrana'=>$stawka*$this->zaklady[3]);
  171.                  
  172.        // Trójka
  173.         if ( $this->isTrojka() )
  174.             $parm = array('type'=>3,'wygrana'=>$stawka*$this->zaklady[2]);
  175.                  
  176.        // Dwie pary
  177.        if ( $this->isDwiePary() )
  178.            $parm = array('type'=>2,'wygrana'=>$stawka*$this->zaklady[1]);    
  179.            
  180.        // Para
  181.        if ( $this->isPara() )
  182.            $parm = array('type'=>1,'wygrana'=>$stawka*$this->zaklady[0]);
  183.  
  184.        $parm['wygrana'] = round($parm['wygrana']);    
  185.            
  186.        return $parm;
  187.    }
  188.    
  189.    /**
  190.      * Funkcja sprawdza czy jest para
  191.      *
  192.      */
  193.    private function isPara ( )
  194.    {
  195.        $t = array();
  196.        
  197.        foreach ( $this->karty as $row )
  198.        {
  199.            if ( in_array ( $row[0] , $t ) )
  200.                return true;
  201.            
  202.            $t[] = $row[0];
  203.        }
  204.        
  205.        return false;
  206.    }
  207.    
  208.    /**
  209.      * Funkcja sprawdza czy s± dwie pary
  210.      *
  211.      */
  212.    private function isDwiePary()
  213.    {
  214.        $t = array();
  215.        
  216.        foreach ( $this->karty as $row )
  217.        {
  218.            if ( empty ( $t[$row[0]] ) )
  219.                $t[$row[0]] = 1;
  220.            else
  221.            {
  222.                $t[$row[0]] = $t[$row[0]]+1;
  223.                ++$i;
  224.            }
  225.        }
  226.        
  227.        if ( $i == 2 )
  228.            return true;
  229.        
  230.        return false;
  231.    }
  232.    
  233.    /**
  234.      * Funkcja sprawdza czy jest trójka
  235.      *
  236.      */
  237.    private function isTrojka()
  238.    {
  239.        $t = array();
  240.        
  241.        foreach ( $this->karty as $row )
  242.        {
  243.            if ( empty ( $t[$row[0]] ) )
  244.                $t[$row[0]] = 1;
  245.            else
  246.            {
  247.                $t[$row[0]] = $t[$row[0]]+1;
  248.            }
  249.        }
  250.        
  251.        if ( in_array ( 3 , $t ) )
  252.            return true;
  253.        
  254.        return false;
  255.    }
  256.    
  257.    /**
  258.      * Sprawdza czy użytkownik ma strita
  259.      *
  260.      */
  261.    public function isStrit()
  262.    {
  263.        $t = array();
  264.        
  265.        foreach ( $this->karty as $row )
  266.        {
  267.            $t[] = $row[2];
  268.        }
  269.        sort($t);
  270.  
  271.        foreach ( $t as $key => $row )
  272.        {
  273.            if ( $key != 0 )
  274.            {
  275.                if ( ($row-1) == $t[$key-1] )
  276.                    ++$ile;
  277.            }
  278.            else
  279.                ++$ile;
  280.        }
  281.        
  282.        if ( $ile == 5 )
  283.            return true;
  284.        
  285.        return false;
  286.    }
  287.    
  288.    /**
  289.      * Sprawdza czy wszystkie karty sa jednego koloru
  290.      *
  291.      */
  292.    public function isKolor()
  293.    {
  294.        foreach ( $this->karty as $key => $row )
  295.        {
  296.            if ( $key != 0 )
  297.            {
  298.                if ( $row[1] == $kolor )
  299.                    ++$i;
  300.            }
  301.            else
  302.                $kolor = $row[1];
  303.        }
  304.        
  305.        if ( $i == 4 )
  306.            return true;
  307.            
  308.        return false;
  309.    }
  310.    
  311.    /**
  312.      * Sprawdza czy użytkownika ma fula
  313.      */
  314.    private function isFul()
  315.    {
  316.        $t = array();
  317.        
  318.        foreach ( $this->karty as $row )
  319.        {
  320.            if ( empty ( $t[$row[0]] ) )
  321.                $t[$row[0]] = 1;
  322.            else
  323.            {
  324.                $t[$row[0]] = $t[$row[0]]+1;
  325.            }
  326.        }
  327.        
  328.        if ( count ( $t ) == 2 )
  329.            return true;
  330.            
  331.        return false;
  332.    }
  333.    
  334.    /**
  335.      * Sprawdzanie czy użytkownik ma karetę
  336.      */
  337.    private function isKareta()
  338.    {
  339.        $t = array();
  340.        
  341.        foreach ( $this->karty as $row )
  342.        {
  343.            if ( empty ( $t[$row[0]] ) )
  344.                $t[$row[0]] = 1;
  345.            else
  346.            {
  347.                $t[$row[0]] = $t[$row[0]]+1;
  348.            }
  349.        }
  350.        
  351.        if ( in_array ( 4 , $t ) )
  352.            return true;
  353.        
  354.        return false;
  355.    }
  356.    
  357.    /**
  358.      * Sprawdzanie czy użytkownik ma pokera
  359.      */
  360.    private function isPoker()
  361.    {
  362.        $t = array();
  363.        
  364.        foreach ( $this->karty as $row )
  365.        {
  366.            if ( empty ( $kolor ) )
  367.                $kolor = $row[1];
  368.                
  369.            if ( $row[1] == $kolor )
  370.                $t[] = $row[2];
  371.        }
  372.        sort($t);
  373.  
  374.        foreach ( $t as $key => $row )
  375.        {
  376.            if ( $key != 0 )
  377.            {
  378.                if ( ($row-1) == $t[$key-1] )
  379.                    ++$ile;
  380.            }
  381.            else
  382.                ++$ile;
  383.        }
  384.        
  385.        if ( $ile == 5 )
  386.            return true;
  387.        
  388.        return false;
  389.    }
  390.    
  391.    /**
  392.      * Sprawdza czy użytkownik ma królewskiego pokera
  393.      */
  394.    private function isKrolewskiPoker()
  395.    {
  396.        $t = array();
  397.        
  398.        foreach ( $this->karty as $row )
  399.        {
  400.            if ( empty ( $kolor ) )
  401.                $kolor = $row[1];
  402.                
  403.            if ( $row[1] == $kolor )
  404.                $t[] = $row[2];
  405.        }
  406.        sort($t);
  407.  
  408.        if ( count ( $t ) == 5 )
  409.        {
  410.            foreach ( $t as $key => $row )
  411.            {
  412.                if ( $key != 0 )
  413.                {
  414.                    if ( ($row-1) == $t[$key-1] )
  415.                        ++$ile;
  416.                }
  417.                else
  418.                    ++$ile;
  419.            }
  420.        }
  421.        
  422.        if ( $ile == 5 )
  423.            return true;
  424.        
  425.        return false;
  426.    }
  427. }
  428.  
  429. ?>
xsandrax13
dziekuje, my¶lę, że to już bedzie pomocne smile.gif
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.