NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Oko bere PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Miroslav Ganaj:3.10.2023 12:39

Super hra no, keď vyťahám všetky karty tak to robí chyby. A keď stlačím stop a skončí hra tak by tam nemalo byť tlačidlo Stop - keď stlačím tak robí ako novú hru-ale nedá mi ani jednu kartu a buď vyhrám alebo prehrám.

 
Odpovědět
3.10.2023 12:39
Avatar
Miroslav Ganaj:6.10.2023 14:21

Pomocou ChatGPT som zlepšil Očko, obmedzil som to na 8 ťahov, kedže najnižšie karty sú 2 a 3. (2*4) + (3*4) je 20. Nemá zmysel dalej tahať.

<?php
/**
 * @author sczdavos
 * @site www.itnetwork.cz
 */

header('Content-type: text/html; charset=utf8');
echo('Oko bere - Blackjack');
$cards = array();
$count = 0;
$buttonText = 'Start';
$stopButtonVisible = 'hidden';

// při odeslání formuláře
if (((isset($_POST['nextcard'])) && ($_POST['cards'])) || (isset($_POST['stop'])))
{
    // do pole karet se nahraje již promíchané pole
    $cards = explode(',', $_POST['cards']);
    // počet vypsaných karet v minulém kole
    $count = $_POST['count'];

    // pokud hráč neukončil hru
    if (($count >= 0) && (!isset($_POST['stop'])))
    {
        // táhne další kartu
        $count++;
        $buttonText = 'Další karta';
        $stopButtonVisible = 'visible';

        // pokud hráč vytáhl osmou kartu, automaticky provádíme vyhodnocení
        if ($count == 8) {
            $_POST['stop'] = true;
            $buttonText = 'Start';
            $stopButtonVisible = 'hidden';
        }
    }
}
// jinak se nahraje nesetříděné pole karet a to se promíchá
else
{
    $cards = array (
        "♠2", "♣2", "♥2", "♦2",
        "♠3", "♣3", "♥3", "♦3",
        "♠4", "♣4", "♥4", "♦4",
        "♠5", "♣5", "♥5", "♦5",
        "♠6", "♣6", "♥6", "♦6",
        "♠7", "♣7", "♥7", "♦7",
        "♠8", "♣8", "♥8", "♦8",
        "♠9", "♣9", "♥9", "♦9",
        "♠10", "♣10", "♥10", "♦10",
        "♠J", "♣J", "♥J", "♦J",
        "♠Q", "♣Q", "♥Q", "♦Q",
        "♠K", "♣K", "♥K", "♦K",
        "♠A", "♣A", "♥A", "♦A",
    );

    shuffle($cards);
}

// hodnoty nečíselných karet
$cardsScore = array('J' => 10, 'Q' => 10, 'K' => 10, 'A' => 11);
$playerScore = 0;

// výpis karet
echo('<table cellspacing="5"><tr>');
for ($i = 0; $i < $count; $i++)
{
    echo('<td width="70px" height="100px" style="border:2px solid black; text-align:center;"><h1>' . $cards[$i] . '</h1></td>');

    // pokud hráč ukončil hru spočítá se jeho skóre
    if (isset($_POST['stop']))
    {
        $card = str_replace(array('♠', '♣', '♥', '♦'), '', $cards[$i]);
        if (is_numeric($card))
            $playerScore += $card;
        else
            $playerScore += $cardsScore[$card];
    }
}
echo('</tr></table>');

// pokud hráč ukončil hru - vyhodnotí se
if (isset($_POST['stop']))
{
    // skóre počítače se generuje náhodně
    $computerScoreArray = array(16, 17, 18, 19, 20, 21, 'moc');
    $computerScore = $computerScoreArray[rand(0, count($computerScoreArray) - 1)];

    // výpis skóre hráče
    echo('Tvoje skóre: ');
    if ($playerScore > 21)
        echo('moc');
    else
        echo($playerScore);

    // skóre pc
    echo('<br />Skóre počítače: ' . $computerScore . '<br />');

    // vyhodnocení
    // počítač vyhraje za podmínky
    // 1) pokud je hodnota pc číselná (v zadání je i 'moc') a je větší než hráčova
    // 2) skóre hráče je vyšší než 21
    if ((is_numeric($computerScore) && ($computerScore >= $playerScore))
        || ($playerScore > 21))
        echo('Vyhrál počítač');
    else
        echo('Vyhrál jsi ty!');

    // balíček se zamíchá a hra se při dalším kole resetuje
    shuffle($cards);
    $count = 0;
}

// výpis formuláře
echo('
    <form method="post">
        <input type="hidden" name="cards" value="' . implode(',', $cards) . '" />
        <input type="hidden" name="count" value="' . $count .'" />
        <input type="submit" name="nextcard" value="' . $buttonText . '" />
        <input type="submit" name="stop" value="Stop" style="visibility: ' . $stopButtonVisible . ';" />
    </form>
');
?>
 
Odpovědět
6.10.2023 14:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.