Está en la página 1de 2

pragma solidity ^0.6.1; //Compila solo para la versi�n 0.

contract Tic Tac Toe { //Definicion de la clase

address public player1; //Llave publica del primer jugador


address public player2; //Llave publica del segundo jugador

address[3][3] private gameBoard; //El tablero es un arreglo de 3x3


// variable para llevar el turno

address private turn;


address private idle;

Constructor() public{ //Constructor


player1=msg.sender; //El Jugador que invoca el contrato es el
Jugador 1
}

// Funcion publica para ingresar al juego


Function joinTheGame() public{

//El nuevo participante debe ser diferente


//a Jugador1, siempre que player 2 est� disponible
require(player2 == address(0) &&
msg.sender != player1);
player2=msg.sender;
turn = player1; //asignar turno a player1
idle = player2; //poner player2 en espera
}

// funcion para seleccionar una casilla


function setStone(uint8 row, uint8 col) public {

require(msg.sender == turn) &&


row < 3 && col < 3 && //verificar limites
//verificar que la casilla est� libre
gameBoard[x][y] == address(0));

//el jugador marca la casilla con su llave


gameBoard[x][y]=msg.sender;

//invertir la posesion del turno


turn = idle;
idle = msg.sender;
}

//funcion para visualizaci�n del tablero


function getBoardState() public view returns (address[3][3] memory){
return gameBoard;
}

//otra funcion para visualizaci�n del tablero


function getBoardStateStr() publc view returns (string memory){
string memory ret_val = "c" + "a" + "s" + "a";
return ret_val;
}
} // Fin del contrato-juego

También podría gustarte