New pong demo that uses Godot as intended, erased old one.

This commit is contained in:
Juan Linietsky
2017-06-25 20:40:04 -03:00
parent 023521c1c9
commit 8f6370f13d
24 changed files with 375 additions and 122 deletions

16
2d/pong/ball.gd Normal file
View File

@@ -0,0 +1,16 @@
extends Area2D
const BALL_SPEED = 100
var direction = Vector2(-1,0)
var speed = BALL_SPEED
onready var initial_pos = get_position()
func reset():
position = initial_pos
speed = BALL_SPEED
direction = Vector2(-1,0)
func _process(delta):
position += direction * speed * delta

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

23
2d/pong/ball.png.import Normal file
View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/ball.png-9a4ca347acb7532f6ae347744a6b04f7.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

7
2d/pong/ceiling_floor.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Area2D
export var y_direction = 1
func _on_area_entered( area ):
if (area.get_name()=="ball"):
area.direction.y = y_direction

View File

Before

Width:  |  Height:  |  Size: 956 B

After

Width:  |  Height:  |  Size: 956 B

23
2d/pong/icon.png.import Normal file
View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

View File

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 200 B

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/left_pallete.png-bc33611074a0f886142e37c77bd2545a.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

20
2d/pong/paddle.gd Normal file
View File

@@ -0,0 +1,20 @@
extends Area2D
export var ball_dir=1
const MOVE_SPEED=100
func _process(delta):
var which = get_name()
# move up and down based on input
if (Input.is_action_pressed(which+"_move_up") and position.y > 0):
position.y -= MOVE_SPEED * delta
if (Input.is_action_pressed(which+"_move_down") and position.y < 640):
position.y += MOVE_SPEED * delta
func _on_area_entered( area ):
if area.get_name() == "ball":
# assign new direction
area.direction = Vector2(ball_dir,randf() * 2 - 1).normalized()

186
2d/pong/pong.tscn Normal file
View File

