Mega Sena Fake - PHP-GTK

Publicado por Perfil removido (última atualização em 01/11/2016)

[ Hits: 3.359 ]

Download codigos.php




Um pequeno aplicativo escrito em PHP-GTK (necessário tê-lo instalado em seu computador) que permite ao usuário selecionar seis números, realiza um sorteio de seis números e analisa se o usuário ganhou ou perdeu.

Aviso: as chances de ganhar são uma em cinquenta milhões!

O código possui uma análise posterior do que o usuário digita, verificando se o usuário digitou um número entre 1 e 60, se o usuário não digitou um número inválido ou outro caractere no código.

Há um bug na função valida(), a qual verifica a entrada fornecida pelo usuário. Provavelmente vou reescrever o código da função e torná-la mais simples, porém eliminando o bug.

  



Esconder código-fonte

/* MEGA SENA FAKE Versão 0.10 - Data 23.09.2016 Hora 00:49:34
 * Um inutilitário realmente inútil
 * Criado por Rodrigo Zimmermann (2016)
 * e-mail: [email protected]
 * Este programa é distribuído sem garantias
 * Você pode usar o programa, copiá-lo ou modificá-lo
 * desde que mantenha os créditos.
 * Este programa foi criado como um exercício de programação com PHP-GTK
 * Portanto, pode não ser útil para você.
 */


// dl ('php_gtk.' . PHP_SHLIB_SUFIX);

//função para encerrar o aplicativo

function shutdown(){
   
   gtk::main_quit();
}

//função que exibe mensagem de erro caso o usuário forneça dados inválidos
//vide bug conhecido nos comentários da função valida()
function mensagem(){
   
   global $texto;
   
   $msgbox = new GtkWindow();
      $container = new GtkVBox();
      $msgbox -> add($container);
      $msgbox -> set_border_width(10);
      $btmsgbox = new GtkButton("Tentar novamente");
      $btmsgbox -> connect_simple('clicked',array($msgbox,'hide'));
      $mensagem = new GtkLabel("$texto");
      
      $container -> pack_start ($mensagem);
      $container -> pack_start (new GtkHSeparator);
      $container -> pack_start($btmsgbox);
      
      $msgbox -> show_all();
   }
   

//verifica se os dados fornecidos pelo usuário são válidos
//bug conhecido: digitar números negativos ou outros caracteres irá
//mostrar mais de uma mensagem, visto que não consegui escrever um código
//que valide corretamente o tipo de dado digitado.
function valida (){
   global $dezena01;
   global $dezena02;
   global $dezena03;
   global $dezena04;
   global $dezena05;
   global $dezena06;
   global $texto;
   global $aposta;
   
   
   if ($dezena01->get_text()==NULL or $dezena02->get_text()==NULL or $dezena03->get_text()==NULL
      or $dezena04->get_text()==NULL or $dezena05->get_text()==NULL or $dezena06->get_text()==NULL){
      $texto = "Não deixe nenhum campo em branco,\nfaça o seu jogo!";
      mensagem();
      }
      
   if ($dezena01->get_text() == $dezena02->get_text() or $dezena01->get_text()==$dezena03->get_text or $dezena01->get_text()==$dezena04->get_text() or
         $dezena01->get_text()==$dezena05->get_text() or $dezena01->get_text()==$dezena06->get_text() or $dezena02->get_text()==$dezena03->get_text() or
         $dezena02->get_text()==$dezena04->get_text() or $dezena02->get_text()==$dezena05->get_text() or $dezena02->get_text()==$dezena06->get_text() or
         $dezena03->get_text()==$dezena04->get_text() or $dezena03->get_text()==$dezena05->get_text() or $dezena03->get_text()==$dezena06->get_text() or
         $dezena04->get_text()==$dezena05->get_text() or $dezena04->get_text()==$dezena06->get_text() or $dezena05->get_text()==$dezena06->get_text()){
            $texto = "Um número só pode ser escolhido uma única vez!";
            mensagem();
            
         }
   if ($dezena01->get_text() > 60 or $dezena01->get_text() > 60 or $dezena01->get_text() > 60 or
         $dezena01->get_text()>60 or $dezena01->get_text()>60 or $dezena02->get_text()>60 or
         $dezena02->get_text()>60 or $dezena02->get_text()>60 or $dezena02->get_text()>60 or
         $dezena03->get_text()>60 or $dezena03->get_text()>60 or $dezena03->get_text()>60 or
         $dezena04->get_text()>60 or $dezena04->get_text()>60 or $dezena05->get_text()>60){
            $texto = "Você deve escolher números entre 1 e 60!\nValores maiores não são permitidos.";
            mensagem();
            
         }   
   if ($dezena01->get_text() <=0 or $dezena01->get_text() <=0 or $dezena01->get_text() <=0 or
         $dezena01->get_text()<=0 or $dezena01->get_text()<=0 or $dezena02->get_text()<=0 or
         $dezena02->get_text()<=0 or $dezena02->get_text()<=0 or $dezena02->get_text()<=0 or
         $dezena03->get_text()<=0 or $dezena03->get_text()<=0 or $dezena03->get_text()<=0 or
         $dezena04->get_text()<=0 or $dezena04->get_text()<=0 or $dezena05->get_text()<=0){
            $texto = "Você deve escolher números entre 1 e 60!\nZero e valores negativo não são permitidos.\nTambém não podem ser usados outros caracteres.";
            mensagem();
         }
         

   else {
      
      
      //organizando os números fornecidos pelo usuário em ordem crescente
         $aposta = array($dezena01->get_text(),
            $dezena02->get_text(),
            $dezena03->get_text(),
            $dezena04->get_text(),
            $dezena05->get_text(),
            $dezena06->get_text());
            
   sort($aposta);
   
   jogar();
   mostrar();
   }
}


