Błędy merytoryczne cd.
Wtorek 21 Kwiecień 2009 10:46:02 am - jojo
<jojo_at_jabster.pl>
Rozpędziłem się w poprzednim komentarzu: gracz 2 ma 5 punktów ;)
Błędy merytoryczne
Wtorek 21 Kwiecień 2009 10:40:51 am - jojo
Widzę w tym artykule kilka błędów merytorycznych.
Przede wszystkim chodzi mi o kolejność układów. Do strita jest dobrze, apóźniej jest już przemieszane. Po stricie powinien być kolor dalej full, kareta i poker.
Po drugie w pokera powinno się jednak grać całą talią (52 karty) i o ile w tym wypadku funkcje sprawdzające obecność par, trójki, fulla, koloru czy karety powinny się sprawdzić, o tyle funkcja sprawdzająca strita już się wyłoży. Generalnie w pokerze nie powinno się rozróżniać mały/duży strit. Strit to po prostu 5 kart po kolei i takiego sprawdzenia należałoby użyć. Jeśli dwóch graczy ma jednocześnie strita o zwycięstwie decyduje najwyższa karta. To samo się tyczy pokera. Rozróżnianie na duży/mały ma sens tylko przy grze 24 kartami. Przy pełnej talii mamy pokera, który faktycznie jest stritem w kolorze, natomiast, to co nazywasz "Dużym pokerem" nazywa się po prostu "Poker królewski" i w całej grze są tylko 4 możliwe takie układy. W związku z tym sprawdzenie tego układu powinno polegać na sprawdzeniu czy jest pokerem oraz czy najwyższą kartą jest as.
Trzecia sprawa to wyznaczanie zwycięzcy w przypadku podobnych układów. Proponujesz tu sumowanie wartości kart. Niestety taki algorytm nie zadziała. Przykład:
Gracz 1: 991010A
Gracz 2: 99JJ10
Zgodnie z zasadami powinien wygrać gracz 2, ponieważ ma wyższą drugą parę. Natomiast jeśli zsumujemy wartości ich kart, dla gracza pierwszego otrzymamy wartość 7, a dla gracza 2 dostaniemy 6. Tego typu układy jeszcze łatwiej byłoby uzyskać przy grze pełną talią.
Ogólnie artykuł jest nieco naiwną próbą sprowadzenia dość skomplikowanej gry, jaką jest poker, do poziomu prościutkiego skryptu. Występują tu oczywiste błędy merytoryczne, o których pisałem wyżej, a także sporo literówek.
Na koniec cytat za Wikipedią:
"Poker - gra karciana (...), której celem jest wygranie pieniędzy od pozostałych uczestników". Więc ja się pytam: A gdzie licytacja? :)
Full? - tak
Piątek 27 Marzec 2009 11:58:19 pm - SebaZ
<sebaz_at_extreme-fusion.pl>
Wystarcza, bo full to własnie para + trójka
powtorzenia w tekscie
Piątek 27 Marzec 2009 10:18:01 pm - dr_bonzo
@scanner (chyba do ciebie uwaga :D)
w ostatnim podrozdziale prawie wszystko jest po 2 razy wpisane.
full -2
Piątek 27 Marzec 2009 10:15:50 pm - dr_bonzo
@slawek: ok, masz racje
tamten komentarz pisalem po obejrzeniu funkcji Full() a nie zajrzeniu do Jedna_Para().
return in_array( 2, Ilosc_Figur($rozdanie) );
to akceptuje tylko karty ktore wystapily TYLKO w ilosci 2 :)
----------
inne uwagi:
1. tasowanie kart przeciez jest.. shuffle()
2. "gracz dostaje po 5 kart"
for($i=0;i<=$4;$i++){ // zadziala
for($i=0;i< $5;$i++){ // ale czy nie lepsze/czytelniejsze = 5 to 5
para
Piątek 27 Marzec 2009 9:44:37 pm - php programmer
<slawek.lis.gdynia_at_wp.pl>
i nie zawiera..
funkcja jedna para nie liczy par, które znajdują się w trójce
full house...
Piątek 27 Marzec 2009 9:20:37 pm - dr_bonzo
@scanner: ta para dodatkowo NIE MOZE zawierac sie w trojce, bo inaczej trojka jest zarowno trojka i para, wiec w kodzie jest blad.
Full?
Piątek 27 Marzec 2009 9:14:01 pm - scanner
<scanner_at_poczta.php.pl>
Na pokerze się nie znam, ale czy do wykrycia full'a na pewno wystarczy sprawdzić, czy istnieje para i trójka?