> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.ketzNxRvxrD/rev.6709
 * 
 * authors: 
 *   Meernat

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



// This is a multiplayer Tic Tac Toe game

var winner = false;
var currentTurn = "X";
var gameOver = false;
var row1Array = ["N","N","N"];
var row2Array = ["N","N","N"];
var row3Array = ["N","N","N"];
var numOfTurns = 0;

// These variables set the x and y values of my circle and my X when //called

// Sets the size of the screen
size(400,450);

// This function when called puts a circle where its told
function drawCirc(xPos,yPos){
    var redC = random(1,255);
    var greenC = random(1,255);
    var blueC = random(1,255);
    random();
    fill(redC,greenC,blueC);
    ellipse(xPos,yPos,100,100);
}

function resetGame(){
    size(400,450);
    drawBoard();
    winner = false;
    currentTurn = "X";
    gameOver = false;
    row1Array = ["N","N","N"];
    row2Array = ["N","N","N"];
    row3Array = ["N","N","N"];
    numOfTurns = 0;
}

var A1xX = 15;
var A1yX = 15;
var A2xX = 155;
var A2yX = 15;
var A3xX = 290;
var A3yX = 15;
var B1xX = 15;
var B1yX = 155;
var B2xX = 155;
var B2yX = 155;
var B3xX = 290;
var B3yX = 155;
var C1xX = 15;
var C1yX = 290;
var C2xX = 155;
var C2yX = 290;
var C3xX = 290;
var C3yX = 290;

var A1xC = 60;
var A1yC = 60;
var A2xC = 200;
var A2yC = 60;
var A3xC = 340;
var A3yC = 60;
var B1xC = 60;
var B1yC = 200;
var B2xC = 200;
var B2yC = 200;
var B3xC = 340;
var B3yC = 200;
var C1xC = 60;
var C1yC = 340;
var C2xC = 200;
var C2yC = 340;
var C3xC = 340;
var C3yC = 340;

// Makes the color of the backround change everytime you play
var red = random(1,255);
var green = random(1,255);
var blue = random(1,255);

// Sets the backround color with the randomized variables
background(red, green, blue);

// Creates the board for the game
function drawBoard(){
    line(125,0,125,400);
    line(275,0,275,400);
    line(0,125,400,125);
    line(0,275,400,275);
// Writes my name at the bottom of the screen
var redT = random(255);
var greenT = random(255);
var blueT = random(255);
fill(redT,greenT,blueT)
textSize(32);
text("Game by Natalie R. 11 years old", 60, 410, 300, 50);    
}

// Draws the board
drawBoard();

// This function draws and X where its told
function drawEx(startXPos,startYPos){
    var endXPos = startXPos + 90
    var endYPos = startYPos + 90
    line(startXPos,startYPos,endXPos,endYPos);
    startXPos = startXPos + 90;
    endXPos = endXPos - 90;
    line(startXPos,startYPos,endXPos,endYPos);
}

