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 violin101
      Caros amigos, saudações...
       
      Estou com uma pequena dúvida e não estou conseguindo solucionar.
       
      Tenho uma Rotina onde o Usuário escolhe o Produto para Comprar e exibo em uma Tabela usando a Função CART. <==== até aqui tudo bem.
       
      Minha dúvida:
      -> como consigo fazer uma função ou rotina, onde o sistema PEGA a maior PARCELA dos Produtos selecionados para mostrar quantas parcelas de CARTÃO de CRÉDITO, pode ser parcelado.
       
      por exemplo, Tabela:
       
      Cod_Prod............DESCRIÇÂO......................QTD...............VALOR.....PARCELAS
      10100.01............Caderno Capa Dura......... 001...............10,00....... 12
      10100.21............Caneta Esferográfica...... 001.................1,00......... 3
      10100.15............Caixa Lápis de Cor.......... 001.................5,00......... 6
      Total Geral..........................................................................16,00........ ========
       
      Como consigo pegar a Maior parcela e passar para uma variável, para calcular o Total Geral no Máximo de Parcelamento.
       
      Grato,
       
      Cesar
    • By EvertonFD
      Olá alguém pode me ajudar?
      estou tentando pegar valores do check box selecionado e por no banco de dados a questão é que:
      Quando eu faço uma seleção vai de boa quando seleciono mais de uma fica tudo em branco.
      estou usando esse codigo:
      <?php if(isset($_POST['submit'])){ if(!empty($_POST['checkArr'])){ foreach($_POST['checkArr'] as $checked){ echo $checked . '<br>'; } } else { echo '<div class="error">Checkbox is not selected!</div>'; } } ?> <div class=" form-row"> <div class="col-md-4 text-left"> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Iluminação Publica"> <label class="form-check-label" for="gridCheck"> Iluminação Publica </label> </div> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Saneamento Basíco"> <label class="form-check-label" for="gridCheck"> Saneamento Basíco </label> </div> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Alamentos"> <label class="form-check-label" for="gridCheck"> Alagamentos </label> </div> //que vai para o insert: <?php session_start(); include_once("../conexao.php"); $nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $tel = filter_input(INPUT_POST, 'telefone', FILTER_SANITIZE_STRING); $bairro = filter_input(INPUT_POST, 'bairro', FILTER_SANITIZE_STRING); $end = filter_input(INPUT_POST, 'end', FILTER_SANITIZE_STRING); //--------------------------------- $problema = filter_input(INPUT_POST, 'checkArr[]', FILTER_SANITIZE_STRING); $observacao = filter_input(INPUT_POST, 'observacao', FILTER_SANITIZE_STRING); //--------------------------------- //$resposta = filter_input(INPUT_POST, 'resposta', FILTER_SANITIZE_STRING); $result_usuario = "INSERT INTO itaim ( nome, email, telefone, bairro, rua_cep, problemas, detalhes, created) VALUES ('$nome', '$email' , '$tel' , '$bairro' , '$end' , '$problema' , '$observacao' , NOW())"; $resultado_usuario = mysqli_query($conn, $result_usuario); if(mysqli_insert_id($conn)){ $_SESSION['msg'] = "<p style='color:green;'>Menssagem envida</p>"; header("Location: ../index.php"); }else{ header("Location: ../index.php"); //$_SESSION['msg'] = "<p style='color:red;'>Houve um errono envio favor informar.</p>"; } Quem puder me ajudar agradeço muito
       
    • By juliosertori
      Amigos, estou utilizando um sistema de FormValidation, e vem pronta algumas coisas, mas estou com dúvida:
       
      Como pego os dados desse POST no PHP?
       
      FormValidation.utils.fetch(formSubmitUrl, { method: 'POST', dataType: 'json', params: { name: form.querySelector('[name="username"]').value, email: form.querySelector('[name="password"]').value, }, }) Obrigado!
    • By msergioaguiar
      boa noite a todos

      hoje um cliente me procurou querendo um sistema.
      ele Trabalha com aposta esportiva ele quer um sistema q quando ele fazer a aposta na conta dele esta aposta seja feita em varios outros usuarios q esta logados em pcs na intarnet.

      Gostaria de uma ajuda como vou fazer isso mais gostei muito do projeto

      desde ja fico muito grato a todos pela ajuda
    • By Usleydocarmo
      Estou com o seguinte erro:
      Ao acessar o meu site na pagina principal tudo ok. Porém quando acesso em um menu que vai carregar um arquivo que está em uma pasta e não na pasta raiz, ai o arquivo css não é carregado.
       
      <a href="usuarios"> home</a> chamo o arquivo funcionarios na mesma pasta onde está o arquivo index.php -funciona
      <a href="usuarios/usuarios"> home</a>  Pasta 'usuarios' e dentro dela chamo o arquivo 'usuarios' - ai não funciona
       
      Descobri que quando entro na pasta usuários fica assim, com a basta no diretório do arquivo. Como corrigir?
      <link rel="stylesheet" href="http://localhost/keiri/admin/usuarios/plugins/fontawesome-free/css/all.min.css&nbsp;">
       
      Meu htaccess
      RewriteRule ^([a-z]+)\/?$ dashboard.php?arquivo=$1 [NC,L]
      RewriteRule ^([a-z]+)\/([a-z]+)$ dashboard.php?pasta=$1&arquivo=$2 [NC,L]
      RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)$ dashboard.php?pasta=$1&arquivo=$2&item=$3 [NC,L]
×

Important Information

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