Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[Community] The community evolutionary XP scripting project

Submission
[ruby]# Based on: Script by MicKo
# Changes: 5 of 5 lines added, 1 of 3 lines modified
 
class Bitmap
  #--------------------------------------------------------------------------
  # credit for this goes to Trickster, as it's taken from the MACL
  def draw_circle(x, y, radius, color = Color.new(255, 255, 255, 255))
    for i in (x - radius)..(x + radius) # MOD
      sa = (x - i).abs # ADD
      x_ = i < x ? x - sa : i == x ? x : x + sa # ADD
      y_ = Integer((radius ** 2 - sa ** 2) ** 0.5) # ADD
      self.fill_rect(x_, y - y_, 1, y_ * 2, color) # ADD
    end # ADD
  end
  #-------------------------------------------------------------------------
end
 
class Scene_OurScene
  #--------------------------------------------------------------------------
  def initialize(level = 1)
    @level = level
    @sprite = Sprite.new
    @sprite.x = 304
    @sprite.y = 224
    @sprite.bitmap = Bitmap.new(32, 32)
    @sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(196, 196, 196))
    @hole_sprite = Sprite.new
    @hole_sprite.x = 484
    @hole_sprite.y = 89
    @hole_sprite.bitmap = Bitmap.new(32, 32)
    @hole_sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(72, 120, 0))
    @hole_sprite.ox = @hole_sprite.bitmap.width / 2
    @hole_sprite.oy = @hole_sprite.bitmap.height / 2
    @hole_sprite.z = @sprite.z - 1
    @speed = [9, 27]
    @current_speed = @speed[0]
    @score = 0
    @score_max = (level ** 1.5 * 20).to_i
    @score_sprite = Sprite.new
    @score_sprite.bitmap = Bitmap.new("Score: #{@score_max}".size * Font.default_size, 40)
    @score_sprite.x = 10
    @score_sprite.bitmap.draw_text(0,0, "Score: #{@score_max}".size * Font.default_size, 40, "Score: #{@score}", 0)
    @hole_timer = 10 - (level - 1) * 0.1
    @timer_sprite = Sprite.new
    @timer_sprite.x = 630 - @hole_timer.to_s.size * Font.default_size
    @timer_sprite.y = @score_sprite.y = 5
    @timer_sprite.z = @score_sprite.z = @sprite.z + 1 # MOD (@score_sprite.z = @sprite.z + 1)
    @timer_sprite.bitmap = Bitmap.new("Time: #{@hole_timer.to_i}".size * Font.default_size, 40)
  end
  #--------------------------------------------------------------------------
  # please leave this alone if you don't know what you're doing
  def draw_sprite(sprite, type)
    case type
    when 0
    end
  end
  #--------------------------------------------------------------------------
  def main
    Graphics.transition
    until $scene != self
      Input.update
      Graphics.update
      update
    end
    Graphics.freeze
    @sprite.dispose
    @hole_sprite.dispose
    @score_sprite.dispose
  end
  #--------------------------------------------------------------------------
  def update
    @hole_timer -= 1 if Graphics.frame_count % Graphics.frame_rate == 0
    @hole_sprite.angle = (@hole_sprite.angle + 2) % 360
    # transparency handler
    if Input.press?(Input::A)
      @sprite.opacity -= 2 unless @sprite.opacity <= 128
    else
      @sprite.opacity += 2 unless @sprite.opacity == 255
    end
    # boost handler
    if Input.press?(Input::X)
      if @sprite.opacity == 255
        @current_speed += 1 unless @current_speed == @speed[1]
      else
        @current_speed -= 1 unless @current_speed == @speed[0]
      end
    else
      @current_speed -= 1 unless @current_speed == @speed[0]
    end
    speed = @current_speed
    # exit handlers
    if Input.press?(Input::C) || Input.press?(Input::B)
      $scene = nil
    end
    # movement handlers
    if Input.press?(Input::LEFT)
      speed /= 1.4 if Input.press?(Input::DOWN) or Input.press?(Input::UP)
      @sprite.x -= speed
      @sprite.x = 0 if @sprite.x < 0
    end
    if Input.press?(Input::DOWN)
      speed /= 1.4 if Input.press?(Input::LEFT) or Input.press?(Input::RIGHT)
      @sprite.y += speed
      @sprite.y = 448 if @sprite.y > 448
    end
    if Input.press?(Input::UP)
      speed /= 1.4 if Input.press?(Input::LEFT) or Input.press?(Input::RIGHT)
      @sprite.y -= speed
      @sprite.y = 0 if @sprite.y < 0
    end
    if Input.press?(Input::RIGHT)
      speed /= 1.4 if Input.press?(Input::DOWN) or Input.press?(Input::UP)
      @sprite.x += speed
      @sprite.x = 608 if @sprite.x > 608
    end
    # sprite's visuals handler
    if @current_speed == @speed[0]
      @sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(196, 196, 196))
    elsif @current_speed == @speed[1]
      @sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(255, 128, 0))
    end
    # handles collision with hole
    if collision_between?(@sprite, @hole_sprite)
      @score += 1
      @score_sprite.bitmap.clear
      @score_sprite.bitmap.draw_text(0, 0, "Score: #{@score_max}".size * Font.default_size, 40, "Score: #{@score}", 0)
      @hole_sprite.x = 16 + rand(608)
      @hole_sprite.y = 16 + rand(448)
      @speed[1] -= 1 if @speed[1] > @speed[0] + 1 && @score % 5 == 0
      @current_speed = @current_speed > @speed[0] ? @speed[1] : @speed[0]
      $scene = Scene_OurScene.new(@level + 1) if @score >= @score_max
    end
    if @hole_timer < 0
    end
  end
  #--------------------------------------------------------------------------
  def collision_between?(object1, object2, size=[32, 32])
    if (object1.x + size[0]).between?(object2.x - 8, object2.x + 40) &&
        (object1.y + size[1]).between?(object2.y - 8, object2.y + 40)
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
end
[/ruby]
 
