WordGame-JS/Base/scripts/script.js
2024-05-08 13:41:16 -04:00

166 lines
No EOL
4.3 KiB
JavaScript
Executable file

// Variables
// --Constant
const retryDelay = 2500;
var allWords = ["no","words"];
// --Items
let usrField = $("form");
let usrButton = $("#finalButton");
let skpButton = $("#skipButton");
let hinButton = $("#hintButton");
let scrText = $("#scrambled");
let gusText = $("#guess");
let hinText = $("#hint");
// --Preset
var usrTries = 0;
var usrIndex = 0;
var usrScrambled = "";
// --Thread
var delay = null;
// Functions
function getWords(){
retrieveWords(allWords);
}
function checkWord(){
// Set the word to a lowercase value
let word = gusText.val().toLowerCase();
// Disable the input to the input field
gusText.attr("disabled", true);
hinText.attr("hidden", false);
gusText.attr("class", "hideBox");
// Checking if the word is equal to what we want
if(word == allWords[usrIndex]){
// Telling the user we won! And restarting..
hinText.text("Correct! You win!");
delay = window.setInterval(onStart, retryDelay);
}
// Ehh, Looks like you'll need to try again
else{
switch(usrTries){
// This is the first mess up
case 0:
hinText.text("Incorrect! You have one more try.");
delay = window.setInterval(updateDisplay, retryDelay);
break;
// This is the second mess up
case 1:
hinText.text("Sorry, your word was " + allWords[usrIndex]);
delay = window.setInterval(onStart, 2500);
break;
}
}
}
function updateDisplay(){
// Resetting all values to defaults
gusText.val("");
gusText.attr("disabled", false);
hinText.html("");
hinText.attr("hidden", true);
usrButton.attr("disabled", false);
gusText.attr("class", "");
if(delay != null){
window.clearInterval(delay);
delay = null;
}
}
function checkBoldWord(wLetter, matches){
var counts = 0;
for(var i = 0; i < matches.length; i++){
if(matches[i] == wLetter){counts += 1; break;}
}
return counts > 0;
}
function onStart(){
// Getting words
getWords();
if(delay != null) {
window.clearInterval(delay);
delay = null;
}
// Updating the new word and stuff
hinButton.attr("disabled", false);
usrIndex = Math.floor(Math.random() * allWords.length);
scrText.text(scramble(allWords[usrIndex]));
usrScrambled = scrText.text();
usrButton.attr("disabled", false);
// IMPORTANT FOR RESTARTING CURRENT GAME!
// Change the amount of guesses back to !!ZERO!!
usrTries = 0;
// Updating display
updateDisplay();
}
function onType(event){
var typedWord = event.target.value.toLowerCase().split("");
var wantedWord = allWords[usrIndex].toLowerCase().split("");
var matches = [];
for(var a = 0; a < typedWord.length; a++){
for(var b = 0; b < wantedWord.length; b++){
if(typedWord[a] == wantedWord[b]){
matches.push(typedWord[a]);
}
}
}
var result = "";
let wantedTag = "u";
for(var i = 0; i < usrScrambled.length; i++){
if(checkBoldWord(usrScrambled[i], matches)){
result = result + "<" + wantedTag + ">" + usrScrambled[i] + "</" + wantedTag + ">";
//matches.splice(result.d, 1);
}
else{
result = result + usrScrambled[i];
}
}
scrText.html(result);
}
// Events
window.addEventListener("load", function(){
// The background
let _bg = document.getElementById("bkgImg");
// The rest of the stuff
onStart();
});
usrField.on("submit", function(event){
// Stop page from reloading on submit
// REALLY REALLY ANNOYING..
event.preventDefault();
// Disable the button so the player can see
// or learn what they got right or wrong.
usrButton.attr("disabled", true);
checkWord();
// Add some tries!
usrTries += 1;
});
gusText.on("input", onType);
hinButton.on("click", function(event){
// Displaying a hint
if(delay != null) {return;}
// This is something cool!
hinText.html("The first two letters of your word are <strong>" + allWords[usrIndex][0] + allWords[usrIndex][1] + "</strong>");
hinText.attr("hidden", false);
hinButton.attr("disabled", true);
delay = window.setInterval(updateDisplay, retryDelay);
});
skpButton.on("click", function(){
onStart();
})