master
DJh2o2 2025-02-04 09:13:48 +07:00
parent 9e11c464bf
commit f8c63c9e9d
10 changed files with 84 additions and 38 deletions

13
.idea/.gitignore vendored

@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/projectSettingsUpdater.xml
/contentModel.xml
/.idea.01-Pong_GDScript.iml
/modules.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="GdSdk Master" type="GdScript">
<properties path="C:\Users\woitsche\AppData\Local\JetBrains\Rider2024.3\projects\01-pong_gdscript.40f3c9f9\sdk\GdSdk Master" version="Master" date="2024-06-01T15:14:16.000+02:00" />
<CLASSES />
<JAVADOC />
<SOURCES>
<root url="file://$USER_HOME$/AppData/Local/JetBrains/Rider2024.3/projects/01-pong_gdscript.40f3c9f9/sdk/GdSdk Master" />
</SOURCES>
</library>
</component>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JsBuildToolPackageJson" sorting="DEFINITION_ORDER" />
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

@ -5,7 +5,7 @@ signal game_over(winning_player: int)
@onready var label_position: Label = %LabelPosition
@onready var player_1: CharacterBody2D = %Player1
@onready var player_2: CharacterBody2D = %Player2
var speed = 400.0
var speed := 400.0
var direction: Vector2
var window_size: Vector2
var player_1_shape: RectangleShape2D
@ -30,9 +30,9 @@ func _physics_process(delta: float) -> void:
position += direction * speed * delta
label_position.text = str(position)
var ball_rect = Rect2(position - Vector2(10, 10), Vector2(20, 20))
var player_1_rect = Rect2(player_1.position - player_1_shape.extents, player_1_shape.extents * 2)
var player_2_rect = Rect2(player_2.position - player_2_shape.extents, player_2_shape.extents * 2)
var ball_rect := Rect2(position - Vector2(10, 10), Vector2(20, 20))
var player_1_rect := Rect2(player_1.position - player_1_shape.extents, player_1_shape.extents * 2)
var player_2_rect := Rect2(player_2.position - player_2_shape.extents, player_2_shape.extents * 2)
if ball_rect.intersects(player_1_rect):
direction.x *= -1

@ -9,6 +9,7 @@
radius = 11.0
[sub_resource type="SystemFont" id="SystemFont_41u45"]
subpixel_positioning = 0
[sub_resource type="LabelSettings" id="LabelSettings_ktgx5"]
font = SubResource("SystemFont_41u45")

@ -7,39 +7,39 @@ extends Node2D
@onready var player_2_score: Label = %Player2Score
@onready var game_text: Label = %GameText
var points: Vector2i = Vector2i(0, 0)
var game_mode = "idle"
var points := Vector2i(0, 0)
var game_mode := "idle"
func _ready() -> void:
ball.connect("game_over", Callable(self, "_on_game_over"))
ball.connect("game_over", Callable(self, "_on_game_over"))
func _input(event: InputEvent) -> void:
if event.is_action_pressed("space"):
if game_mode == "idle":
game_mode = "play"
game_text.visible = false
ball.serve()
elif game_mode == "play":
game_mode = "idle"
ball.reset()
elif event.is_action_pressed("esc"):
get_tree().quit()
if event.is_action_pressed("space"):
if game_mode == "idle":
game_mode = "play"
game_text.visible = false
ball.serve()
elif game_mode == "play":
game_mode = "idle"
ball.reset()
elif event.is_action_pressed("esc"):
get_tree().quit()
func _on_game_over(winning_player: int) -> void:
if winning_player == 1:
points.x += 1
else:
points.y += 1
player_1_score.text = str(points.x)
player_2_score.text = str(points.y)
game_mode = "idle"
if winning_player == 1:
points.x += 1
else:
points.y += 1
player_1_score.text = str(points.x)
player_2_score.text = str(points.y)
game_mode = "idle"
if points.x >= 10:
_game_over(1)
elif points.y >= 10:
_game_over(2)
if points.x >= 10:
_game_over(1)
elif points.y >= 10:
_game_over(2)
func _game_over(player_wins: int) -> void:
game_mode = "game_over"
game_text.text = "Game Over! Winning Player: " + str(player_wins)
game_text.visible = true
game_mode = "game_over"
game_text.text = "Game Over! Winning Player: " + str(player_wins)
game_text.visible = true

@ -5,10 +5,10 @@ const SPEED := 500
var direction: int
func _physics_process(delta: float) -> void:
var up_action = "player%dup" % player_number
var down_action = "player%ddown" % player_number
direction = int(Input.is_action_pressed(down_action)) - int(Input.is_action_pressed(up_action))
position.y += direction * SPEED * delta
position.y = clamp(position.y, 50, 600)
var up_action = "player%dup" % player_number
var down_action = "player%ddown" % player_number
direction = int(Input.is_action_pressed(down_action)) - int(Input.is_action_pressed(up_action))
position.y += direction * SPEED * delta
position.y = clamp(position.y, 50, 600)