Tic-Tac-Toe Free Code Camp Challenge
How do I make an tic-tac-toe free code camp challenge?
What is a tic-tac-toe free code camp challenge? How do you make a tic-tac-toe free code camp challenge? This script and codes were developed by Ajala Comfort on 11 January 2023, Wednesday.
Tic-Tac-Toe Free Code Camp Challenge - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Tic-Tac-Toe Free Code Camp Challenge </title> <link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css'> <link rel="stylesheet" href="css/style.css">
</head>
<body> <body>
<div id="askUserShape" class="panel modal-dialog row"> <div class="col-xs-6">X</div> <div class="col-xs-6">O</div>
</div> <div id="countDown"> </div> <div id="BOARD"> </div> <div id="SHIELD"></div> <div id="winnerBoard"></div> <div id="LEVEL"></div>
</body> <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js'></script> <script src="js/index.js"></script>
</body>
</html>
Tic-Tac-Toe Free Code Camp Challenge - Script Codes CSS Codes
body{width:100%;height:700px;}
#askUserShape{ width:50%; height:200px; margin:auto; background-color:#e67e22; z-index:2; position:relative; top:10%; display:none;
} #askUserShape > div{ height:100%; font-size:6.5vw; text-align:center; padding-top:5%; cursor:pointer; color:white;
}
#askUserShape > div:hover{background-color:#fbfcfc;color:#d35400;}
#countDown{ display:none; position:relative; width:70%; margin:auto; height:100%; background-color:rgba(211, 84, 0,0.6); font-size:20.5vw; text-align:center; color:white;
}
#BOARD{width:50%;height:700px;margin:auto;margin-top:2%;}
#BOARD div{display:block;color:black;font-size:7vw;text-align:center;float:left;}
.boxes{border:1px solid transparent;border-right:5px solid rgba(211, 84, 0,0.6);}
.border_right{ border-right:5px solid rgba(211, 84, 0,0.6);
}
.border_bottom{ border-bottom:5px solid rgba(211, 84, 0,0.6);
}
#SHIELD{width:100%;height:750px;position:absolute;top:0;z-index:4;background-color:rgba(211, 84, 0,0.3);display:none;}
#winnerBoard{width:50%;height:60px;position:fixed;border:2px solid rgba(230, 126, 34,1.0);top:0;z-index:5;text-align:center;font-size:1.5vw;padding-top:0.5%;color:rgba(44, 62, 80,1.0);font-weight:bolder;letter-spacing:5px;margin-left:25%;}
#LEVEL{width:100px;height:100%;position:absolute;color:rgba(211, 84, 0,1.0);left:0;top:0;
font-size:2.0vw;text-align:center; font-weight:light;letter-spacing:2px;
}
}
Tic-Tac-Toe Free Code Camp Challenge - Script Codes JS Codes
/*
THE PROGRAM IS STIL UNDER CONSTRUCTION :D
JUST INCASE THERE ARE GLITCHES! THANKS FOR UNDERSTANDING!:::::::::: HAPPY FCC!
*/
$(document).ready(function(){ //store all globals here var shapeOfUser,countDownInterator =0,currentLevelRowNumber = 3,countingForMulti = 0,multiArray = [],winningLetter; //STORE ALL ARRAYS HERE var countDownValues = [1,2,3, "START"],currentID, playerShape,computerShape,ID,currentPlayer = "USER"; //INTERVALS var org, startingPoint = 1,muliples = [], currVal = currentLevelRowNumber, numberOfBoxes = Math.pow(currentLevelRowNumber,2), interForPlaying, counterPlays = 0, BoxNumber = 1,rowNumber = 0,reps = Math.ceil(numberOfBoxes / 2);
reset(); //LISTEN TO THE SELECTION OF THE SHAPE $("#askUserShape div").on("click",function(e){ shapeOfUser = $(this).html(); playerShape= shapeOfUser;computerShape = playerShape === "X"?"O":"X"; $("#askUserShape").fadeOut("slow"); $("#countDown").fadeIn("slow"); createMultiArray(); muliplesOfRowNumber(); org = setInterval(countDown,1000/2); }); /////////////////////////LISTEN TO CLICK OF THE BOX $(document).on("click", ".box",function(){ var slot = $(this).html();var position = $(this).attr("id");ID = position;position = (position.match(/\d+/g))[0]; if(slot && slot.length){ alert("Position Filled");} else{$("#SHIELD").fadeIn("slow");var p = getInnerOuterForUser(position); currentID = ID;if(p){UserSelects(p[0],p[1]);} } }); //ALL FUNCTIONS ////////////////////////RESET function reset(){ ////////////////////////////////////RESET ALL VARS //store all globals here
shapeOfUser,countDownInterator =0,countingForMulti = 0,multiArray = [],winningLetter, countDownValues = [1,2,3, "START"],currentID, playerShape,computerShape,ID,currentPlayer = "USER", org,startingPoint = 1, muliples = [], currVal = currentLevelRowNumber,numberOfBoxes = Math.pow(currentLevelRowNumber,2), interForPlaying, counterPlays = 0, BoxNumber = 1,rowNumber = 0,reps = Math.ceil(numberOfBoxes / 2); ////////////////////DISPLAY LEVEL currentLevel(); ///////////////////EMPTA COUNTDOWN $("#countDown").empty(); //////////////////////////////REMOVE SHILED $("#SHIELD").fadeOut("slow"); //REMOVE BOARD $("#BOARD").empty(); // ANIMATE THE ENTRANCE OF THE ASUSERSAHPE DIALOG $("#askUserShape").slideDown("7000"); } ///////////////////////COUNTDOWN function countDown(){ var val = countDownValues[countDownInterator]; if(countDownInterator ===countDownValues.length ){clearInterval(org);closeCountDown();} else{countDownInterator++;} $("#countDown").html(val);} //////////////////////////CLOSE COUNTDOWN function closeCountDown(){$("#countDown").hide();displayBOARD();} //////////////////////////////CREATE MULTIARRAY function createMultiArray(){ var eachSubArray = [],curr = startingPoint;countingForMulti++; while(startingPoint < currentLevelRowNumber + curr){eachSubArray.push(startingPoint);startingPoint++;} multiArray.push(eachSubArray); return countingForMulti<currentLevelRowNumber? createMultiArray():multiArray; } //////////////////////////////////////////////////GET ODD VALUES FROM MULTI function getOdd(){ var oddFusion = [];var odds =multiArray.filter(function(sub,i,ar){return (i % 2 === 0);}); odds.forEach(function(sub){sub.forEach(function(a){oddFusion.push(a);})} );return oddFusion;} //////////////////////////////////////////////////////////// GETS MULTIPLES OF THE ROW NUMBER IN AN ARRAY function muliplesOfRowNumber(){muliples.push(currVal); currVal = currVal + currentLevelRowNumber;return currVal === currentLevelRowNumber * (currentLevelRowNumber+1)? muliples:muliplesOfRowNumber();} /////////////////////////////////////////////////RETURNS THE BOOLEAN IF FALLS UNDER BORDER RIGHT function BorderRightNone(n){return (muliples).indexOf(n)>= 0;} //////////////////////////////////////////////FOR ALL BORDER BOTTOM function BorderBottom(n){var endOfMulti = multiArray[multiArray.length-1];return endOfMulti.indexOf(n) < 0; }
/////////////////////////////////////////// ADDD BOXES TO THE BOARDS function addBoard(){
if(!BorderRightNone(BoxNumber) ){$("#BOARD").append("<div class='border_bottom border_right box' id='box_" +BoxNumber + "'></div>");}else{$("#BOARD").append("<div class='border_bottom box' id = 'box_" + BoxNumber + "'></div>");}rowNumber+= 2; BoxNumber++;} ////////////////////////////////////////DISPLAYS TH E BOARD function displayBOARD(){addBoard(); numberOfBoxes--;return numberOfBoxes > 0 ? displayBOARD():styleBoxes();} ///////////////////////////////GIVES THE BOXES THEIR SIZES function styleBoxes(){var percent = (1 /currentLevelRowNumber ) * 100;percent = Math.round(percent);$("#BOARD div").css({"width":percent + "%","height":percent + "%"});play();} /////////////////////////////////////////// function computerSelectsPosition(){$("#SHIELD").fadeIn("slow");var outer =Math.round(Math.random()*2);var inner =Math.round(Math.random()*2);return (checkIfFilled(multiArray[outer][inner])) === false?fillShape(outer,inner):computerSelectsPosition();} ///////////////////////////////////CHECKEDFILLED function checkIfFilled(n){return isNaN(n);} /////////////////////////////FILL SHAPE function fillShape(outer,inner){ if(currentPlayer === "COMPUTER"){var cid = multiArray[outer][inner];currentID = ("box_" +cid);multiArray[outer][inner] = computerShape;displayShape(computerShape);} else{multiArray[outer][inner] = playerShape;displayShape(playerShape);} currentPlayer = currentPlayer === "USER"?"COMPUTER":"USER"; return true; } ////////////////////////////////DISPLAY SHAPE function displayShape(shape){ $("#"+currentID).html(shape);} ///////////////////////////////////USER CLICKS function UserSelects(outer,inner){counterPlays++;var check =checkIfFilled(multiArray[outer][inner]); if(check === false){fillShape(outer,inner);if(counterPlays < reps){ computerPlay();}}} ////////////////////////////////////GET THE INNER AND OUTER function getInnerOuterForUser(n){ var inner,outer;multiArray.forEach(function(sub,i,arr){sub.forEach(function(num,po,array){ if(num == n){outer = i,inner = po;}})}) return [outer,inner];} //CHECK FILLED function checkFull(){var filled = true;multiArray.forEach(function(sub){sub.forEach(function(i){if(isNaN(i) === false){filled = false;}})});return filled;};
///BEGIN GAME function play(){ var min = 1000/2; interForPlaying = setInterval(function(){ //currentPlayer === "USER"?userPlay():computerPlay(); userPlay(); var status = win(); console.log(status); console.log(counterPlays);console.log(reps); if(status === true){WON();} if(counterPlays >= reps && status === false){clear(); alert("YOU LOST");} },min); } function clear(){clearInterval(interForPlaying); } ///////////////////////////displayWinner function displayWinner(){$("#winnerBoard").html("YOU WON");} function currentLevel(){$("#LEVEL").html("L<br>E<br>V<br>E<br>L<br> <br>" + (currentLevelRowNumber -3) )} ///////////////////////////////////////////NXT LEVEL function nextLevel(){currentLevelRowNumber++;if(currentLevelRowNumber > 5){alert("GAME NEEDS SOME WORK... THANK YOU!!!")} else{ reset();} } ///////////////////////////////////////////////WON function WON(){clear();displayWinner();currentLevel();nextLevel();} ///////////////////////////////////////////LOST function LOST(){clear();alert("THE COMPUTER WON!");} /////////////////////////////userpLAY function userPlay(){$("#SHIELD").fadeOut("slow");} /////////////////////////////COMPUTER PLAY function computerPlay(){computerSelectsPosition();} //////////////////////////////WON function win(){ if(horizontalWin(multiArray)){return checkWHOWON();} else if(vertical(multiArray)){return checkWHOWON();} else if(diagonal(multiArray)){return checkWHOWON();} return false; } ////////////////////////////////////CHECK WHO function checkWHOWON(){ return winningLetter === playerShape?true:LOST(); } //////////////////////////////HORIZONTALPLAY function horizontalWin(array){ var horizontalWin = false; array.forEach(function(sub){var first = sub[0], count = 1; sub.forEach(function(a,i,arr){if(i !== 0 && first === a){count++;}}) if(count === currentLevelRowNumber){horizontalWin = true;winningLetter = first;} }) return horizontalWin; } //////////////////////////////////////VERTICAL function vertical(array){ var transformedArray = isSamePosArray(array); return horizontalWin(transformedArray); } //////////////////////////////////////issamePo function isSamePosArray(array){ var looping = currentLevelRowNumber,tracker = 0,mainA = []; while(looping > 0){var smaller = []; array.forEach(function(sub){smaller.push(sub[tracker]);});mainA.push(smaller);tracker++;looping--;} return mainA;
} ///////////////////////////////////////atin function atincrementPos(array){ var looptimes = 2, tracker = 0, main = []; while(looptimes > 0){ var smaller = []; array.forEach(function(sub){smaller.push(sub[tracker]);looptimes >= 2?tracker++:tracker--;}) looptimes--;tracker--; main.push(smaller); } return main; } /////////////////////////////////diagonal function diagonal(array){var transformedDiag = atincrementPos(array);return horizontalWin(transformedDiag);}
});
Developer | Ajala Comfort |
Username | AJALACOMFORT |
Uploaded | January 11, 2023 |
Rating | 3 |
Size | 5,214 Kb |
Views | 4,048 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
My Porfolio | 5,245 Kb |
Calculator with ReactJs | 4,475 Kb |
COLOR PICKER | 8,468 Kb |
Second Website | 6,234 Kb |
Recipe Book | 4,813 Kb |
Basic ReactJs Form | 5,214 Kb |
Calender Update | 6,157 Kb |
Intermediate Todo List with React.js | 6,191 Kb |
Palindrome Word | 3,421 Kb |
Slide Show with ReactJs | 3,672 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
A Pen by Ash | Littleginger | 2,386 Kb |
Donut Chart example - MorrisJS | Capelo | 2,385 Kb |
Bootstrap example | Ssaakkaa | 2,716 Kb |
STIKHOI | Denmch | 7,122 Kb |
SCSS Unit Conversion | Jakob-e | 8,210 Kb |
Blockquote design | Sjmcpherson | 1,863 Kb |
Nested table email layout | Massimo-cassandro | 2,355 Kb |
CSS Org Chart | Appirio-ux | 3,882 Kb |
Ball Physics | Getsetbro | 3,149 Kb |
Hoi hoi | JohnTheCat | 7,248 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!