//Checks if a player has won
function checkGameOver(){
    if (row1Array[0] == row1Array[1] && row1Array[1] == row1Array[2] 
        && row1Array[0] != "N" ){
        alert("Game Over. " + row1Array[0] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row2Array[0] == row2Array[1] && row2Array[1] == row2Array[2] 
        && row2Array[0] != "N" ){
        alert("Game Over. " + row2Array[0] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row3Array[0] == row3Array[1] && row3Array[1] == row3Array[2] 
        && row3Array[0] != "N" ){
        alert("Game Over. " + row3Array[0] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row1Array[0] == row2Array[0] && row2Array[0] == row3Array[0] 
        && row1Array[0] != "N" ){
        alert("Game Over. " + row1Array[0] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row1Array[1] == row2Array[1] && row2Array[1] == row3Array[1] 
        && row1Array[1] != "N" ){
        alert("Game Over. " + row1Array[1] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row1Array[2] == row2Array[2] && row2Array[2] == row3Array[2] 
        && row1Array[2] != "N" ){
        alert("Game Over. " + row1Array[2] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row1Array[2] == row2Array[1] && row2Array[1] == row3Array[0] 
        && row1Array[2] != "N" ){
        alert("Game Over. " + row1Array[2] + " has won!");
        gameOver = true;
        winner = true;
    }
    if (row1Array[0] == row2Array[1] && row2Array[1] == row3Array[2] 
        && row1Array[0] != "N" ){
        alert("Game Over. " + row1Array[0] + " has won!");
        gameOver = true;
        winner = true;
    }
    // Checks for a tie
    if (numOfTurns == 9 && winner == false){
        gameOver = true;
        alert("Your Game Is Over. You Tied");
    }
    if(gameOver == true){
        var response = confirm("Do you want to play again ?");
        println(response);
        if (response == true){
            resetGame();
        }
    }
}

// This determins where to put something and what it should put depending // on whose turn it is
 void mouseClicked(){
     if (gameOver == true){
         alert("Sorry your game is over. Restart the game to play again");
         return;
         }
    if (currentTurn == "X"){
    
    if(mouseX <= 125 && mouseX >= 0 && mouseY <= 125 && mouseY >= 0 && row1Array[0] == "N"){
        drawEx(A1xX,A1yX);
        row1Array[0] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 125 && mouseX <= 275 && mouseY <= 125 && mouseY >= 0 && row1Array[1] == "N"){
        drawEx(A2xX,A2yX);
        row1Array[1] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 275 && mouseX <= 400 && mouseY <= 125 && mouseY >= 0 && row1Array[2] == "N"){
        drawEx(A3xX,A3yX);
        row1Array[2] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX <= 125 && mouseX >= 0 && mouseY >= 125 && mouseY <= 275 && row2Array[0] == "N"){
        drawEx(B1xX,B1yX);
        row2Array[0] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 125 && mouseX <= 275 && mouseY >= 125 && mouseY <= 275 && row2Array[1] == "N"){
        drawEx(B2xX,B2yX);
        row2Array[1] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 275 && mouseX <= 400 && mouseY >= 125 && mouseY <= 275 && row2Array[2] == "N"){
        drawEx(B3xX,B3yX);
        row2Array[2] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX <= 125 && mouseX >= 0 && mouseY >= 275 && mouseY <= 400 && row3Array[0] == "N"){
        drawEx(C1xX,C1yX);
        row3Array[0] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 125 && mouseX <= 275 && mouseY >= 275 && mouseY <= 400 && row3Array[1] == "N"){
        drawEx(C2xX,C2yX);
        row3Array[1] = "X";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 275 && mouseX <= 400 && mouseY >= 275 && mouseY <= 400 && row3Array[2] == "N"){
        drawEx(C3xX,C3yX);
        row3Array[2] = "X";
        numOfTurns = numOfTurns + 1;
    }
    currentTurn = "0";
        }else{
    if(mouseX <= 125 && mouseX >= 0 && mouseY <= 125 && mouseY >= 0 && row1Array[0] == "N"){
        drawCirc(A1xC,A1yC);
        row1Array[0] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 125 && mouseX <= 275 && mouseY <= 125 && mouseY >= 0 && row1Array[1] == "N"){
        drawCirc(A2xC,A2yC);
        row1Array[1] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 275 && mouseX <= 400 && mouseY <= 125 && mouseY >= 0  && row1Array[2] == "N"){
        drawCirc(A3xC,A3yC);
        row1Array[2] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX <= 125 && mouseX >= 0 && mouseY >= 125 && mouseY <= 275  && row2Array[0] == "N"){
        drawCirc(B1xC,B1yC);
        row2Array[0] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 125 && mouseX <= 275 && mouseY >= 125 && mouseY <= 275 && row2Array[1] == "N"){
        drawCirc(B2xC,B2yC);
        row2Array[1] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 275 && mouseX <= 400 && mouseY >= 125 && mouseY <= 275 && row2Array[2] == "N"){
        drawCirc(B3xC,B3yC);
        row2Array[2] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX <= 125 && mouseX >= 0 && mouseY >= 275 && mouseY <= 400 && row3Array[0] == "N"){
        drawCirc(C1xC,C1yC);
        row3Array[0] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 125 && mouseX <= 275 && mouseY >= 275 && mouseY <= 400 && row3Array[1] == "N"){
        drawCirc(C2xC,C2yC);
        row3Array[1] = "O";
        numOfTurns = numOfTurns + 1;
    }
    if(mouseX >= 275 && mouseX <= 400 && mouseY >= 275 && mouseY <= 400 && row3Array[2] == "N"){
        drawCirc(C3xC,C3yC);
        row3Array[2] = "O";
        numOfTurns = numOfTurns + 1;
    }
    currentTurn = "X";
    }
    checkGameOver();
}