class SpaceInvaders::RedInvader

Attributes

dead[RW]
dead?[RW]

Public Class Methods

new(app, x_position=0, y_position=50) click to toggle source
Calls superclass method SpaceInvaders::Invader::new
# File lib/space_invaders/invaders/red_invader.rb, line 9
def initialize app, x_position=0, y_position=50
  @first_image = app.images.red_invader
  @second_image = app.images.red_invader
  @can_move = Time.now
  @direction = :right
  @dead = false
  super
end

Public Instance Methods

alive?() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 22
def alive?
  not dead?
end
can_move?() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 61
def can_move?
  Time.now - @can_move > 0.1
end
draw() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 38
def draw
  return if dead?
  @image.draw @x_position, @y_position, 1
end
handle_death() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 43
def handle_death
  @dead = true
  app.score_tracker.increase_by(points)
  app.sounds.play_invader_hit!
end
points() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 18
def points
  100
end
rival_bullets() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 57
def rival_bullets
  app.ship.bullets
end
set_direction() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 49
def set_direction
  if @x_position >= app.width - 80
    @direction = :left
  elsif @x_position <= 20
    @direction = :right
  end
end
update() click to toggle source
# File lib/space_invaders/invaders/red_invader.rb, line 26
def update
  return if dead?

  if collides_with? rival_bullets
    handle_death
  elsif can_move?
    set_direction
    @x_position += @direction == :right ? 10 : -10
    @can_move = Time.now
  end
end