//avalia se o usuário acertou os números sorteados
function isWinOrNot (){
   
   global $resultado;
   global $aposta;
   
   if ($aposta[0]==$resultado[0] and $aposta[1]==$resultado[1] and $aposta[2]==$resultado[2] and
      $aposta[3]==$resultado[3] and $aposta[4]==$resultado[4] and $aposta[5]==$resultado[5]){
         return "Parabéns! Você ganhou!";
      }
      else {return "Que azar";}
   
}


//esta função é responsável por exibir os números sorteados, a aposta e
//mensagem de avaliação do resultado
function mostrar(){
   
   global $resultado;
   global $aposta;
   
   $wExibir = new GtkWindow();
   $wExibir -> set_border_width(10);
   $wExibir -> set_title("Resultado");
   $wExibirMSg = new GtkLabel ("Confira os números sorteados:\n $resultado[0] - $resultado[1] - $resultado[2] - $resultado[3] - $resultado[4] - $resultado[5]");
   $wExibirMSg2 = new GtkLabel ("Esta foi a sua aposta:\n$aposta[0] - $aposta[1] - $aposta[2] - $aposta[3] - $aposta[4] - $aposta[5]");
   $wExibirMSg3 = new GtkLabel (isWinOrNot());
   $wExibirBtOk = new GtkButton("Ok");
   $wExibirBtOk -> connect_simple('clicked',array($wExibir,"hide"));
   
   //Inicia um container e agrega os elementos a ele
   $box = new GtkVBox();
   $box -> pack_start ($wExibirMSg);
   $box -> pack_start ($wExibirMSg2);
   $box -> pack_start ($wExibirMSg3);
   $box -> pack_start (new GtkHSeparator);
   $box -> pack_start ($wExibirBtOk);
   
   $wExibir -> add ($box);
   
   //Exibe a janela e todos os elementos contidos nela
   $wExibir->show_all();
   
}


//Esta função chama a função sortear(), avalia o resultado e ordena
function jogar(){
   sortear();
   global $sorteada01;
   global $sorteada02;
   global $sorteada03;
   global $sorteada04;
   global $sorteada05;
   global $sorteada06;
   global $resultado;
   
   //Realiza novo sorteio caso algum dos números sorteados seja idêntico a outro também sorteado
   while ($sorteada01 == $sorteada02 or $sorteada01 == $sorteada03 or $sorteada01 == $sorteada04 or
         $sorteada01 == $sorteada05 or $sorteada01 == $sorteada06 or $sorteada02 == $sorteada03 or
         $sorteada02 == $sorteada04 or $sorteada02 == $sorteada05 or $sorteada02 == $sorteada06 or
         $sorteada03 == $sorteada04 or $sorteada03 == $sorteada05 or $sorteada03 == $sorteada06 or
         $sorteada04 == $sorteada05 or $sorteada04 == $sorteada06 or $sorteada05 == $sorteada06){
            sortear();
         }
   
   //Ordena os números sorteados em ordem crescente
   $resultado = array($sorteada01, $sorteada02, $sorteada03, $sorteada04, $sorteada05, $sorteada06);
   sort ($resultado);
   
   
}


