Jump to content
juniorquadros

Jogo da Velha em PHP

Recommended Posts

Bom dia pessoal, tô tentando fazer a validação das possibilidades de combinações de um jogo da velha. Horizontais, verticais e diagonais.

Matriz 3x3

00 - 01 - 02

10 - 11 - 12

20 - 21 - 22

Se o preenchimento for por Exemplo: Jogador 1, joga na (02), jogador 2 (11), jogador 1 (12), jogador 2(21), jogador 1(22). No caso jogador 1 ganharia, a validação ocorre de forma correta, porém se esse jogador tivesse preenchido outro campo, quebrando essa sequência, a validação não ocorre. Lógica que usei para validar, vejo se os 3 campos possuem conteúdo e dps comparo o conteúdo de todos, porém estou com esse problema. Obrigado!!

Share this post


Link to post
Share on other sites
16 minutos atrás, ygor.anjos disse:

como assim preenchido outro campo?

Por exemplo, se o jogador tivesse jogado

                 x

----|--------|-----

 O     O       x
----|--------|-----

 x     O       x

 

Apenas um exemplo da anomalia. Jogador 1, jogou primeira vez X na 02, depois jogador 2 O na 11, jogador 1 jogou X na 12, jogador 2 jogou O na 21, pela lógica JOGADOR 1 JOGARIA X NA 22 E GANHARIA O JOGO, mas digamos que ele jogou X na 21, e depois o jogador 2 jogou O na 10, e por ultimo ai sim agora o jogador 1 jogou X na 22 e completou a sequencia de 3 X. O correto era aparecer ganhador, pois nao aparece, caso eu tivesse feito a inserção na ordem lógica de um jogador, ele ganharia, porém fui testar sla, e não da, caso fuja de uma ''ordem de jogadas lógicas"

Share this post


Link to post
Share on other sites

entendi, você não pode usar uma sequencia lógica nesse caso, pois nem sempre o jogador vai colocar na ordem que você deseja, você precisa recuperar quais campos o jogador 1 colocou X e quais campos o jogador 2 colocou O, coloca eles em um array exemplo: $jogador1= [02,12,20,22]

 

e então você compara esse array com as combinações possíveis:

$combinacao1 = [02,20,22];

 

 

Share this post


Link to post
Share on other sites
55 minutos atrás, ygor.anjos disse:

entendi, você não pode usar uma sequencia lógica nesse caso, pois nem sempre o jogador vai colocar na ordem que você deseja, você precisa recuperar quais campos o jogador 1 colocou X e quais campos o jogador 2 colocou O, coloca eles em um array exemplo: $jogador1= [02,12,20,22]

 

e então você compara esse array com as combinações possíveis:

$combinacao1 = [02,20,22];

 

 

Tipo, eu uso isset nos campos que formariam uma combinação, para ver se tem conteudo, e depois realizava o teste para verificar se todos são iguais, não era pra funcionar mesmo não sendo na ordem, por que o resultado dos issets seriam verdadeiros, mesmo não sendo na mesma ordem?

Share this post


Link to post
Share on other sites
19 minutos atrás, ygor.anjos disse:

posta o código, fica mais facil

<?php
session_start();

error_reporting(E_ERROR | E_WARNING | E_PARSE);

