1
0

added math mechanics

This commit is contained in:
Lexzach 2025-03-21 17:52:16 -04:00
parent 0f4083a263
commit 0f691de97c
Signed by: Lexzach
GPG Key ID: 10A6FD067E6060A8
5 changed files with 74 additions and 8 deletions

View File

@ -86,14 +86,24 @@ layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="UI/PanelContainer/VBoxContainer"] [node name="HBoxContainer" type="HBoxContainer" parent="UI/PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
[node name="question" type="Label" parent="UI/PanelContainer/VBoxContainer/HBoxContainer"] [node name="QUESTION" type="Label" parent="UI/PanelContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_fonts/font = ExtResource("9_im5ls") theme_override_fonts/font = ExtResource("9_im5ls")
theme_override_font_sizes/font_size = 100 theme_override_font_sizes/font_size = 100
text = "x * y = " text = "x * y = "
[node name="answer" type="LineEdit" parent="UI/PanelContainer/VBoxContainer/HBoxContainer"] [node name="ANSWER" type="LineEdit" parent="UI/PanelContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_fonts/font = ExtResource("9_im5ls") theme_override_fonts/font = ExtResource("9_im5ls")
theme_override_font_sizes/font_size = 100 theme_override_font_sizes/font_size = 100
placeholder_text = "?"
max_length = 5 max_length = 5
context_menu_enabled = false
emoji_menu_enabled = false
shortcut_keys_enabled = false
middle_mouse_paste_enabled = false
drag_and_drop_selection_enabled = false
[connection signal="text_submitted" from="UI/PanelContainer/VBoxContainer/HBoxContainer/ANSWER" to="." method="_on_answer_text_submitted"]

1
godot/scripts/ai.gd Normal file
View File

@ -0,0 +1 @@
extends Node

1
godot/scripts/ai.gd.uid Normal file
View File

@ -0,0 +1 @@
uid://dutkdqg1nwysf

View File

@ -6,14 +6,66 @@ func _determine_seconds_left() -> float:
var difficulty_calc:float = 20/float(GLOBALVARS.difficulty) var difficulty_calc:float = 20/float(GLOBALVARS.difficulty)
return difficulty_calc if difficulty_calc >= 3.0 else 3.0 return difficulty_calc if difficulty_calc >= 3.0 else 3.0
func _unhandled_key_input(event: InputEvent) -> void: func _on_answer_text_submitted(_new_text: String) -> void:
if event.is_action_pressed("enter"): if GLOBALVARS.selected_player == 0:
if GLOBALVARS.selected_player == 0: if GLOBALVARS.current_solution == (%ANSWER.text).to_int():
pass # SUBMIT ANSWER GLOBALVARS.selected_player = (GLOBALVARS.selected_player+1)%4
GLOBALVARS.difficulty+=1
_determine_seconds_left()
_generate_question()
%ANSWER.text = ""
else:
%RULE_ENFORCEMENT.explode()
cooldown = 120
GLOBALVARS.rotation_paused = true
GLOBALVARS.players_remaining.erase(0)
get_node("players/player_0").queue_free()
func _generate_question() -> void:
# 0 - add
# 1 - subtract
# 2 - multiply
# 3 - divide
var x:int = randi_range(1,100)
var y:int = randi_range(1,100)
var rand_int:int = randi_range(0,3)
var operand:String
if rand_int == 0:
GLOBALVARS.current_solution = x+y
operand = "+"
elif rand_int == 1:
GLOBALVARS.current_solution = x-y
operand = "-"
elif rand_int == 2:
x = randi_range(0,10) # simplify multiplication
y = randi_range(0,10)
GLOBALVARS.current_solution = x*y
operand = "*"
elif rand_int == 3:
operand = "/"
while x%y != 0: # keep going til the remainder is 0
x = randi_range(0,100)
y = randi_range(1,100)
@warning_ignore('integer_division')
GLOBALVARS.current_solution = x/y
%QUESTION.text = "%s %s %s = " % [x,operand,y]
func _ready() -> void:
_determine_seconds_left()
_generate_question()
func _physics_process(_delta: float) -> void: func _physics_process(_delta: float) -> void:
if not GLOBALVARS.rotation_paused: if not GLOBALVARS.rotation_paused:
GLOBALVARS.seconds_left -= 0.01666666667 GLOBALVARS.seconds_left -= 0.01666666667
if GLOBALVARS.selected_player == 0:
%ANSWER.editable = true
else:
%ANSWER.editable = false
if GLOBALVARS.seconds_left <= 0: if GLOBALVARS.seconds_left <= 0:
%RULE_ENFORCEMENT.explode() %RULE_ENFORCEMENT.explode()
@ -28,10 +80,11 @@ func _physics_process(_delta: float) -> void:
if len(GLOBALVARS.players_remaining) > 1 and 0 in GLOBALVARS.players_remaining: if len(GLOBALVARS.players_remaining) > 1 and 0 in GLOBALVARS.players_remaining:
while GLOBALVARS.selected_player not in GLOBALVARS.players_remaining: while GLOBALVARS.selected_player not in GLOBALVARS.players_remaining:
GLOBALVARS.selected_player = (GLOBALVARS.selected_player+1)%4 GLOBALVARS.selected_player = (GLOBALVARS.selected_player+1)%4
_generate_question()
elif 0 in GLOBALVARS.players_remaining: elif 0 in GLOBALVARS.players_remaining:
pass # WIN CONDITION pass # WIN CONDITION
else: else:
pass # LOSE CONDITION get_tree().change_scene_to_file("res://main_scenes/menu.tscn")
GLOBALVARS.rotation_paused = false GLOBALVARS.rotation_paused = false
%RULE_ENFORCEMENT.reset_rule_enforcement_device() %RULE_ENFORCEMENT.reset_rule_enforcement_device()

View File

@ -5,10 +5,11 @@ var seconds_left:float = 0.0
var difficulty:int = 1 var difficulty:int = 1
var rotation_paused:bool = false var rotation_paused:bool = false
var players_remaining:Array = [0,1,2,3] var players_remaining:Array = [0,1,2,3]
var current_solution:int
func reset_variables() -> void: func reset_variables() -> void:
selected_player = 0 selected_player = 0
seconds_left = 5.0 seconds_left = 20.0
difficulty = 1 difficulty = 1
rotation_paused = false rotation_paused = false
players_remaining = [0,1,2,3] players_remaining = [0,1,2,3]