Skip to content

Commit 147e2eb

Browse files
committed
Fixed logic in shooter tutorial.
1 parent 5e4ddc9 commit 147e2eb

File tree

1 file changed

+34
-14
lines changed

1 file changed

+34
-14
lines changed

tutorial-arcade-shooter.html

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ <h1>Player Shooting</h1>
9494
args.state.player.bullet_size ||= 3
9595
args.state.player.bullet_speed ||= 1.5
9696
args.state.player.bullet_path ||= 'sprites/circle-violet.png'
97+
98+
args.state.enemies ||= []
9799
end
98100

99101
def render args, player
@@ -120,15 +122,17 @@ <h1>Player Shooting</h1>
120122
player.y = player.y.greater(args.grid.bottom)
121123
player.y = player.y.lesser(args.grid.top - player.h)
122124

123-
player.bullets = player.bullets.select do |bullet|
124-
# Remove bullets that go off screen
125-
# If you remove this line of code
126-
# The label will show you how many bullets
127-
# are still being rendered
128-
bullet.intersect_rect? args.grid
129-
end.each do |bullet|
130-
# Move the player's bullets up the screen
125+
player.bullets = player.bullets.find_all do |bullet|
126+
bullet.intersect_rect? args.grid.rect
127+
end
128+
129+
player.bullets.each do |bullet|
131130
bullet.y += player.bullet_speed
131+
# Remove all enemies
132+
args.state.enemies.reject! do |enemy|
133+
# That a bullet is touching
134+
bullet.intersect_rect? enemy[:rect]
135+
end
132136
end
133137
end
134138

@@ -197,6 +201,10 @@ <h1>Enemies</h1>
197201
spawn_enemies args
198202
update_enemies args
199203
# Move each bullet
204+
args.state.enemy_bullets.reject! do |bullet|
205+
!bullet.intersect_rect? args.grid.rect
206+
end
207+
200208
args.state.enemy_bullets.each do | bullet |
201209
bullet.y -= args.state.enemy_bullet_speed
202210
end
@@ -329,6 +337,10 @@ <h1>Bringing it all together</h1>
329337
spawn_enemies args
330338
update_enemies args
331339

340+
args.state.enemy_bullets.reject! do |bullet|
341+
!bullet.intersect_rect? args.grid.rect
342+
end
343+
332344
args.state.enemy_bullets.each do | bullet |
333345
bullet.y -= args.state.enemy_bullet_speed
334346
end
@@ -342,9 +354,11 @@ <h1>Bringing it all together</h1>
342354
end
343355

344356
def update_player_bullets args, player
345-
player.bullets = player.bullets.select do |bullet|
346-
bullet.intersect_rect? args.grid
347-
end.each do |bullet|
357+
player.bullets = player.bullets.find_all do |bullet|
358+
bullet.intersect_rect? args.grid.rect
359+
end
360+
361+
player.bullets.each do |bullet|
348362
bullet.y += player.bullet_speed
349363
end
350364
end
@@ -502,6 +516,10 @@ <h1>Adding collisions</h1>
502516
player.h,
503517
]
504518

519+
args.state.enemy_bullets.reject! do |bullet|
520+
!bullet.intersect_rect? args.grid.rect
521+
end
522+
505523
args.state.enemy_bullets.each do | bullet |
506524
bullet.y -= args.state.enemy_bullet_speed
507525
# Reset the game
@@ -518,9 +536,11 @@ <h1>Adding collisions</h1>
518536
end
519537

520538
def update_player_bullets args, player
521-
player.bullets = player.bullets.select do |bullet|
522-
bullet.intersect_rect? args.grid
523-
end.each do |bullet|
539+
player.bullets = player.bullets.find_all do |bullet|
540+
bullet.intersect_rect? args.grid.rect
541+
end
542+
543+
player.bullets.each do |bullet|
524544
bullet.y += player.bullet_speed
525545
# Remove all enemies
526546
args.state.enemies.reject! do |enemy|

0 commit comments

Comments
 (0)