function ganhador(){
	if(isset($_SESSION['game'][0][0]) && isset($_SESSION['game'][0][1]) && isset($_SESSION['game'][0][2])){
		if(($_SESSION['game'][0][0]==$_SESSION['game'][0][1]) && ($_SESSION['game'][0][1]==$_SESSION['game'][0][2])){
			echo "ganhador"; //linha 1 --->
		}
	}else if(isset($_SESSION['game'][1][0]) && isset($_SESSION['game'][1][1]) && isset($_SESSION['game'][1][2])){
		if(($_SESSION['game'][1][0]==$_SESSION['game'][1][1]) && ($_SESSION['game'][1][1]==$_SESSION['game'][1][2])){
			echo "ganhador"; //linha 2 --->
		}
	}else if(isset($_SESSION['game'][2][0]) && isset($_SESSION['game'][2][1]) && isset($_SESSION['game'][2][2])){
		if(($_SESSION['game'][2][0]==$_SESSION['game'][2][1]) && ($_SESSION['game'][2][1]==$_SESSION['game'][2][2])){
			echo "ganhador"; //linha 3 --->
		}
	}else if(isset($_SESSION['game'][0][0]) && isset($_SESSION['game'][1][0]) && isset($_SESSION['game'][2][0])){
		if(($_SESSION['game'][0][0]==$_SESSION['game'][1][0]) && ($_SESSION['game'][1][0]==$_SESSION['game'][2][0])){
			echo "ganhador"; //linha 4 | esquerda
		}
	}else if(isset($_SESSION['game'][0][1]) && isset($_SESSION['game'][1][1]) && isset($_SESSION['game'][2][1])){
		if(($_SESSION['game'][0][1]==$_SESSION['game'][1][1]) && ($_SESSION['game'][1][1]==$_SESSION['game'][2][1])){
			echo "ganhador"; //linha 5 | meio
		}
	}else if(isset($_SESSION['game'][0][2]) && isset($_SESSION['game'][1][2]) && isset($_SESSION['game'][2][2])){
		if(($_SESSION['game'][0][2]==$_SESSION['game'][1][2]) && ($_SESSION['game'][1][2]==$_SESSION['game'][2][2] && ($_SESSION['game'][2][2]==$_SESSION['game'][0][2]))){
			echo "ganhador"; //linha 6 | direita
		}
	}else if(isset($_SESSION['game'][0][0]) && isset($_SESSION['game'][1][1]) && isset($_SESSION['game'][2][2])){
		if(($_SESSION['game'][0][0]==$_SESSION['game'][1][1]) && ($_SESSION['game'][1][1]==$_SESSION['game'][2][2])){
			echo "ganhador"; //diagonal esq-dir
		}
	}
}

if(isset($_SESSION['jogada'])==0){
	$_SESSION['jogada']=0;
	if(isset($_SESSION['jogada'])){
		if($_SESSION['jogada']%2==0){
			$valor='x';
		}else{
			$valor='y';
		}
	}
}else{
	$_SESSION['jogada']++;
		if(isset($_SESSION['jogada'])){
			if($_SESSION['jogada']%2==0){
				$valor='x';
			}else{
				$valor='y';
		}
	}
}

if(isset($_SESSION['game'])==0){
	$_SESSION['game']=array(
						array($_POST['botao0'],$_POST['botao1'],$_POST['botao2']),
						array($_POST['botao3'],$_POST['botao4'],$_POST['botao5']),
						array($_POST['botao6'],$_POST['botao7'],$_POST['botao8']));
}

if(isset($_SESSION['game'])){
	if(isset($_POST['botao0'])){
		$_SESSION['game'][0][0]=$valor;
		ganhador();
	}
	if(isset($_POST['botao1'])){
		$_SESSION['game'][0][1]=$valor;
		ganhador();
	}
	if(isset($_POST['botao2'])){
		$_SESSION['game'][0][2]=$valor;
		ganhador();
	}
	if(isset($_POST['botao3'])){
		$_SESSION['game'][1][0]=$valor;
		ganhador();
	}
	if(isset($_POST['botao4'])){
		$_SESSION['game'][1][1]=$valor;
		ganhador();
	}
	if(isset($_POST['botao5'])){
		$_SESSION['game'][1][2]=$valor;
		ganhador();
	}
	if(isset($_POST['botao6'])){
		$_SESSION['game'][2][0]=$valor;
		ganhador();
	}
	if(isset($_POST['botao7'])){
		$_SESSION['game'][2][1]=$valor;
		ganhador();
	}
	if(isset($_POST['botao8'])){
		$_SESSION['game'][2][2]=$valor;
		ganhador();
	}
}

if(isset($_SESSION['game'])){
	print_r($_SESSION['game']);
}


if(isset($_POST['destruir'])){
	session_destroy();
}
	
?>
<!DOCTYPE html>
<html>
<head>
	<title>Jogo da Velha</title>