@@ -0,0 +1,186 @@
[gd_scene load_steps=13 format=2]
[ext_resource path="res://paddle.gd" type="Script" id=1]
[ext_resource path="res://left_pallete.png" type="Texture" id=2]
[ext_resource path="res://right_pallete.png" type="Texture" id=3]
[ext_resource path="res://ball.gd" type="Script" id=4]
[ext_resource path="res://ball.png" type="Texture" id=5]
[ext_resource path="res://separator.png" type="Texture" id=6]
[ext_resource path="res://wall.gd" type="Script" id=7]
[ext_resource path="res://ceiling_floor.gd" type="Script" id=8]
[sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0
extents = Vector2( 4, 16 )
[sub_resource type="RectangleShape2D" id=2]
custom_solver_bias = 0.0
extents = Vector2( 4, 4 )
[sub_resource type="RectangleShape2D" id=3]
custom_solver_bias = 0.0
extents = Vector2( 10, 200 )
[sub_resource type="RectangleShape2D" id=4]
custom_solver_bias = 0.0
extents = Vector2( 320, 10 )
[node name="game" type="Node2D"]
[node name="left" type="Area2D" parent="."]
position = Vector2( 67.6285, 192.594 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 1 )
ball_dir = 1
[node name="sprite" type="Sprite" parent="left"]
texture = ExtResource( 2 )
_sections_unfolded = [ "Transform" ]
[node name="collision" type="CollisionShape2D" parent="left"]
shape = SubResource( 1 )
[node name="right" type="Area2D" parent="."]
position = Vector2( 563.815, 188.919 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 1 )
ball_dir = -1
[node name="sprite" type="Sprite" parent="right"]
texture = ExtResource( 3 )
_sections_unfolded = [ "Transform" ]
[node name="collision" type="CollisionShape2D" parent="right"]
shape = SubResource( 1 )
[node name="ball" type="Area2D" parent="."]
position = Vector2( 320.5, 191.124 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 4 )
[node name="sprite" type="Sprite" parent="ball"]
texture = ExtResource( 5 )
_sections_unfolded = [ "Transform" ]
[node name="collision" type="CollisionShape2D" parent="ball"]
shape = SubResource( 2 )
[node name="separator" type="Sprite" parent="."]
position = Vector2( 320, 200 )
texture = ExtResource( 6 )
[node name="left_wall" type="Area2D" parent="."]
position = Vector2( -10, 200 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 7 )
_sections_unfolded = [ "Transform" ]
[node name="collision" type="CollisionShape2D" parent="left_wall"]
shape = SubResource( 3 )
[node name="right_wall" type="Area2D" parent="."]
position = Vector2( 650, 200 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 7 )
_sections_unfolded = [ "Transform" ]
[node name="collision" type="CollisionShape2D" parent="right_wall"]
shape = SubResource( 3 )
[node name="ceiling" type="Area2D" parent="."]
position = Vector2( 320, -10 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 8 )
_sections_unfolded = [ "Transform" ]
y_direction = 1
[node name="collision" type="CollisionShape2D" parent="ceiling"]
shape = SubResource( 4 )
[node name="floor" type="Area2D" parent="."]
position = Vector2( 320, 410 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
audio_bus_override = false
audio_bus_name = "Master"
script = ExtResource( 8 )
_sections_unfolded = [ "Transform" ]
y_direction = -1
[node name="collision" type="CollisionShape2D" parent="floor"]
shape = SubResource( 4 )
[connection signal="area_entered" from="left" to="left" method="_on_area_entered"]
[connection signal="area_entered" from="right" to="right" method="_on_area_entered"]
[connection signal="area_entered" from="left_wall" to="left_wall" method="_on_wall_area_entered"]
[connection signal="area_entered" from="right_wall" to="right_wall" method="_on_wall_area_entered"]
[connection signal="area_entered" from="ceiling" to="ceiling" method="_on_area_entered"]
[connection signal="area_entered" from="floor" to="floor" method="_on_area_entered"]

23
2d/pong/project.godot Normal file
View File

@@ -0,0 +1,23 @@
[application]
icon = "res://icon.png"
main_scene = "pong.tscn"
name = "Pong"
[display]
stretch_2d = true
window/height = 400
window/width = 640
[input]
left_move_down = [ InputEvent(KEY,90) ]
left_move_up = [ InputEvent(KEY,65) ]
right_move_down = [ InputEvent(KEY,16777234) ]
right_move_up = [ InputEvent(KEY,16777232) ]
[rendering]
viewport/default_clear_color = Color( 0, 0, 0, 1 )

View File

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 202 B

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/right_pallete.png-fc6e4a6a7c8197834656482b94708e47.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

View File

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 203 B

View File

@@ -0,0 +1,23 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/separator.png-f981c8489b9148e2e1dc63398273da74.stex"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true

8
2d/pong/wall.gd Normal file
View File

@@ -0,0 +1,8 @@
extends Area2D
func _on_wall_area_entered( area ):
if (area.get_name() == "ball"):
#oops, ball went out of game place, reset
area.reset()

View File

@@ -1,22 +0,0 @@
[application]
name="Pong"
main_scene="pong.tscn"
icon="res://icon.png"
[display]
width=640
height=400
stretch_2d=true
[input]
left_move_up=[key(A)]
left_move_down=[key(Z)]
right_move_up=[key(Up)]
right_move_down=[key(Down)]
[render]
default_clear_color=#ff000000

View File

@@ -1,67 +0,0 @@
extends Node2D
# Member variables
const INITIAL_BALL_SPEED = 80
var ball_speed = INITIAL_BALL_SPEED
var screen_size = Vector2(640, 400)
# Default ball direction
var direction = Vector2(-1, 0)
var pad_size = Vector2(8, 32)
const PAD_SPEED = 150
func _process(delta):
# Get ball position and pad rectangles
var ball_pos = get_node("ball").get_pos()
var left_rect = Rect2(get_node("left").get_pos() - pad_size*0.5, pad_size)
var right_rect = Rect2(get_node("right").get_pos() - pad_size*0.5, pad_size)
# Integrate new ball postion
ball_pos += direction*ball_speed*delta
# Flip when touching roof or floor
if ((ball_pos.y < 0 and direction.y < 0) or (ball_pos.y > screen_size.y and direction.y > 0)):
direction.y = -direction.y
# Flip, change direction and increase speed when touching pads
if ((left_rect.has_point(ball_pos) and direction.x < 0) or (right_rect.has_point(ball_pos) and direction.x > 0)):
direction.x = -direction.x
ball_speed *= 1.1
direction.y = randf()*2.0 - 1
direction = direction.normalized()
# Check gameover
if (ball_pos.x < 0 or ball_pos.x > screen_size.x):
ball_pos = screen_size*0.5
ball_speed = INITIAL_BALL_SPEED
direction = Vector2(-1, 0)
get_node("ball").set_pos(ball_pos)
# Move left pad
var left_pos = get_node("left").get_pos()
if (left_pos.y > 0 and Input.is_action_pressed("left_move_up")):
left_pos.y += -PAD_SPEED*delta
if (left_pos.y < screen_size.y and Input.is_action_pressed("left_move_down")):
left_pos.y += PAD_SPEED*delta
get_node("left").set_pos(left_pos)
# Move right pad
var right_pos = get_node("right").get_pos()
if (right_pos.y > 0 and Input.is_action_pressed("right_move_up")):
right_pos.y += -PAD_SPEED*delta
if (right_pos.y < screen_size.y and Input.is_action_pressed("right_move_down")):
right_pos.y += PAD_SPEED*delta
get_node("right").set_pos(right_pos)
func _ready():
screen_size = get_viewport_rect().size # Get actual size
pad_size = get_node("left").get_texture().get_size()
set_process(true)

View File

@@ -1,33 +0,0 @@
[gd_scene load_steps=6 format=1]
[ext_resource path="res://pong.gd" type="Script" id=1]
[ext_resource path="res://left_pallete.png" type="Texture" id=2]
[ext_resource path="res://right_pallete.png" type="Texture" id=3]
[ext_resource path="res://separator.png" type="Texture" id=4]
[ext_resource path="res://ball.png" type="Texture" id=5]
[node name="game" type="Node2D"]
script/script = ExtResource( 1 )
[node name="left" type="Sprite" parent="."]
transform/pos = Vector2( 67.6875, 183.208 )
texture = ExtResource( 2 )
[node name="right" type="Sprite" parent="."]
transform/pos = Vector2( 577, 187 )
texture = ExtResource( 3 )
[node name="separator" type="Sprite" parent="."]
transform/pos = Vector2( 320, 200 )
texture = ExtResource( 4 )
[node name="ball" type="Sprite" parent="."]
transform/pos = Vector2( 320.283, 188 )
texture = ExtResource( 5 )