-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestSimpleGames.rb
93 lines (86 loc) · 2.16 KB
/
testSimpleGames.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require "./simplegames.rb"
include SimpleGames
class MyScreen < Screen
def initialize
super
@lives = 5
@score = 0
end
def down_button
unless @sprites[:ship].y >= @height
@sprites[:ship].y += 10
end
end
def up_button
unless @sprites[:ship].y == 0
@sprites[:ship].y -= 10
end
end
def right_button
unless @sprites[:ship].x >= @width
@sprites[:ship].x += 10
end
end
def left_button
unless @sprites[:ship].x == 0
@sprites[:ship].x -= 10
end
end
def space_bar
unless @bullet_active
@bullet_active = true
@sprites[:bullet].x = @sprites[:ship].x + 50
@sprites[:bullet].y = @sprites[:ship].y + 50
end
end
def draw
super
@font.draw("Lives: #{@lives}", 10, 10, 2, 1.0, 1.0, 0xffffffff)
@font.draw("Score: #{@score}", 10, 50, 2, 1.0, 1.0, 0xffffffff)
if @lives == 0
@font.draw("GAME OVER", 100, 100, 2, 3.0, 3.0, 0xffff0000)
end
end
def update
super
if @sprites[:asteroid].x > -10
@sprites[:asteroid].x -= 20
else
# puts @sprites[:asteroid].x
@sprites[:asteroid].x = 800
@sprites[:asteroid].y = rand(600)
end
if collision(:ship, :asteroid)
puts "Kaboom!"
@lives -= 1
if @lives == 0
@sprites[:ship].x = 2000
@sprites[:ship].y = 2000
else
@sprites[:ship].x = 10
@sprites[:ship].y = 10
end
end
if collision(:bullet, :asteroid)
@sprites[:asteroid].x = 800
@sprites[:asteroid].y = rand(600)
@bullet_active = false
@sprites[:bullet].x = 810
@score += 1
end
if @bullet_active
@sprites[:bullet].x += 10
end
if @sprites[:bullet].x >= 1810
@bullet_active = false
end
end
end
screen = MyScreen.new
Sprite.new(:ship, "forward.png", screen, 0, 0, 50)
Sprite.new(:asteroid, "asteroid.png", screen,800,rand(600))
Sprite.new(:bullet, "bullet.png", screen, -10, -10)
@bullet_active = false
puts "#{screen.sprites[:ship].bounding_height} high and #{screen.sprites[:ship].bounding_width}"
puts "#{screen.sprites[:asteroid].bounding_height} high and #{screen.sprites[:asteroid].bounding_width}"
screen.show