Ir para conteúdo
Fórum Script Brasil
  • 0

Avermelhando uma linha ou coluna ou diagonal de uma matriz 6 x 6


Frank K Hosaka

Pergunta

index.php

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" 
    rel="stylesheet">
<?php
echo "<table class='table w-25 m-auto'>";
$escolha=mt_rand(1,14);
$linha=0;
if($escolha<=6){
    echo "<td colspan=6>Palpite para Mega-Sena: linha $escolha";}
if($escolha>=7 and $escolha<=12){
    $coluna=$escolha-6;
    echo "<td colspan=6>Palpite para Mega-Sena: coluna $coluna";}
        else {$coluna=0;}
$diagonal=0;
if($escolha>12){
    $diagonal=$escolha-12;
    echo "<td colspan=6>Palpite para Mega-Sena: diagonal $diagonal";}
$controle=5;
for($j=1;$j<=6;$j++){
    $linha++;
    for ($i = 0, $palpites = []; $i < 1500; $i++) @$palpites[mt_rand(1, 60)]++;
    arsort($palpites);
    $i=0;
    $sorteio=[];
    foreach($palpites as $key => $valor){
        $sorteio[]=$key;
        $i++;
        if($i==6){break;}}
    sort($sorteio);
    echo "<tr>";
    foreach($sorteio as $key=>$sorte){
        if($coluna!==0 and $key==($coluna-1)){
            $class="class='text-danger'";}
            else {$class="";}
        if($escolha<=6 and $escolha==$linha){
            $class="class='text-danger'";}
        if($diagonal==1 and $linha==($key+1)){
            $class="class='text-danger'";}
        if($diagonal==2 and $key==$controle){
            $class="class='text-danger'";
            $controle--;}
        echo "<td $class>$sorte";}}
echo "<tr><td colspan=6>";
echo "<input type=submit value='Novo Palpite' onclick=location.replace('index.php')>";

 

Captura de tela 2023-11-05 191204.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 1

não sei se entendi muito bem, mas entendi o objetivo. Geralmente em se tratando de matrizes (que é basicamente um array de arrays, ou um array multidimensional), nos temos duas - ou mais, mas não vem a esse caso - chaves.

Por exemplo, temos um array de numeros, que representa cada jogo. E temos um array de jogos, que representa todas as possibilidades. Assim, poderiamos chamar esse array de $array[jogos][numeros].

Dito isso, talvez para fins de clareza de codigo, seria melhor pre-popular esse array multidimensional com os numeros, e depois percorre-lo novamente fazendo a exibicao, e ai esoclhendo quando colocar as cores. Assim seria como eu faria:

        // Popula a matriz com 6 jogos de 6 numeros cada
        $array = [];
        for($i = 0; $i < 6; $i+=1) {
            $linha = [];
            do {
                do {
                    $numero = rand(1,60);
                } while(in_array($numero, $linha));
                $linha[] = $numero;
            } while(count($linha) < 6);
            sort($linha);
            $array[] = $linha;
        }


        // Exibe na tela
        // Seleciona se a sorte é horizontal (1), vertical (2) ou diagonal (3)
        $sorte = rand(1,3);

        // Seleciona a linha ou a coluna dependendo do resultado anterior
        // Se for diagonal, só tem 2 possibilidades: descendente (comeca da esquerda topo para a direita baixo) ou
        //                                            ascendente (comeca da esquerda baixo para a direita topo)
        //      Portanto, se for diagonal, verificamos se o $sorte 2 é par para descedente ou impar para ascendente
        $sorte2 = rand(1,6);
        echo '<h1>Palpite da Mega-Sena</h1>';
        echo '<h3>Escolha da sorte: ' . ($sorte == 1 ? 'linha '.$sorte2 : ( $sorte == 2 ? 'coluna '.$sorte2 : 'diagonal ' . ($sorte2 % 2 == 0 ? 'descendente' : 'ascendente') ) ) . '</h3>';
        echo '<table style="font-family: monospace">';
        foreach($array as $linha => $jogo) {
            echo '<tr>';
            foreach($jogo as $coluna => $numero) {
                $class = '';
                if(
                    ( $sorte == 1 && $linha == ($sorte2 - 1) )
                    || ( $sorte == 2 && $coluna == ($sorte2 - 1) )
                    || ( $sorte == 3 && $sorte2 % 2 == 0 && $coluna == $linha )
                    || ( $sorte == 3 && $sorte2 % 2 == 1 && ($coluna == (5 - $linha) ) )
                ) {
                    $class = 'danger';
                }
                echo '<td class="' . $class . '">';
                echo $numero;
                echo '</td>';
            }
            echo '</tr>';
        }

        echo '</table>';

image.png.fa7aa92f593b235d9c3e630c2ebe9f5c.pngimage.png.384768b8869db76729dfd00a025e0668.pngimage.png.e172ace7cda0b7f50466e35ed6e472d0.pngimage.png.57f9164f67f978689dd07e5fc8c1d4ef.png

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...