diff --git a/Battle Pong/Ball.gd b/Battle Pong/Ball.gd index ae707220fd4e87e478dd453a9e4e945c1ced3272..d56d1fd650da0c555fa91e8d8e91f60dee135985 100644 --- a/Battle Pong/Ball.gd +++ b/Battle Pong/Ball.gd @@ -41,7 +41,8 @@ func run(delta): ball_hit_paddle(get_tree().get_root().find_node("PlayerOne", true, false).position, get_tree().get_root().find_node("PlayerOne", true, false).get_shape(), true) elif collision.collider.name == "PlayerTwo": ball_hit_paddle(get_tree().get_root().find_node("PlayerTwo", true, false).position, get_tree().get_root().find_node("PlayerTwo", true, false).get_shape(), false) - + elif collision.collider.name =="Obstacle": + velocity = velocity.bounce(collision.normal) pass # velocity.x *=-1 # var localCollisionPos = collision.Position - collision.collider.Position; diff --git a/Battle Pong/GameSettings.gd b/Battle Pong/GameSettings.gd index a3e92d4cc6ade797867dcc1fec984402955d07db..905409a834de969eb1267e6d84b0de03d8434186 100644 --- a/Battle Pong/GameSettings.gd +++ b/Battle Pong/GameSettings.gd @@ -4,6 +4,7 @@ export var rendering_enabled = false export var learn_with_images = true export var trainings_mode_enabled = false export var local_two_player = false +export var obstacles_enabled = false # Constant values !!!! Keep always up to date !!! var display_window_width = 1024 diff --git a/Battle Pong/Main.gd b/Battle Pong/Main.gd index 43e797548303d62fcb1520e0c74fc0dcacb69f4f..e85c991680b5e313ffc7ebcb964d93f978812101 100644 --- a/Battle Pong/Main.gd +++ b/Battle Pong/Main.gd @@ -17,6 +17,8 @@ var action_player_two = InputEventAction.new() var next_step_player_two = false var action_trainer_two = "" + + var Ball = preload("Ball.tscn") var ball = Ball.instance() var score_player_one = 0 @@ -75,10 +77,16 @@ func _ready(): set_ball() $PlayerOne.start($StartPositionPlayerOne.position) $PlayerTwo.start($StartPositionPlayerTwo.position) + if $"/root/GameSettings".obstacles_enabled: + set_obstacle() + display_message() update_score() pause() +func set_obstacle(): + + $Obstacle.start($StartPositionObstacleTop.position) func _input(_event): if Input.is_key_pressed(KEY_SPACE): @@ -93,6 +101,7 @@ func play(): update_score() playing = true ball.set_playing(playing) + $Obstacle.set_playing(playing) $DisplayMessage.visible = false @@ -130,6 +139,8 @@ func handle_score_event(): display_message() playing = false score_event = false + $Obstacle.set_playing(playing) + func update_score(): @@ -173,6 +184,7 @@ func handle_game_end(): + func _on_PlayerTwo_hit(): ball.ball_hit_paddle($PlayerTwo.position, $PlayerTwo/CollisionShape2D.shape.extents, false) pass # Replace with function body. @@ -383,12 +395,14 @@ func pause(): ball.set_pause(true) $PlayerOne.set_pause(true) $PlayerTwo.set_pause(true) + $Obstacle.set_pause(true) func unpause(): #print("unpause") ball.set_pause(false) $PlayerOne.set_pause(false) $PlayerTwo.set_pause(false) + $Obstacle.set_pause(false) func _on_LocalTwoPlayerTimer_timeout(): @@ -396,5 +410,7 @@ func _on_LocalTwoPlayerTimer_timeout(): $PlayerOne.run(game_playtime_per_step) $PlayerTwo.run(game_playtime_per_step) ball.run(game_playtime_per_step) + if $"/root/GameSettings".obstacles_enabled: + $Obstacle.run(game_playtime_per_step) timeout() pass # Replace with function body. diff --git a/Battle Pong/Main.tscn b/Battle Pong/Main.tscn index 1684f90fc939ea2a276a80a92abd2534c0fa8794..4b84899c2e7504ca528b5432c09bfb40af6ca75e 100644 --- a/Battle Pong/Main.tscn +++ b/Battle Pong/Main.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://Player.tscn" type="PackedScene" id=1] [ext_resource path="res://Main.gd" type="Script" id=2] [ext_resource path="res://Wall.tscn" type="PackedScene" id=3] +[ext_resource path="res://Obstacle.tscn" type="PackedScene" id=4] +[ext_resource path="res://Obstacle.gd" type="Script" id=5] [node name="Node2D" type="Node2D"] pause_mode = 2 @@ -85,6 +87,15 @@ position = Vector2( 0, 600 ) [node name="LocalTwoPlayerTimer" type="Timer" parent="."] wait_time = 0.01 + +[node name="Obstacle" parent="." instance=ExtResource( 4 )] +script = ExtResource( 5 ) + +[node name="StartPositionObstacleTop" type="Position2D" parent="."] +position = Vector2( 512, 0 ) + +[node name="StartPositionObstacleBottom" type="Position2D" parent="."] +position = Vector2( 512, 600 ) [connection signal="hit" from="PlayerTwo" to="." method="_on_PlayerTwo_hit"] [connection signal="hit" from="PlayerOne" to="." method="_on_PlayerOne_hit"] [connection signal="timeout" from="LocalTwoPlayerTimer" to="." method="_on_LocalTwoPlayerTimer_timeout"] diff --git a/Battle Pong/MainMenu.gd b/Battle Pong/MainMenu.gd index 15e891560a79f9d48f6bbd6c76835d7be67f975b..201d0806f21fc94dd4a0b615d8090c677fcacf18 100644 --- a/Battle Pong/MainMenu.gd +++ b/Battle Pong/MainMenu.gd @@ -71,3 +71,9 @@ func _on_but_trainer_with_position_pressed(): func _on_but_settings_pressed(): get_tree().change_scene("res://SettingsWindow.tscn") + + +func _on_ckb_Obstackles_pressed(): + $"/root/GameSettings".obstacles_enabled = $HBoxContainer/VBoxContainer/ckb_Obstackles.pressed + print($"/root/GameSettings".obstacles_enabled) + pass # Replace with function body. diff --git a/Battle Pong/MainMenu.tscn b/Battle Pong/MainMenu.tscn index 3e316c4166b0da2f18552ea68b40dc80f74de779..b1c8eb75005b54a2fc540c30b580f0770084dee8 100644 --- a/Battle Pong/MainMenu.tscn +++ b/Battle Pong/MainMenu.tscn @@ -24,46 +24,53 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="vbox_two_learner" type="VBoxContainer" parent="."] +[node name="HBoxContainer" type="HBoxContainer" parent="."] anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 margin_left = -132.5 -margin_top = -92.0 +margin_top = -80.0 margin_right = 132.5 -margin_bottom = 92.0 +margin_bottom = 80.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="vbox_two_learner" type="VBoxContainer" parent="HBoxContainer"] +margin_right = 265.0 +margin_bottom = 160.0 __meta__ = { "_edit_use_anchors_": false } -[node name="but_local_two_player" type="Button" parent="vbox_two_learner"] +[node name="but_local_two_player" type="Button" parent="HBoxContainer/vbox_two_learner"] margin_right = 265.0 margin_bottom = 20.0 text = "Local 2 Player" -[node name="HSeparator2" type="HSeparator" parent="vbox_two_learner"] +[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/vbox_two_learner"] margin_top = 24.0 margin_right = 265.0 margin_bottom = 28.0 -[node name="but_two_re_with_images" type="Button" parent="vbox_two_learner"] +[node name="but_two_re_with_images" type="Button" parent="HBoxContainer/vbox_two_learner"] margin_top = 32.0 margin_right = 265.0 margin_bottom = 52.0 text = "2 RE with Images" -[node name="HBoxContainer" type="HBoxContainer" parent="vbox_two_learner"] +[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/vbox_two_learner"] margin_top = 56.0 margin_right = 265.0 margin_bottom = 80.0 -[node name="but_two_re_with_position" type="Button" parent="vbox_two_learner/HBoxContainer"] +[node name="but_two_re_with_position" type="Button" parent="HBoxContainer/vbox_two_learner/HBoxContainer"] margin_right = 126.0 margin_bottom = 24.0 text = "2 RE with Position" -[node name="cb_rendering_enabled" type="CheckBox" parent="vbox_two_learner/HBoxContainer"] +[node name="cb_rendering_enabled" type="CheckBox" parent="HBoxContainer/vbox_two_learner/HBoxContainer"] margin_left = 130.0 margin_right = 265.0 margin_bottom = 24.0 @@ -72,29 +79,50 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="HSeparator" type="HSeparator" parent="vbox_two_learner"] +[node name="HSeparator" type="HSeparator" parent="HBoxContainer/vbox_two_learner"] margin_top = 84.0 margin_right = 265.0 margin_bottom = 88.0 -[node name="but_trainer_with_images" type="Button" parent="vbox_two_learner"] +[node name="but_trainer_with_images" type="Button" parent="HBoxContainer/vbox_two_learner"] margin_top = 92.0 margin_right = 265.0 margin_bottom = 112.0 text = "RE Trainer with Images" -[node name="but_trainer_with_position" type="Button" parent="vbox_two_learner"] +[node name="but_trainer_with_position" type="Button" parent="HBoxContainer/vbox_two_learner"] margin_top = 116.0 margin_right = 265.0 margin_bottom = 136.0 text = "RE Trainer with Position" -[node name="but_settings" type="Button" parent="vbox_two_learner"] +[node name="but_settings" type="Button" parent="HBoxContainer/vbox_two_learner"] margin_top = 140.0 margin_right = 265.0 margin_bottom = 160.0 text = "Settings" +[node name="VSeparator" type="VSeparator" parent="HBoxContainer"] +margin_left = 269.0 +margin_right = 273.0 +margin_bottom = 160.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] +margin_left = 277.0 +margin_right = 421.0 +margin_bottom = 160.0 + +[node name="lbl_GameModifier" type="Label" parent="HBoxContainer/VBoxContainer"] +margin_right = 144.0 +margin_bottom = 14.0 +text = "Game Modifier" + +[node name="ckb_Obstackles" type="CheckButton" parent="HBoxContainer/VBoxContainer"] +margin_top = 18.0 +margin_right = 144.0 +margin_bottom = 58.0 +text = "Obstacles" + [node name="lbl_game_running" type="Label" parent="."] visible = false anchor_left = 0.5 @@ -107,10 +135,11 @@ text = "Game runs without rendering" __meta__ = { "_edit_use_anchors_": false } -[connection signal="pressed" from="vbox_two_learner/but_local_two_player" to="." method="_on_but_local_two_player_pressed"] -[connection signal="pressed" from="vbox_two_learner/but_two_re_with_images" to="." method="_on_but_two_re_with_images_pressed"] -[connection signal="pressed" from="vbox_two_learner/HBoxContainer/but_two_re_with_position" to="." method="_on_but_two_re_with_position_pressed"] -[connection signal="pressed" from="vbox_two_learner/HBoxContainer/cb_rendering_enabled" to="." method="_on_cb_rendering_enabled_pressed"] -[connection signal="pressed" from="vbox_two_learner/but_trainer_with_images" to="." method="_on_but_trainer_with_images_pressed"] -[connection signal="pressed" from="vbox_two_learner/but_trainer_with_position" to="." method="_on_but_trainer_with_position_pressed"] -[connection signal="pressed" from="vbox_two_learner/but_settings" to="." method="_on_but_settings_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/but_local_two_player" to="." method="_on_but_local_two_player_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/but_two_re_with_images" to="." method="_on_but_two_re_with_images_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/HBoxContainer/but_two_re_with_position" to="." method="_on_but_two_re_with_position_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/HBoxContainer/cb_rendering_enabled" to="." method="_on_cb_rendering_enabled_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/but_trainer_with_images" to="." method="_on_but_trainer_with_images_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/but_trainer_with_position" to="." method="_on_but_trainer_with_position_pressed"] +[connection signal="pressed" from="HBoxContainer/vbox_two_learner/but_settings" to="." method="_on_but_settings_pressed"] +[connection signal="pressed" from="HBoxContainer/VBoxContainer/ckb_Obstackles" to="." method="_on_ckb_Obstackles_pressed"] diff --git a/Battle Pong/Obstacle.gd b/Battle Pong/Obstacle.gd new file mode 100644 index 0000000000000000000000000000000000000000..4cbc8b55fa235001b091ce2c8da994e1badd7e97 --- /dev/null +++ b/Battle Pong/Obstacle.gd @@ -0,0 +1,63 @@ +extends StaticBody2D + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" +var min_speed = 300 +var max_speed = 700 +var speed=0 +var start_position +var playing = false +var is_paused = true +var obstacle_size +var top_position +var bottom_position +# Called when the node enters the scene tree for the first time. +func _ready(): + randomize() + #speed = rand_range(min_speed, max_speed) + speed = 500 + + obstacle_size =$CollisionShape2D.shape.extents + top_position = 0- obstacle_size.y + bottom_position = $"/root/GameSettings".display_window_height + obstacle_size.y + pass # Replace with function body. + + +func run(delta): + if playing and not is_paused: + self.rotation = 0 + #self.linear_velocity = Vector2(dx, dy) * delta * speed + #var move = velocity.normalized() * delta * speed + #print(delta) + #var collision = self.move(move, false) + + + var velocity = Vector2() # The player's movement vector. + # Hier kommt die Erweiterung hin um Obstacles von oben oder unten kommen zu lassen + #if true: + velocity.y += 1 + # else: + # velocity.y -= 1 + + if velocity.length() > 0: + velocity = velocity.normalized() * speed + + position += velocity * delta + if position.y >bottom_position: + position = start_position + +func start(pos): + start_position = pos + start_position.y = top_position + position = start_position + show() + +func set_playing(_playing): + playing = _playing + +func set_pause(value): + get_tree().paused=value + is_paused = value + diff --git a/Battle Pong/Obstacle.tscn b/Battle Pong/Obstacle.tscn index 0db91a4ab8adb97cd5fc925662b894427c8106f4..690bd3d67d21484e2f64ad5be0d92a028367aa8d 100644 --- a/Battle Pong/Obstacle.tscn +++ b/Battle Pong/Obstacle.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=2 format=2] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 19.9777, 20.0466 ) +extents = Vector2( 12.0822, 49.3651 ) [node name="Obstacle" type="StaticBody2D"] pause_mode = 1 @@ -12,10 +12,10 @@ collision_mask = 8 shape = SubResource( 1 ) [node name="ColorRect" type="ColorRect" parent="."] -margin_left = -20.0 -margin_top = -20.0 -margin_right = 20.0 -margin_bottom = 20.0 +margin_left = -12.0 +margin_top = -49.0 +margin_right = 12.0 +margin_bottom = 49.0 color = Color( 0, 0.0862745, 1, 1 ) __meta__ = { "_edit_use_anchors_": false