Skip to content

Commit 6214e2a

Browse files
committed
paddles move, fixing paddle and ball collision
1 parent 4d38bf3 commit 6214e2a

6 files changed

Lines changed: 102 additions & 4 deletions

File tree

TddAndPong/Episode4/project.godot

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,29 @@ config/icon="res://icon.png"
2222

2323
enabled=PoolStringArray( "gut" )
2424

25+
[input]
26+
27+
p1_up={
28+
"deadzone": 0.5,
29+
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null)
30+
]
31+
}
32+
p1_down={
33+
"deadzone": 0.5,
34+
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"unicode":0,"echo":false,"script":null)
35+
]
36+
}
37+
p2_up={
38+
"deadzone": 0.5,
39+
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null)
40+
]
41+
}
42+
p2_down={
43+
"deadzone": 0.5,
44+
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null)
45+
]
46+
}
47+
2548
[rendering]
2649

2750
environment/default_environment="res://default_env.tres"

TddAndPong/Episode4/scripts/game.gd

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,16 @@ extends Node2D
33
func _ready():
44
$Ball.set_speed(300)
55
$Ball.set_direction(Vector2(1, 1))
6-
6+
7+
$P1Paddle.set_speed(300)
8+
$P2Paddle.set_speed(300)
9+
10+
func _process(delta):
11+
if Input.is_action_pressed("p1_up"):
12+
$P1Paddle.move_up(delta)
13+
if Input.is_action_pressed("p1_down"):
14+
$P1Paddle.move_down(delta)
15+
if Input.is_action_pressed("p2_up"):
16+
$P2Paddle.move_up(delta)
17+
if Input.is_action_pressed("p2_down"):
18+
$P2Paddle.move_down(delta)

TddAndPong/Episode4/scripts/paddle.gd

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
extends Area2D
22

3+
var _speed = 10
4+
35
func bounce(ball):
46
var new_y = rand_range(-.5, .5)
57
var new_x = ball.get_direction().x * -1
@@ -12,3 +14,15 @@ func _draw():
1214

1315
func _on_Paddle_area_entered(area):
1416
bounce(area)
17+
18+
func get_speed():
19+
return _speed
20+
21+
func set_speed(speed):
22+
_speed = speed
23+
24+
func move_up(delta):
25+
set_position(get_position() + Vector2(0, delta * _speed * -1))
26+
27+
func move_down(delta):
28+
set_position(get_position() + Vector2(0, delta * _speed))

TddAndPong/Episode4/test/Tests.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ script = ExtResource( 1 )
1414
__meta__ = {
1515
"_editor_icon": ExtResource( 2 )
1616
}
17-
_select_script = "test_paddle"
17+
_select_script = "test_wall_and_paddle"
1818
_run_on_load = true
1919
_should_maximize = true
2020
_yield_between_tests = false
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
extends 'res://addons/gut/test.gd'
2+
3+
var Paddle = load('res://scenes/Paddle.tscn')
4+
var Wall = load('res://scenes/Wall.tscn')
5+
6+
func test_wall_and_paddle_can_collide_without_error():
7+
var paddle = Paddle.instance()
8+
var wall = Wall.instance()
9+
10+
wall.set_position(Vector2(80, 80))
11+
paddle.set_position(Vector2(100, 150))
12+
13+
add_child(paddle)
14+
add_child(wall)
15+
16+
paddle.set_speed(50)
17+
paddle.move_up(1)
18+
19+
yield(yield_for(.5), YIELD)
20+
assert_true(true, 'we got here')
21+
22+
# remove_child(paddle)
23+
# remove_child(wall)
24+

TddAndPong/Episode4/test/unit/test_paddle.gd

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ var Ball = load('res://scripts/ball.gd')
66
func test_can_make_paddle():
77
assert_not_null(Paddle.new())
88

9+
func test_can_get_set_speed():
10+
assert_accessors(Paddle.new(), 'speed', 10, 100)
11+
912
func test_bounce_inverts_x():
1013
var ball = double(Ball).new()
1114
var paddle = Paddle.new()
@@ -52,5 +55,27 @@ func test_bounce_changes_y_randomly():
5255

5356
assert_between(min_y, -.5, -.3)
5457
assert_between(max_y, .3, .5)
55-
56-
58+
59+
func test_move_up_moves_by_speed_times_delta():
60+
var paddle = Paddle.new()
61+
paddle.set_position(Vector2(0, 300))
62+
var orig_pos = paddle.get_position()
63+
paddle.set_speed(20)
64+
paddle.move_up(.5)
65+
assert_eq(paddle.get_position().y, orig_pos.y - 10, 'moves up by .5 * 20')
66+
67+
68+
func test_move_down_moves_by_speed_times_delta():
69+
var paddle = Paddle.new()
70+
paddle.set_position(Vector2(0, 300))
71+
var orig_pos = paddle.get_position()
72+
paddle.set_speed(30)
73+
paddle.move_down(.5)
74+
assert_eq(paddle.get_position().y, orig_pos.y + 15, 'moves up by .5 * 30')
75+
76+
77+
78+
79+
80+
81+

0 commit comments

Comments
 (0)