class Enemy
class Enemy
Attributes
bullet[R]
Public Class Methods
new(x, y, map, level = 1)
click to toggle source
Calls superclass method
Tank::new
# File lib/entities/enemy.rb, line 8 def initialize(x, y, map, level = 1) super(x, y, :down) @newtank = 200 @level = level @spritedb = create_sprites @sprite = get_sprite @bullet = nil @map = map @ai = AI.new(self, @map) @lifes = level @lifes = 1 if level == 5 @speed = 2 if level == 5 end
Public Instance Methods
ai()
click to toggle source
# File lib/entities/enemy.rb, line 62 def ai return if @newtank > 0 @ai.step end
collision_detect(objects)
click to toggle source
# File lib/entities/enemy.rb, line 41 def collision_detect(objects) return if @newtank > 0 objects.each do |o| if collide?(o) return nil if o.is_a?(Upgrade) || o.is_a?(Bullet) return nil if o.is_a?(Enemy) && o.immortal? # puts "#{self} coliding with #{o}" return_back end end nil end
create_sprites()
click to toggle source
# File lib/entities/enemy.rb, line 71 def create_sprites return { :enemy_up => Sprite.new(:enemy1up, false), :enemy_left => Sprite.new(:enemy1left, false), :enemy_down => Sprite.new(:enemy1down, false), :enemy_right => Sprite.new(:enemy1right, false), :newtank => Sprite.new(:newtank, 100) } if @level == 1 return { :enemy_up => Sprite.new(:enemy2up, false), :enemy_left => Sprite.new(:enemy2left, false), :enemy_down => Sprite.new(:enemy2down, false), :enemy_right => Sprite.new(:enemy2right, false), :newtank => Sprite.new(:newtank, true) } if @level == 2 return { :enemy_up => Sprite.new(:enemy3up, false), :enemy_left => Sprite.new(:enemy3left, false), :enemy_down => Sprite.new(:enemy3down, false), :enemy_right => Sprite.new(:enemy3right, false), :newtank => Sprite.new(:newtank, true) } if @level == 3 return { :enemy_up => Sprite.new(:enemy4up, false), :enemy_left => Sprite.new(:enemy4left, false), :enemy_down => Sprite.new(:enemy4down, false), :enemy_right => Sprite.new(:enemy4right, false), :newtank => Sprite.new(:newtank, true) } if @level == 4 return { :enemy_up => Sprite.new(:enemy5up, false), :enemy_left => Sprite.new(:enemy5left, false), :enemy_down => Sprite.new(:enemy5down, false), :enemy_right => Sprite.new(:enemy5right, false), :newtank => Sprite.new(:newtank, true) } if @level == 5 end
get_sprite()
click to toggle source
# File lib/entities/enemy.rb, line 33 def get_sprite return @spritedb[:newtank] if @newtank > 0 return @spritedb[:enemy_up] if @direction == :up return @spritedb[:enemy_left] if @direction == :left return @spritedb[:enemy_right] if @direction == :right return @spritedb[:enemy_down] if @direction == :down end
hitted(_obj)
click to toggle source
# File lib/entities/enemy.rb, line 54 def hitted(_obj) @lifes -= 1 return if @lifes > 0 @done = true @sprite.done = true @map.add_explosion(@x, @y) end
immortal?()
click to toggle source
# File lib/entities/enemy.rb, line 67 def immortal? @newtank > 0 end
update()
click to toggle source
Calls superclass method
Tank#update
# File lib/entities/enemy.rb, line 22 def update super @newtank -= 1 if @newtank > 0 return if done? move if @moving @sprite = get_sprite @sprite.repeat = @moving @sprite.update check_missile end