//A função que faz o sorteio
function sortear (){
   global $sorteada01;
   global $sorteada02;
   global $sorteada03;
   global $sorteada04;
   global $sorteada05;
   global $sorteada06;
   
   $sorteada01 = rand(1,60);
   $sorteada02 = rand(1,60);
   $sorteada03 = rand(1,60);
   $sorteada04 = rand(1,60);
   $sorteada05 = rand(1,60);
   $sorteada06 = rand(1,60);

}

/*
 * SEÇÃO DA JANELA PRINCIPAL
 * Cria a janela e seus elementos
 * Define as ações a serem realizadas
 * Faz a coordenação do programa
 * 
*/


//Definição da janela
$window = new GtkWindow(); //cria a janela principal
$window->connect('destroy',"shutdown"); //ao fechar a janela, executar função shutdown()
$window->set_border_width(10);
$window->set_position('GTK_WIN_POS_CENTER'); //centraliza a janela
$window->set_title("Mega Sena");


//Definição dos elementos
$vbox = new GtkVBox(); //cria o container
$window -> add ($vbox); //adiciona o container à janela principal
$rotulo = new GtkLabel("Bem Vindo a Mega Sena!");
$botaoFechar = new GtkButton('Fechar');
$botaoFechar -> connect_simple('clicked',"shutdown"); 
$rdezena01 = new GtkLabel("Escolha a primeira dezena");
$dezena01 = new GtkEntry();
$rdezena02 = new GtkLabel("Escolha a segunda dezena");
$dezena02 = new GtkEntry();
$rdezena03 = new GtkLabel("Escolha a terceira dezena");
$dezena03 = new GtkEntry();
$rdezena04 = new GtkLabel("Escolha a quarta dezena");
$dezena04 = new GtkEntry();
$rdezena05 = new GtkLabel("Escolha a quinta dezena");
$dezena05 = new GtkEntry();
$rdezena06 = new GtkLabel("Escolha a sexta dezena");
$dezena06 = new GtkEntry();
$btJogar = new GtkButton("Jogar");

//As ações do botão $btJogar serão executadas na ordem invocadas
$btJogar -> connect("clicked","valida");


//Encapsula os elementos dentro do container
$vbox -> pack_start($rotulo);
$vbox -> pack_start(new GtkHSeparator);
$vbox -> pack_start($rdezena01);
$vbox -> pack_start($dezena01);
$vbox -> pack_start($rdezena02);
$vbox -> pack_start($dezena02);
$vbox -> pack_start($rdezena03);
$vbox -> pack_start($dezena03);
$vbox -> pack_start($rdezena04);
$vbox -> pack_start($dezena04);
$vbox -> pack_start($rdezena05);
$vbox -> pack_start($dezena05);
$vbox -> pack_start($rdezena06);
$vbox -> pack_start($dezena06);
$vbox -> pack_start(new GtkHSeparator);
$vbox -> pack_start(new GtkLabel("Quanto estiver pronto:"));
$vbox -> pack_start($btJogar);
$vbox -> pack_start($botaoFechar);

//Exibe a janela principal e todos os elementos contidos nela
$window->show_all();

//Entra no loop principal do PHP-GTK
Gtk::Main();

?>

Scripts recomendados

Calendário

Hosting Control

mascaras PHP/JavaScript

Hora no formato Internet Beat

Gráfico de Pizza em PHP


  

Comentários
[1] Comentário enviado por removido em 13/10/2016 - 09:49h

Uma dúvida: tem alguma distro com PHP-GTK+ empacotado, sem ser linha Ubuntu?

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden

[2] Comentário enviado por removido em 01/11/2016 - 08:15h

O PHP-GTK está empacotado de forma genérica, não há pacotes exclusivos para o Ubuntu. No entanto, só testei no Ubuntu 16.04 LTS e no Windows 7, tendo algumas diferenças entre a versão para Linux e a versão para Windows.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts