v1.0 finished
@ -14,4 +14,4 @@ The three other players have their own strengths:
|
|||||||
|
|
||||||
- Green: Good at subtraction
|
- Green: Good at subtraction
|
||||||
- Red: Good at multiplication
|
- Red: Good at multiplication
|
||||||
- Blue: Good at division
|
- Blue: Good at addition
|
||||||
|
BIN
blender/icons/cover_image.png
Normal file
After Width: | Height: | Size: 229 KiB |
BIN
blender/icons/icon.blend
Normal file
BIN
blender/icons/icon.blend1
Normal file
BIN
blender/icons/icon.ico
Normal file
After Width: | Height: | Size: 150 KiB |
BIN
blender/icons/icon.png
Normal file
After Width: | Height: | Size: 192 KiB |
BIN
godot/icon.ico
Normal file
After Width: | Height: | Size: 150 KiB |
BIN
godot/icon.png
Normal file
After Width: | Height: | Size: 192 KiB |
@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://c1pb0yn1ehxho"
|
uid="uid://c7q670yi3gsgk"
|
||||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://icon.svg"
|
source_file="res://icon.png"
|
||||||
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
|
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@ -32,6 +32,3 @@ process/hdr_as_srgb=false
|
|||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=1
|
||||||
svg/scale=1.0
|
|
||||||
editor/scale_with_editor_scale=false
|
|
||||||
editor/convert_colors_with_editor_theme=false
|
|
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>
|
|
Before Width: | Height: | Size: 994 B |
@ -64,7 +64,7 @@ transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 4, 0,
|
|||||||
[node name="CAMERA" type="Camera3D" parent="."]
|
[node name="CAMERA" type="Camera3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 0.910084, 0.414423, 0, -0.414423, 0.910084, 0, 3.4199, 0)
|
transform = Transform3D(1, 0, 0, 0, 0.910084, 0.414423, 0, -0.414423, 0.910084, 0, 3.4199, 0)
|
||||||
fov = 39.7
|
fov = 41.4
|
||||||
size = 0.013
|
size = 0.013
|
||||||
script = ExtResource("2_joe7c")
|
script = ExtResource("2_joe7c")
|
||||||
|
|
||||||
|
@ -28,17 +28,11 @@ layout_mode = 2
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_fonts/font = ExtResource("1_38vls")
|
theme_override_fonts/font = ExtResource("1_38vls")
|
||||||
theme_override_font_sizes/font_size = 120
|
theme_override_font_sizes/font_size = 120
|
||||||
text = "Extreme Intense Mathematics"
|
text = "Extremely Intense Mathematics"
|
||||||
|
|
||||||
[node name="author" type="Label" parent="HBoxContainer/VBoxContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_fonts/font = ExtResource("2_1xsbm")
|
|
||||||
theme_override_font_sizes/font_size = 50
|
|
||||||
text = "Made by Lexzach (Zach Bowden)"
|
|
||||||
|
|
||||||
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/VBoxContainer"]
|
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/separation = 180
|
theme_override_constants/separation = 105
|
||||||
theme_override_styles/separator = SubResource("StyleBoxEmpty_38vls")
|
theme_override_styles/separator = SubResource("StyleBoxEmpty_38vls")
|
||||||
|
|
||||||
[node name="start_button" type="Button" parent="HBoxContainer/VBoxContainer"]
|
[node name="start_button" type="Button" parent="HBoxContainer/VBoxContainer"]
|
||||||
@ -53,7 +47,7 @@ text = "Play"
|
|||||||
|
|
||||||
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/VBoxContainer"]
|
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/separation = 65
|
theme_override_constants/separation = 45
|
||||||
theme_override_styles/separator = SubResource("StyleBoxEmpty_38vls")
|
theme_override_styles/separator = SubResource("StyleBoxEmpty_38vls")
|
||||||
|
|
||||||
[node name="quit_button" type="Button" parent="HBoxContainer/VBoxContainer"]
|
[node name="quit_button" type="Button" parent="HBoxContainer/VBoxContainer"]
|
||||||
@ -78,5 +72,17 @@ theme_override_fonts/font = ExtResource("2_1xsbm")
|
|||||||
theme_override_font_sizes/font_size = 50
|
theme_override_font_sizes/font_size = 50
|
||||||
text = "Version"
|
text = "Version"
|
||||||
|
|
||||||
|
[node name="author" type="Label" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_fonts/font = ExtResource("2_1xsbm")
|
||||||
|
theme_override_font_sizes/font_size = 50
|
||||||
|
text = "Made by Lexzach (Zach Bowden)"
|
||||||
|
|
||||||
|
[node name="about" type="Label" parent="VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_fonts/font = ExtResource("2_1xsbm")
|
||||||
|
theme_override_font_sizes/font_size = 50
|
||||||
|
text = "Created for the Virginia Collegiate Game Jam 2025"
|
||||||
|
|
||||||
[connection signal="pressed" from="HBoxContainer/VBoxContainer/start_button" to="." method="_on_start_button_pressed"]
|
[connection signal="pressed" from="HBoxContainer/VBoxContainer/start_button" to="." method="_on_start_button_pressed"]
|
||||||
[connection signal="pressed" from="HBoxContainer/VBoxContainer/quit_button" to="." method="_on_quit_button_pressed"]
|
[connection signal="pressed" from="HBoxContainer/VBoxContainer/quit_button" to="." method="_on_quit_button_pressed"]
|
||||||
|
@ -10,11 +10,15 @@ config_version=5
|
|||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Extremely Intense Math"
|
config/name="Extremely Intense Mathematics"
|
||||||
config/version="v0.1"
|
config/version="1.0"
|
||||||
run/main_scene="uid://v7vh1typhj0k"
|
run/main_scene="uid://v7vh1typhj0k"
|
||||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
boot_splash/bg_color=Color(0, 0, 0, 1)
|
||||||
|
boot_splash/show_image=false
|
||||||
|
boot_splash/fullsize=false
|
||||||
|
config/icon="uid://c7q670yi3gsgk"
|
||||||
|
config/windows_native_icon="res://icon.ico"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ Attempts to simulate human-esc responses.
|
|||||||
|
|
||||||
green - good at subtraction
|
green - good at subtraction
|
||||||
red - good at multiplication
|
red - good at multiplication
|
||||||
blue - good at division
|
blue - good at addition
|
||||||
'''
|
'''
|
||||||
|
|
||||||
extends Node
|
extends Node
|
||||||
@ -24,7 +24,7 @@ func _physics_process(_delta: float) -> void:
|
|||||||
elif GLOBALVARS.selected_player == 2:
|
elif GLOBALVARS.selected_player == 2:
|
||||||
faster_operand = "*"
|
faster_operand = "*"
|
||||||
elif GLOBALVARS.selected_player == 3:
|
elif GLOBALVARS.selected_player == 3:
|
||||||
faster_operand = "/"
|
faster_operand = "+"
|
||||||
|
|
||||||
if GLOBALVARS.current_operand == faster_operand:
|
if GLOBALVARS.current_operand == faster_operand:
|
||||||
wait_time = randi_range(45,120)
|
wait_time = randi_range(45,120)
|
||||||
|
@ -8,6 +8,8 @@ func _physics_process(_delta: float) -> void:
|
|||||||
Controls where the camera is pointed based on which player is selected
|
Controls where the camera is pointed based on which player is selected
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
fov = ((20.0 * GLOBALVARS.seconds_left/GLOBALVARS.start_seconds)+20.0)
|
||||||
|
|
||||||
target_angle = (abs(GLOBALVARS.selected_player) * 90)
|
target_angle = (abs(GLOBALVARS.selected_player) * 90)
|
||||||
if current_angle != target_angle:
|
if current_angle != target_angle:
|
||||||
current_angle += 0.1*(target_angle-current_angle)
|
current_angle += 0.1*(target_angle-current_angle)
|
||||||
|
@ -24,7 +24,9 @@ func _explode():
|
|||||||
|
|
||||||
func _determine_seconds_left() -> float:
|
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
|
difficulty_calc = difficulty_calc if difficulty_calc >= 3.0 else 3.0
|
||||||
|
GLOBALVARS.start_seconds = difficulty_calc
|
||||||
|
return difficulty_calc
|
||||||
|
|
||||||
func _on_answer_text_submitted(_new_text: String) -> void:
|
func _on_answer_text_submitted(_new_text: String) -> void:
|
||||||
if GLOBALVARS.current_solution == (%ANSWER.text).to_int() and (%ANSWER.text).is_valid_int():
|
if GLOBALVARS.current_solution == (%ANSWER.text).to_int() and (%ANSWER.text).is_valid_int():
|
||||||
@ -49,41 +51,26 @@ func _generate_question() -> void:
|
|||||||
# 0 - add
|
# 0 - add
|
||||||
# 1 - subtract
|
# 1 - subtract
|
||||||
# 2 - multiply
|
# 2 - multiply
|
||||||
# 3 - divide
|
var rand_int:int = randi_range(0,2)
|
||||||
|
|
||||||
var x:int = randi_range(1,10)
|
var x:int
|
||||||
var y:int = randi_range(1,10)
|
var y:int
|
||||||
var rand_int:int = randi_range(0,3)
|
|
||||||
|
|
||||||
if rand_int == 0:
|
if rand_int == 0:
|
||||||
|
x = randi_range(1,50)
|
||||||
|
y = randi_range(1,20)
|
||||||
GLOBALVARS.current_solution = x+y
|
GLOBALVARS.current_solution = x+y
|
||||||
GLOBALVARS.current_operand = "+"
|
GLOBALVARS.current_operand = "+"
|
||||||
elif rand_int == 1:
|
elif rand_int == 1:
|
||||||
|
x = randi_range(1,50)
|
||||||
|
y = randi_range(1,20)
|
||||||
GLOBALVARS.current_solution = x-y
|
GLOBALVARS.current_solution = x-y
|
||||||
GLOBALVARS.current_operand = "-"
|
GLOBALVARS.current_operand = "-"
|
||||||
elif rand_int == 2:
|
elif rand_int == 2:
|
||||||
x = randi_range(0,10) # simplify multiplication
|
x = randi_range(0,12) # simplify multiplication
|
||||||
y = randi_range(0,10)
|
y = randi_range(0,12)
|
||||||
GLOBALVARS.current_solution = x*y
|
GLOBALVARS.current_solution = x*y
|
||||||
GLOBALVARS.current_operand = "*"
|
GLOBALVARS.current_operand = "*"
|
||||||
elif rand_int == 3:
|
|
||||||
var fail:int = 0
|
|
||||||
var solution:int
|
|
||||||
GLOBALVARS.current_operand = "/"
|
|
||||||
|
|
||||||
while x%y != 0 and fail < 10000: # keep going til the remainder is 0
|
|
||||||
x = randi_range(1,10)
|
|
||||||
y = randi_range(1,10)
|
|
||||||
|
|
||||||
@warning_ignore('integer_division')
|
|
||||||
solution = floor(x/y)
|
|
||||||
fail+=1
|
|
||||||
|
|
||||||
GLOBALVARS.current_solution = solution
|
|
||||||
|
|
||||||
if fail >= 10000: # fallback to addition if no division problem can be found in 10000 loops
|
|
||||||
GLOBALVARS.current_operand = "+"
|
|
||||||
GLOBALVARS.current_solution = x+y
|
|
||||||
|
|
||||||
%QUESTION.text = "%s %s %s = " % [x,GLOBALVARS.current_operand,y]
|
%QUESTION.text = "%s %s %s = " % [x,GLOBALVARS.current_operand,y]
|
||||||
%QUESTION.visible = true
|
%QUESTION.visible = true
|
||||||
@ -103,7 +90,9 @@ func _physics_process(_delta: float) -> void:
|
|||||||
if GLOBALVARS.selected_player == 0:
|
if GLOBALVARS.selected_player == 0:
|
||||||
%ANSWER.editable = true
|
%ANSWER.editable = true
|
||||||
%ANSWER.grab_focus()
|
%ANSWER.grab_focus()
|
||||||
|
%ANSWER.edit()
|
||||||
else:
|
else:
|
||||||
|
%ANSWER.release_focus()
|
||||||
%ANSWER.editable = false
|
%ANSWER.editable = false
|
||||||
|
|
||||||
if GLOBALVARS.seconds_left <= 0:
|
if GLOBALVARS.seconds_left <= 0:
|
||||||
|
@ -7,10 +7,10 @@ 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
|
var current_solution:int
|
||||||
var current_operand:String = ""
|
var current_operand:String = ""
|
||||||
|
var start_seconds:float = 0.0
|
||||||
|
|
||||||
func reset_variables() -> void:
|
func reset_variables() -> void:
|
||||||
selected_player = 0
|
selected_player = 0
|
||||||
seconds_left = 20.0
|
|
||||||
difficulty = 1
|
difficulty = 1
|
||||||
rotation_paused = false
|
rotation_paused = false
|
||||||
current_operand = ""
|
current_operand = ""
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
%VERSION.text = ProjectSettings.get_setting("application/config/version")
|
%VERSION.text = "v" + ProjectSettings.get_setting("application/config/version")
|
||||||
|
|
||||||
func _on_start_button_pressed() -> void:
|
func _on_start_button_pressed() -> void:
|
||||||
GLOBALVARS.reset_variables()
|
GLOBALVARS.reset_variables()
|
||||||
|
BIN
screenshots/Screenshot from 2025-03-22 21-46-29.png
Normal file
After Width: | Height: | Size: 746 KiB |