Submission
Ruby:
# Based on: Script by BlueScope

# Changes: 5 of 5 lines added, 3 of 3 lines modified

 

class Bitmap

  #--------------------------------------------------------------------------

  # credit for this goes to Trickster, as it's taken from the MACL

  def draw_circle(x, y, radius, color = Color.new(255, 255, 255, 255))

    for i in (x - radius)..(x + radius)

      sa = (x - i).abs

      x_ = i < x ? x - sa : i == x ? x : x + sa

      y_ = Integer((radius ** 2 - sa ** 2) ** 0.5)

      self.fill_rect(x_, y - y_, 1, y_ * 2, color)

    end

  end

  #-------------------------------------------------------------------------

end

 

class Scene_OurScene

  #--------------------------------------------------------------------------

  def initialize(level = 1, score = 0) #mod

    @level = level

    @sprite = Sprite.new

    @sprite.x = 304

    @sprite.y = 224

    @sprite.bitmap = Bitmap.new(32, 32)

    @sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(196, 196, 196))

    @hole_sprite = Sprite.new

    @hole_sprite.x = 484

    @hole_sprite.y = 89

    @hole_sprite.bitmap = Bitmap.new(32, 32)

    @hole_sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(72, 120, 0))

    @hole_sprite.ox = @hole_sprite.bitmap.width / 2

    @hole_sprite.oy = @hole_sprite.bitmap.height / 2

    @hole_sprite.z = @sprite.z - 1

    @speed = [9, 27]

    @current_speed = @speed[0]

    @score = score #mod

    @score_max = (level ** 1.5 * 20).to_i

    @score_sprite = Sprite.new

    @score_sprite.bitmap = Bitmap.new("Score: #{@score_max}".size * Font.default_size, 40)

    @score_sprite.x = 10

    @score_sprite.bitmap.draw_text(0,0, "Score: #{@score_max}".size * Font.default_size, 40, "Score: #{@score}", 0)

    @hole_timer = 10 - (level - 1) * 0.1

    @timer_sprite = Sprite.new

    @timer_sprite.x = 630 - @hole_timer.to_s.size * Font.default_size

    @timer_sprite.y = @score_sprite.y = 5

    @timer_sprite.z = @score_sprite.z = @sprite.z + 1

    @timer_sprite.bitmap = Bitmap.new("Time: #{@hole_timer.to_i}".size * Font.default_size, 40)

    @timer_sprite.bitmap.draw_text(0,0, "Time: #{@hole_timer.to_i}".size * Font.default_size, 40, "Time: #{@hole_timer.to_i}", 0) #add

  end

  #--------------------------------------------------------------------------

  # please leave this alone if you don't know what you're doing

  def draw_sprite(sprite, type)

    case type

    when 0

    end

  end

  #--------------------------------------------------------------------------

  def main

    Graphics.transition

    until $scene != self

      Input.update

      Graphics.update

      update

    end

    Graphics.freeze

    @sprite.dispose

    @hole_sprite.dispose

    @score_sprite.dispose

    @timer_sprite.dispose #add

  end

  #--------------------------------------------------------------------------

  def update

    @hole_timer -= 1 if Graphics.frame_count % Graphics.frame_rate == 0

    @hole_sprite.angle = (@hole_sprite.angle + 2) % 360

    # transparency handler

    if Input.press?(Input::A)

      @sprite.opacity -= 2 unless @sprite.opacity <= 128

    else

      @sprite.opacity += 2 unless @sprite.opacity == 255

    end

    # boost handler

    if Input.press?(Input::X)

      if @sprite.opacity == 255

        @current_speed += 1 unless @current_speed == @speed[1]

      else

        @current_speed -= 1 unless @current_speed == @speed[0]

      end

    else

      @current_speed -= 1 unless @current_speed == @speed[0]

    end

    speed = @current_speed

    # exit handlers

    if Input.press?(Input::C) || Input.press?(Input::B)

      $scene = nil

    end

    # movement handlers

    if Input.press?(Input::LEFT)

      speed /= 1.4 if Input.press?(Input::DOWN) or Input.press?(Input::UP)

      @sprite.x -= speed

      @sprite.x = 0 if @sprite.x < 0

    end

    if Input.press?(Input::DOWN)

      speed /= 1.4 if Input.press?(Input::LEFT) or Input.press?(Input::RIGHT)

      @sprite.y += speed

      @sprite.y = 448 if @sprite.y > 448

    end

    if Input.press?(Input::UP)

      speed /= 1.4 if Input.press?(Input::LEFT) or Input.press?(Input::RIGHT)

      @sprite.y -= speed

      @sprite.y = 0 if @sprite.y < 0

    end

    if Input.press?(Input::RIGHT)

      speed /= 1.4 if Input.press?(Input::DOWN) or Input.press?(Input::UP)

      @sprite.x += speed

      @sprite.x = 608 if @sprite.x > 608

    end

    # sprite's visuals handler

    if @current_speed == @speed[0]

      @sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(196, 196, 196))

    elsif @current_speed == @speed[1]

      @sprite.bitmap.fill_rect(0, 0, 32, 32, Color.new(255, 128, 0))

    end

    # handles collision with hole

    if collision_between?(@sprite, @hole_sprite)

      @score += 1

      @score_sprite.bitmap.clear

      @score_sprite.bitmap.draw_text(0, 0, "Score: #{@score_max}".size * Font.default_size, 40, "Score: #{@score}", 0)

      @hole_sprite.x = 16 + rand(608)

      @hole_sprite.y = 16 + rand(448)

      @speed[1] -= 1 if @speed[1] > @speed[0] + 1 && @score % 5 == 0

      @current_speed = @current_speed > @speed[0] ? @speed[1] : @speed[0]

      $scene = Scene_OurScene.new(@level + 1, @score) if @score >= @score_max #mod

    end

    if @hole_timer < 0

      $scene = Scene_OurScene.new(@level + 1, @score) #add

    end

    @timer_sprite.bitmap.clear #add

    @timer_sprite.bitmap.draw_text(0,0, "Time: #{@hole_timer.to_i}".size * Font.default_size, 40, "Time: #{@hole_timer.to_i}", 0) #add

  end

  #--------------------------------------------------------------------------

  def collision_between?(object1, object2, size=[32, 32])

    if (object1.x + size[0]).between?(object2.x - 8, object2.x + 40) &&

        (object1.y + size[1]).between?(object2.y - 8, object2.y + 40)

      return true

    end

    return false

  end

  #--------------------------------------------------------------------------

end

I know this may count as a massive necropost, but I feel this thread needs to be resurrected and this script needs to be completed.

This is the Second Coming of The C.E.X.S. Project! <,< ... >,>
( Is it just me, or does that sound wrong, somehow? )

Anywho. I hope I followed the rules of this thread....
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top