Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!!

Compartilhar este post


Link para o post
Compartilhar em outros 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"

Compartilhar este post


Link para o post
Compartilhar em outros 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];

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.