</head>
<body>
<form action="" name="form" method="POST">
 	<input type="submit" name="botao0" value="<?php 
 		if(isset($_SESSION['game'][0][0])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][0][0];
 		}?>">	
	<input type="submit" name="botao1" value="<?php 
 		if(isset($_SESSION['game'][0][1])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][0][1];
 		}?>">
	<input type="submit" name="botao2" value="<?php 
 		if(isset($_SESSION['game'][0][2])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][0][2];
 		}?>">
	<br>
	<input type="submit" name="botao3" value="<?php 
 		if(isset($_SESSION['game'][1][0])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][1][0];
 		}?>">	
	<input type="submit" name="botao4" value="<?php 
 		if(isset($_SESSION['game'][1][1])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][1][1];
 		}?>">
	<input type="submit" name="botao5" value="<?php 
 		if(isset($_SESSION['game'][1][2])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][1][2];
 		}?>">
	<br>
	<input type="submit" name="botao6" value="<?php 
 		if(isset($_SESSION['game'][2][0])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][2][0];
 		}?>">	
	<input type="submit" name="botao7" value="<?php 
 		if(isset($_SESSION['game'][2][1])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][2][1];
 		}?>">
	<input type="submit" name="botao8" value="<?php 
 		if(isset($_SESSION['game'][2][2])==0){
 			echo " "; 
 		}else{ 
 			echo $_SESSION['game'][2][2];
 		}?>">
	<br>
	<br>
	<input type="submit" name="mostrar" value="mostrar">
	<input type="submit" name="destruir" value="destruir">
</form>
</body>
</html>

 

20 minutos atrás, ygor.anjos disse:

posta o código, fica mais facil

