class Player
Attributes
bullet[R]
level[R]
speed[R]
Public Class Methods
new(x, y, map, player2=false)
click to toggle source
Calls superclass method
Tank::new
# File lib/entities/player.rb, line 6 def initialize(x, y, map, player2=false) super(x, y, :up) @player2 = player2 @level = 1 @speed = 2 @spritedb = create_sprites(player2) @sprite = get_sprite @bullet = nil @map = map end
Public Instance Methods
collision_detect(objects)
click to toggle source
# File lib/entities/player.rb, line 74 def collision_detect(objects) objects.each do |o| if collide?(o) && o != @missile # puts "#{self} coliding with #{o}" if (o.is_a?(Upgrade)) upgrade_taken(o) elsif @moving && o != @missile return_back end end end nil end
create_sprites(player2)
click to toggle source
# File lib/entities/player.rb, line 112 def create_sprites(player2) return { :player_up => Sprite.new( :player2_1up, false), :player_left => Sprite.new( :player2_1left, false), :player_down => Sprite.new( :player2_1down, false), :player_right => Sprite.new( :player2_1right, false) } if player2 && @level == 1 return { :player_up => Sprite.new( :player1_1up, false), :player_left => Sprite.new( :player1_1left, false), :player_down => Sprite.new( :player1_1down, false), :player_right => Sprite.new( :player1_1right, false) } if !player2 && @level == 1 return { :player_up => Sprite.new( :player2_2up, false), :player_left => Sprite.new( :player2_2left, false), :player_down => Sprite.new( :player2_2down, false), :player_right => Sprite.new( :player2_2right, false) } if player2 && @level == 2 return { :player_up => Sprite.new( :player1_2up, false), :player_left => Sprite.new( :player1_2left, false), :player_down => Sprite.new( :player1_2down, false), :player_right => Sprite.new( :player1_2right, false) } if !player2 && @level == 2 return { :player_up => Sprite.new( :player2_3up, false), :player_left => Sprite.new( :player2_3left, false), :player_down => Sprite.new( :player2_3down, false), :player_right => Sprite.new( :player2_3right, false) } if player2 && @level == 3 return { :player_up => Sprite.new( :player1_3up, false), :player_left => Sprite.new( :player1_3left, false), :player_down => Sprite.new( :player1_3down, false), :player_right => Sprite.new( :player1_3right, false) } if !player2 && @level == 3 return { :player_up => Sprite.new( :player2_4up, false), :player_left => Sprite.new( :player2_4left, false), :player_down => Sprite.new( :player2_4down, false), :player_right => Sprite.new( :player2_4right, false) } if player2 && @level == 4 return { :player_up => Sprite.new( :player1_4up, false), :player_left => Sprite.new( :player1_4left, false), :player_down => Sprite.new( :player1_4down, false), :player_right => Sprite.new( :player1_4right, false) } if !player2 && @level == 4 end
get_sprite()
click to toggle source
# File lib/entities/player.rb, line 67 def get_sprite return @spritedb[:player_up] if @direction == :up return @spritedb[:player_left] if @direction == :left return @spritedb[:player_right] if @direction == :right return @spritedb[:player_down] if @direction == :down end
hitted(obj)
click to toggle source
# File lib/entities/player.rb, line 95 def hitted(obj) @done = true @sprite.done = true @map.add_explosion(@x, @y) end
input(input)
click to toggle source
# File lib/entities/player.rb, line 17 def input(input) missile = nil if @player2 missile = input_p2(input) else @moving = true if input.include?(:p1up) @direction = :up elsif input.include?(:p1left) @direction = :left elsif input.include?(:p1down) @direction = :down elsif input.include?(:p1right) @direction = :right else @moving = false end missile = shoot if (input.include?(:p1shoot)) end missile end
input_p2(input)
click to toggle source
# File lib/entities/player.rb, line 39 def input_p2(input) missile = nil @moving = true if input.include?(:p2up) @direction = :up elsif input.include?(:p2left) @direction = :left elsif input.include?(:p2down) @direction = :down elsif input.include?(:p2right) @direction = :right else @moving = false end missile = shoot if (input.include?(:p2shoot)) missile end
level_up()
click to toggle source
# File lib/entities/player.rb, line 88 def level_up return if @level == 4 @level += 1 @speed += 0.5 @spritedb = create_sprites(@player2) end
update()
click to toggle source
Calls superclass method
Tank#update
# File lib/entities/player.rb, line 57 def update super return if done? move if @moving @sprite = get_sprite @sprite.pause = !@moving @sprite.update check_missile end
upgrade_taken(upgrade)
click to toggle source
# File lib/entities/player.rb, line 101 def upgrade_taken(upgrade) if upgrade.type == :powerup_star level_up elsif upgrade.type == :powerup_timer @map.upgrade_timer elsif upgrade.type == :powerup_granade @map.upgrade_granade end upgrade.taken(self) end