Changeset 9917

Show
Ignore:
Timestamp:
04/19/08 23:24:09 (5 years ago)
Author:
authorNari
Message:

normal game flow make

Location:
lang/ruby/mariobros
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/mariobros/main.rb

    r9829 r9917  
    1414 
    1515 
    16 $test = true 
     16$test = false 
    1717require 'gamestart' unless $test 
    1818require 'test' if $test 
    19  
    20 #scratch 
    21 #title.screen_build(@screen) { 
    22 #  background 
    23 #  floor 
    24 #} 
  • lang/ruby/mariobros/mario/gamestart.rb

    r9829 r9917  
    55# 
    66 
     7require 'sdl' 
     8require 'lib/fpstimer' 
     9require 'lib/input' 
     10require 'mario/scene' 
     11require 'mario/material' 
     12require 'mario/life' 
    713 
    814class Input 
     
    3238 
    3339  map[:map_1].screen_build { 
    34     background Material::BackGround.new_fill_image(0, 0, 6000, 800, SDL::Surface.load("mario/image/out_sky.png")) 
    35     floor Material::BackGround.new_fill_image(0, 600, 6000, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     40    background Material::BackGround.new_color(0, 0, 10000, 800, [0x00, 0x99, 0xff]) 
     41    floor Material::Floor.new_fill_image(0, 600, 200, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     42    floor Material::Floor.new_fill_image(350, 600, 500, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     43    floor Material::Floor.new_fill_image(900, 600, 500, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     44    floor Material::Floor.new_fill_image(1500, 600, 200, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     45    floor Material::Floor.new_fill_image(1800, 600, 400, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     46    floor Material::Floor.new_fill_image(2600, 600, 400, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     47    floor Material::Floor.new_fill_image(3200, 600, 400, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     48    floor Material::Floor.new_fill_image(3800, 600, 400, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     49    floor Material::Floor.new_fill_image(4400, 600, 400, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     50    floor Material::Floor.new_fill_image(5000, 600, 400, 300, SDL::Surface.load("mario/image/floor_block.png")) 
     51    enemy Life::Kuribo.new(500, 200) 
     52    player Life::Mario.new(40, 200) 
    3653  } 
    3754 
     
    4663  if defined?(SDL::RELEASE_MODE) 
    4764    SDL::Mouse.hide 
    48     @screen = SDL.set_video_mode(760, 670, 16, SDL::HWSURFACE|SDL::DOUBLEBUF|SDL::FULLSCREEN) 
     65    screen = SDL.set_video_mode(Scene::SCREEN_WIDTH, Scene::SCREEN_HIGHT, 16, SDL::HWSURFACE|SDL::DOUBLEBUF|SDL::FULLSCREEN) 
    4966  else 
    50     @screen = SDL.set_video_mode(760, 670, 16, SDL::SWSURFACE|SDL::DOUBLEBUF) 
     67    screen = SDL.set_video_mode(Scene::SCREEN_WIDTH, Scene::SCREEN_HIGHT, 16, SDL::SWSURFACE|SDL::DOUBLEBUF) 
    5168  end 
    5269 
    53   @input = Input.new 
    54   @font = SDL::TTF.open("image/boxfont2.ttf", 14) 
    55   @bgm = SDL::Mixer::Music.load("sound/famipop3.it") 
     70  input = Input.new 
    5671 
    57   map = map_init(@screen) 
     72  map = map_init(screen) 
    5873 
    5974  scene = map[:title] 
     
    6176  timer.reset 
    6277  loop do 
    63     @input.poll 
    64     break if @input[:exit] 
     78    input.poll 
     79    break if input[:exit] 
    6580 
    66     s_next = scene.act(@input) 
    67     scene = map[s_next] if s_next 
    68     scene.render(@screen) 
    69     timer.wait_frame{ @screen.flip } 
     81    s_next = scene.act(input) 
     82    scene.render(screen) 
     83    scene = map[s_next].rebuild if s_next 
     84    timer.wait_frame{ 
     85      if defined?(SDL::RELEASE_MODE) 
     86        screen.flip 
     87      else 
     88        screen.update_rect(0, 0, Scene::SCREEN_WIDTH, Scene::SCREEN_HIGHT) 
     89      end 
     90    } 
    7091  end 
    7192end 
  • lang/ruby/mariobros/mario/scene.rb

    r9915 r9917  
    1616 
    1717    def initialize(&block) 
     18      init 
     19      instance_eval(&block) 
     20    end 
     21 
     22    def init 
     23      @backgrounds = [] 
    1824      @actions = [] 
    1925      @blocks = [] 
     
    2228      @player = nil 
    2329      @renders = [@actions, @blocks, @enemys, @flows] 
    24       instance_eval(&block) 
     30    end 
     31 
     32    def rebuild 
     33      init 
     34      instance_eval(&@build_code) 
     35      self 
    2536    end 
    2637 
     
    3445 
    3546    def screen_build(&block) 
     47      @build_code = block 
    3648      instance_eval(&block) 
    3749      self 
     
    3951 
    4052    def background(bg) 
     53      @backgrounds << bg 
    4154      @flows << bg 
    4255    end 
  • lang/ruby/mariobros/mario/scene/flowworld.rb

    r9915 r9917  
    1212      flow_right 
    1313      garbage_sweep if(@player.frame % 100).zero? 
     14      return :title if @player.y > SCREEN_HIGHT*2 
     15      nil 
    1416    end 
    1517 
  • lang/ruby/mariobros/mario/scene/title.rb

    r9829 r9917  
    1010    def render(screen) 
    1111      @backgrounds.each{|bg| bg.put_screen(screen) } 
    12       @floors.each{|fl| fl.put_screen(screen) } 
    1312    end 
    1413  end