Postei ele, talvez tenha maneira melhor, porém só pensei essa forma de fazer e estava convicto que funcionaria, mas de última notei a anomalia que citei.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

    • By luialcantara
      Olá, a empresa onde trabalho tem uma página de login para área restrita que está com problema na função de cadastro. O formulário está enviando os dados para o banco de dados e o usuário se torna ativo para acesso normalmente. O problema é que a mesma função que salva os dados deveria redirecionar o cliente para a área restrita ou então para a página inicial para que ele digite usuário e senha e consiga acessar a página. 
       
      A página já estava pronta quando comecei aqui e eu não tenho domínio sobre php, mas já corrigi alguns erros que estavam impedindo o cadastro. Porém os clientes reclamam pois após concluir o cadastro a imagem de carregamento não desaparece, então apenas coloquei um delay para evitar os questionamentos, pois o usuário fica ativo, então é só voltar para o login que eles conseguem usar nosso site.
       
      A página está dividida entre uma de login (php), uma para cadastro (php) e a principal, que está no wordpress. 
       
      Função do formulário de cadastro:
                  submitHandler: function(form) {                 $(".botoesactions").hide();                 $(".ajaxloader").show();                 var dados = jQuery( form ).serialize();                  $(".ajaxloader").fadeOut(1500);                 $.ajax({type: "POST", data: dados, url:"<?php echo get_site_url(); ?>/atendimento/cadastrar",success: function(data){                     console.log(data);                     try {             var ret = JSON.parse(data);                     } catch (e) {          var ret = false;                    }                     $(".ajaxloader").hide();                     if(ret !== false && ret.retorno === "ok"){                         console.log(ret);                         alert("Cadastrado realizado com sucesso!");                         window.location.href = "<--!?php echo get_site_url(); ?-->/atendimento/";                     }else if(ret !== false && ret.retorno === "fail"){                         alert(ret.mensagem);                         $(".botoesactions").show();                     }else{                         $(".botoesactions").show();                     }                 }});             }  
       
      Função de inserção de informações no banco de dados:
      elseif('cadastrar' == $syjusaten){                         if(!isset($_SESSION) || !isset($_SESSION['jusate_session']['answeris']) || $_SESSION['jusate_session']['answeris'] != 42 ){                 if($_POST && $_POST['typos'] == "iscadastro"){                     $url= $urlServer.'/Cliente/ClienteSite/cadastraclientesite';                     $parms = array(                         "usuario" => $_POST['user'],                         "Senha" => $_POST['pass'],                         "Cliente.ClienteId" => $_POST['clienteId'],                         "Cliente.Nome" => $_POST['nome'] /*Existem outros dados, mas acho que ficaria muito codigo e não contribuem para erro*/                     );                     $respServer = syJuCurl($url, $parms);                     if($respServer == ""){                         echo json_encode( array(                             "retorno" => "fail",                             "mensagem" => "Não foi possivel realizar o cadastro. Tente novamente mais tarde"                         ));                     }else{     echo $respServer;                         }                 }else{                     echo "ELSEE";                     header("Location: ".get_site_url()."/atendimento");                 }                         exit;             }else{                 header("Location: ".get_site_url()."/atendimento/");             }         }  
      Agradeço pela atenção ;)
       
    • By TheRonaldoStar
      Olá, Venho aqui de novo para tirar uma dúvida que creio eu ser muito simples porem não sei como aplicar!;
      Como diz no título do post eu gostaria de fazer um select de cadastros cujo o id do usuário online está nesta coluna,
      Porem neste campo contem 2 id separados por uma ' , '. Sendo assim não dar para mim fazer uma pesquisa com com a tag WHERE id ='Valor'
      Em fim eu quero ajuda para selecionar todos os cadastro cujo o id do usuário online está por EX: Sou o usuário 1 existe dois cadastros que tem meu id: [1, 2] e [2, 1];
      Alem de pesquisar todos os cadastros que tenha meu id nesta coluna eu quero que não tenha interferência ou listar cadastro do usuário 1 se eu for o usuário 21 por ex.
       
      Qual quer ajuda é bem vinda!
      Atenciosamente,
      ~Ronaldo
    • By Agnosticado
      Olá senhores, estou intrigado com uma coisa: tenho o seguinte código:
      $id_exame = "50296"; $pesquisa = "SELECT motivo, CASE WHEN motivo = 'Intensa superposição celular em mais de 75% de esfregaço' THEN 'A' WHEN motivo = 'Sangue em mais de 75% de esfregaço' THEN 'B' WHEN motivo = 'Artefatos de dessecamento mais de 75% de esfregaço' THEN 'C' ELSE 'TESTE' END AS opcao FROM insatisfatorio WHERE exame_id = '$id_exame' ORDER BY opcao ASC"; $linha = mysql_query($pesquisa); while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){ echo $pesquisa["opcao"]; } Quando executo usando
       
      $linha = mysql_query($pesquisa);
                 while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){
              echo $pesquisa["opcao"];
              echo "<br>";
       
       
      a saída é palavra "TESTE" que o default e não o texto "B" que corresponde a string da chamada do $id_exame = 50296.
       
      O ESQUISITO é que quando executo todo select que está na variável $pesquisa direto no SGBD dá certo e o texto "B" aparece normalmente.
      PQ DIABOS ISSO ACONTECE???
    • By Alandeoli
      Boa noite Pessoal!
       
       
      Estou criando uma tela de login, e passando os dados para uma pagina que vai se conectar ao AD, mas mesmo eu colocando os campos em branco a conexão esta passando como ok, segue os códigos se puderem me ajudar agradeço muito!
       
      Tela conexao:
       
      <?php   $adServer = "ldap://xxx.xxxx.xx.xx";   $ldap = ldap_connect($adServer); $username = $_POST['user']; $password = $_POST['pass'];   $ldaprdn = 'XXX' . "\\" . $username;   ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);   $bind = @ldap_bind($ldap, $ldaprdn, $password);   if($bind=true)   {   echo "conexão ok";     } else   {   echo "erro";     }   Tela Login:   <!DOCTYPE html> <html lang="pt-br"> <link href='css/login.css' rel='stylesheet' />


        <head> <meta charset="UTF-8"> <title>Tela de Login e Senha</title> </head>   <body> <div name="login" id="login"> <div name="box" id="box"> <form method="POST" action="ad.php" name="form"> Login : <input type="text" name="user" id="user"><br><br> Senha : <input type="password" name="pass" id="pass"><br><br> <input type="submit" value="Login" id="button"> </form> </div> </div>   </body>   </html>                                
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.