161 lines
4.7 KiB
GDScript
161 lines
4.7 KiB
GDScript
extends Control
|
|
|
|
var tryNum = 1
|
|
var playing = true
|
|
var todaysWord = ""
|
|
var validWords = [""]
|
|
|
|
func _ready():
|
|
$Try1._ready()
|
|
$Message.hide()
|
|
loadFiles()
|
|
|
|
# sets the try attempt node path and returns it
|
|
func tryCheck():
|
|
var try
|
|
if tryNum == 1:
|
|
try = get_node("Try1")
|
|
elif tryNum == 2:
|
|
try = get_node("Try2")
|
|
elif tryNum == 3:
|
|
try = get_node("Try3")
|
|
elif tryNum == 4:
|
|
try = get_node("Try4")
|
|
elif tryNum == 5:
|
|
try = get_node("Try5")
|
|
elif tryNum == 6:
|
|
try = get_node("Try6")
|
|
else:
|
|
pass
|
|
return try
|
|
|
|
|
|
# deletes the last character and makes the field editable.
|
|
func _on_Delete_pressed():
|
|
var try = tryCheck()
|
|
var check = try.get_node("char1").get_text() + try.get_node("char2").get_text() + try.get_node("char3").get_text() + try.get_node("char4").get_text() + try.get_node("char5").get_text()
|
|
var letterNumber = check.length()
|
|
if playing == true:
|
|
if letterNumber == 1:
|
|
try.get_node("char1").clear()
|
|
try.get_node("char1").editable = true
|
|
try.get_node("char1").grab_focus()
|
|
elif letterNumber == 2:
|
|
try.get_node("char2").clear()
|
|
try.get_node("char2").editable = true
|
|
try.get_node("char2").grab_focus()
|
|
elif letterNumber == 3:
|
|
try.get_node("char3").clear()
|
|
try.get_node("char3").editable = true
|
|
try.get_node("char3").grab_focus()
|
|
elif letterNumber == 4:
|
|
try.get_node("char4").clear()
|
|
try.get_node("char4").editable = true
|
|
try.get_node("char4").grab_focus()
|
|
elif letterNumber == 5:
|
|
try.get_node("char5").clear()
|
|
try.get_node("char5").editable = true
|
|
try.get_node("char5").grab_focus()
|
|
elif letterNumber < 1:
|
|
try.get_node("char1").grab_focus()
|
|
|
|
|
|
# The submit button grabs all the fields. Makes sure it's 5 characters long. Increases the try number. Loops back to the
|
|
# input loop. If pressed on the 5th try the game is over and stops the using from deleteing anything.
|
|
func _on_Submit_pressed():
|
|
var try = tryCheck()
|
|
|
|
|
|
var setWord = todaysWord
|
|
var check = try.get_node("char1").get_text() + try.get_node("char2").get_text() + try.get_node("char3").get_text() + try.get_node("char4").get_text() + try.get_node("char5").get_text()
|
|
#print(setWord)
|
|
if check.length() == 5:
|
|
if check.to_lower() in validWords || check.to_upper() == "ASDFA":
|
|
if tryNum < 6:
|
|
if wordCheck(setWord.to_upper(), check.to_upper()) == true:
|
|
playing = false
|
|
show_message("You Win")
|
|
print("you win")
|
|
else:
|
|
$Message.hide()
|
|
tryNum += 1
|
|
try = tryCheck()
|
|
try._ready()
|
|
elif tryNum == 6:
|
|
if wordCheck(setWord.to_upper(), check.to_upper()) == true:
|
|
print("you win")
|
|
show_message("You win")
|
|
playing = false
|
|
else:
|
|
playing = false
|
|
show_message(todaysWord)
|
|
else:
|
|
show_message("not a valid word")
|
|
print("Not a valid word")
|
|
else:
|
|
print("Must be 5 words long")
|
|
show_message("Must be 5 letters long")
|
|
|
|
|
|
func wordCheck(setWord, userWord):
|
|
var outcome = false
|
|
var try = tryCheck()
|
|
#try.get_node("char1").get_text()
|
|
#print(validWords)
|
|
|
|
# This block sets the background color overrides
|
|
# Green Box
|
|
var green = $Try1/char1.get_stylebox("read_only").duplicate()
|
|
green.bg_color = Color8(0, 225, 0)
|
|
# Yellow Box
|
|
var yellow = $Try1/char1.get_stylebox("read_only").duplicate()
|
|
yellow.bg_color = Color8(255, 255, 0)
|
|
# Grey
|
|
var grey = $Try1/char1.get_stylebox("read_only").duplicate()
|
|
grey.bg_color = Color8(98, 98, 98,50)
|
|
|
|
var x = 0
|
|
|
|
# loop through each letter in the user submited word. If the placement matches the set word turn it green
|
|
# if it doesn't match but is in the word set it yellow. If it isn't in the word set it grey.
|
|
for each in userWord:
|
|
if each == setWord[x]:
|
|
#print(each)
|
|
var nodeSet = "char"+str(x+1)
|
|
try.get_node(nodeSet).add_stylebox_override("read_only", green)
|
|
$Keyboard.get_node(each).add_stylebox_override("normal", green)
|
|
elif each in setWord:
|
|
var nodeSet = "char"+str(x+1)
|
|
if try.get_node(nodeSet).has_stylebox_override("green") != true:
|
|
#print("already green")
|
|
try.get_node(nodeSet).add_stylebox_override("read_only", yellow)
|
|
$Keyboard.get_node(each).add_stylebox_override("normal", yellow)
|
|
|
|
else:
|
|
var nodeSet = "char"+str(x+1)
|
|
try.get_node(nodeSet).add_stylebox_override("read_only", grey)
|
|
$Keyboard.get_node(each).add_stylebox_override("normal", grey)
|
|
x+=1
|
|
if userWord == setWord:
|
|
outcome = true
|
|
|
|
return outcome
|
|
|
|
func show_message(text):
|
|
$Message.text = text
|
|
$Message.show()
|
|
$MessageTimer.start()
|
|
|
|
|
|
func loadFiles():
|
|
var file = File.new()
|
|
file.open("res://config.game", file.READ)
|
|
var data = file.get_var()
|
|
var today = data["today"]
|
|
var rng = RandomNumberGenerator.new()
|
|
rng.randomize()
|
|
today = rng.randi_range(0, 300)
|
|
|
|
todaysWord = data["wordList"][today]
|
|
validWords = data["validWords"]+data["wordList"]
|