initial commit
This commit is contained in:
160
Main.gd
Normal file
160
Main.gd
Normal file
@@ -0,0 +1,160 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user