Principal.php

<< Click to Display Table of Contents >>

Navigation:  Outros > Projeto Cheney >

Principal.php

Previous pageReturn to chapter overviewNext page

<?php
 
require __DIR__ . "/Carta.php";
require __DIR__ . "/Baralho.php";
require __DIR__ . "/Cheney.php";
 
session_start();
 
$form = new StdClass();
 
// eu tento acertar
$form->cartasEu = "";  // valor que o computador me mostra (4 cartas)
$form->quintaCartaEu = ""// quinta carta (que eu deveria advinhar)
 
// eu faço computador tentar
$form->cartasPC = "";  // 5 cartas que eu tenho que colocar em sequencia para o computador acertar
$form->entrada = "";   // sequencia que digitei para o computador acertar
$form->quintaCartaPC = ""// carta que o computador achou
 
$parametros = filter_input_array(INPUT_POSTFILTER_SANITIZE_STRIPPED);
$criarCartas = true;
 
// tem algum variavel no POST?
if ($parametros) {
 
    // eu = clicou no botão "tentar acertar"
    if (isset($parametros["eu"])) {
        euDescubro($formtrue);
        $criarCartas = false;
    }
 
    // pc = clicou no botão "computador tenta"
    if (isset($parametros["pc"])) {
        
        if (isset($parametros["edEntrada"])) {
            $form->entrada = $parametros["edEntrada"];
        }
        
        computadorDescobre($formtrue);
        $criarCartas = false;
    }
 
    if (isset($parametros["zerar"])) {
        for ($p = 1$p < 5$p++) {
            unset($_SESSION['c_' . $p]);
        }
    }
}
 
// nao foi pressionado "Tentar" e nem "Computador tenta"
if ($criarCartas) {
    // cria nova sequencia de 4 cartas para usuario tentar adivinhar
    euDescubro($formfalse);
    
    // cria nova sequencia de 5 cartas para usuario embaralhar para pc
    computadorDescobre($formfalse);
}
 
// mostra o formulario
include __DIR__ . "/Formulario.php";
 
// busca uma carta do session (carta para usuario adivinhar)
function getCarta($p): Carta {
 
    if (isset($_SESSION['c_' . $p])) {
        return unserialize($_SESSION['c_' . $p]);
    } else {
        return null;
    }
}
 
// busca uma carta do session (carta para PC adivinhar)
function getCartaPc($p): Carta {
 
    if (isset($_SESSION['p_' . $p])) {
        return unserialize($_SESSION['p_' . $p]);
    } else {
        return null;
    }
}
 
function euDescubro($form$mostrar) {
 
    $cheney = new \Cheney();
 
    // tem na sessions as cartas?
    if (isset($_SESSION['c_1']) && $mostrar) {
        // restaura da session dentro do array $cartas
        $cartas = array();
        for ($p = 1$p < 5$p++) {
            array_push($cartasgetCarta($p));
        }
 
        // a quinta carta separa
        $form->quintaCartaEu = getCarta(5);
    } else {
        // cria uma sequencia e coloca na ordem para usuario acertar
        $cartas = $cheney->MontarParaAcertar();
 
        $p = 1;
        foreach ($cartas as $carta) {
            $_SESSION['c_' . $p] = serialize($carta);
            $p++;
        }
    }
 
    // mostra na tela
    foreach ($cartas as $carta) {
        $form->cartasEu = $form->cartasEu . $carta . "\n";
    }
}
 
function computadorDescobre($form$mostrar) {
 
    $cheney = new \Cheney();
 
    // tem na sessions as cartas?
    if (isset($_SESSION['p_1']) && $mostrar) {
 
        // cria matriz
        $cartas = array();
 
        // se do session e coloca na matriz
        for ($p = 1$p < 6$p++) {
            array_push($cartasgetCartaPc($p));
        }
    } else {
 
        // pega qualquer 5 cartas
        $cartas = $cheney->getCincoCartas();
 
        // coloca no session
        $p = 1;
        foreach ($cartas as $carta) {
            $_SESSION['p_' . $p] = serialize($carta);
            $p++;
        }
    }
 
    // coloca as cartas na tela    
    foreach ($cartas as $carta) {
        $form->cartasPC = $form->cartasPC . $carta . "\n";
    }
 
    // computador mostra, tem algo em entrada e é 5 digitos?
    if ($mostrar && isset($form->entrada) && strlen($form->entrada) == 5) {
 
        $nova = array();
 
        // separa as letras
        $letras = str_split($form->entrada);
        
        // pega conforme a posição que usuário informou
        foreach ($letras as $letra) {
            array_push($novagetCartaPc((int)$letra));
        }
        
        // pc tenta acertar
        $carta = $cheney->TenteAdivinhar($nova);
        $form->quintaCartaPC = $carta;
    }
}