Mega Sena Fake - PHP-GTK
Publicado por Perfil removido (última atualização em 01/11/2016)
[ Hits: 5.180 ]
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.
/* 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: rodrigo.zimmermann23@gmail.com
* 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();
?>
Converte uma string binaria em seu respectivo codigo ascii
Separa endereços sem formatação
Fast Template CVS Revision 1.2.2
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









