Project1

标题: 无聊之作 - 天气的雨点反踞齿+新增冰雹天气 [打印本页]

作者: 3535    时间: 2007-4-5 06:29
标题: 无聊之作 - 天气的雨点反踞齿+新增冰雹天气
我看见那些雨点太假了,忍不住要改改{/tu}
顺便加个冰雹,就改几行代码而已 - -{/gg}
把Item-Cube01放到Pictures下即可{/tp}
使用时在事件输入$game_screen.weather(4, 5, 10)
5是强度可自己定
10是时间可自己定
http://rpg.blue/UP_PIC/200705/Item-Cube01.png

  1. #==============================================================================
  2. # ■ Weather
  3. #------------------------------------------------------------------------------
  4. #  处理天气的类别。
  5. #==============================================================================
  6. module RPG
  7.   class Weather
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化物件
  10.   #--------------------------------------------------------------------------
  11.     def initialize(viewport = nil)
  12.       # 天气类型
  13.       @type = 0
  14.       @max = 0
  15.       @ox = 0
  16.       @oy = 0
  17.       color1 = Color.new(255, 255, 255, 255)
  18.       color2 = Color.new(255, 255, 255, 128)
  19.       # 雨
  20.       @rain_bitmap = Bitmap.new(7, 30)
  21.       for i in 0..6
  22.         @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
  23.         @rain_bitmap.fill_rect(5-i, i*10, 1, 8, color2)
  24.       end
  25.       # 风
  26.       @storm_bitmap = Bitmap.new(34, 64)
  27.       for i in 0..31
  28.         @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
  29.         @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
  30.         @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
  31.       end
  32.       # 雪
  33.       @snow_bitmap = Bitmap.new(6, 6)
  34.       @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
  35.       @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
  36.       @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
  37.       @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
  38.       # 冰雹
  39.       @Hail_bitmap = Bitmap.new("Graphics/Pictures/Item-Cube01")
  40.       @sprites = []
  41.       for i in 1..40
  42.         sprite = Sprite.new(viewport)
  43.         sprite.z = 1000
  44.         sprite.visible = false
  45.         sprite.opacity = 0
  46.         @sprites.push(sprite)
  47.         # for
  48.       end
  49.       # initialize
  50.     end
  51.   #--------------------------------------------------------------------------
  52.   # ● 设定天气类型
  53.   #--------------------------------------------------------------------------
  54.     def type=(type)
  55.       return if @type == type
  56.       @type = type
  57.       # 分歧-天气类型
  58.       case @type
  59.       # 雨
  60.       when 1
  61.         bitmap = @rain_bitmap
  62.         # 风
  63.       when 2
  64.         bitmap = @storm_bitmap
  65.         # 雪
  66.       when 3
  67.         bitmap = @snow_bitmap
  68.         # 冰雹
  69.       when 4
  70.         bitmap = @Hail_bitmap
  71.         # 类型在 1234 以外的场合
  72.       else
  73.         # bitmap = 空
  74.         bitmap = nil
  75.       end
  76.       for i in 1..40
  77.         sprite = @sprites[i]
  78.         # 如bitmap非空
  79.         if sprite != nil
  80.           sprite.visible = (i <= @max)
  81.           sprite.bitmap = bitmap
  82.         end
  83.       end
  84.     end
  85.   #--------------------------------------------------------------------------
  86.   # ● 更新画面
  87.   #--------------------------------------------------------------------------
  88.     def update
  89.       # 如天气类型等于 0 则返回
  90.       return if @type == 0
  91.       for i in 1..@max
  92.         sprite = @sprites[i]
  93.         # 如sprite等于空
  94.         if sprite == nil
  95.           # 中断循环
  96.           break
  97.         end
  98.         # 如天气类型等于 1
  99.         if @type == 1
  100.           sprite.x -= 2
  101.           sprite.y += 16
  102.           sprite.opacity -= 8
  103.         end
  104.         # 如天气类型等于 2
  105.         if @type == 2
  106.           sprite.x -= 8
  107.           sprite.y += 16
  108.           sprite.opacity -= 12
  109.         end
  110.         # 如天气类型等于 3
  111.         if @type == 3
  112.           sprite.x -= 2
  113.           sprite.y += 8
  114.           sprite.opacity -= 8
  115.         end
  116.         # 如天气类型等于 4
  117.         if @type == 4
  118.           sprite.x -= 3
  119.           sprite.y += 15
  120.           sprite.opacity -= 8
  121.         end
  122.         x = sprite.x - @ox
  123.         y = sprite.y - @oy
  124.         # 如天气图片不透明度小于 64 或 x 小于 -50 或 x 大于 750 或 y 小于 -300 或 y 大于 500
  125.         if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
  126.           # 图片不透明度x,y,不透明度调整
  127.           sprite.x = rand(800) - 50 + @ox
  128.           sprite.y = rand(800) - 200 + @oy
  129.           sprite.opacity = 255
  130.           # if
  131.         end
  132.         # for
  133.       end
  134.       #update
  135.     end
  136.     # class
  137.   end
  138.   #module
  139. end
复制代码


              [本贴由 雷欧纳德 于 2007-5-31 10:12:49 进行了编辑]
作者: 3535    时间: 2007-4-5 06:29
标题: 无聊之作 - 天气的雨点反踞齿+新增冰雹天气
我看见那些雨点太假了,忍不住要改改{/tu}
顺便加个冰雹,就改几行代码而已 - -{/gg}
把Item-Cube01放到Pictures下即可{/tp}
使用时在事件输入$game_screen.weather(4, 5, 10)
5是强度可自己定
10是时间可自己定
http://rpg.blue/UP_PIC/200705/Item-Cube01.png

  1. #==============================================================================
  2. # ■ Weather
  3. #------------------------------------------------------------------------------
  4. #  处理天气的类别。
  5. #==============================================================================
  6. module RPG
  7.   class Weather
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化物件
  10.   #--------------------------------------------------------------------------
  11.     def initialize(viewport = nil)
  12.       # 天气类型
  13.       @type = 0
  14.       @max = 0
  15.       @ox = 0
  16.       @oy = 0
  17.       color1 = Color.new(255, 255, 255, 255)
  18.       color2 = Color.new(255, 255, 255, 128)
  19.       # 雨
  20.       @rain_bitmap = Bitmap.new(7, 30)
  21.       for i in 0..6
  22.         @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
  23.         @rain_bitmap.fill_rect(5-i, i*10, 1, 8, color2)
  24.       end
  25.       # 风
  26.       @storm_bitmap = Bitmap.new(34, 64)
  27.       for i in 0..31
  28.         @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
  29.         @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
  30.         @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
  31.       end
  32.       # 雪
  33.       @snow_bitmap = Bitmap.new(6, 6)
  34.       @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
  35.       @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
  36.       @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
  37.       @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
  38.       # 冰雹
  39.       @Hail_bitmap = Bitmap.new("Graphics/Pictures/Item-Cube01")
  40.       @sprites = []
  41.       for i in 1..40
  42.         sprite = Sprite.new(viewport)
  43.         sprite.z = 1000
  44.         sprite.visible = false
  45.         sprite.opacity = 0
  46.         @sprites.push(sprite)
  47.         # for
  48.       end
  49.       # initialize
  50.     end
  51.   #--------------------------------------------------------------------------
  52.   # ● 设定天气类型
  53.   #--------------------------------------------------------------------------
  54.     def type=(type)
  55.       return if @type == type
  56.       @type = type
  57.       # 分歧-天气类型
  58.       case @type
  59.       # 雨
  60.       when 1
  61.         bitmap = @rain_bitmap
  62.         # 风
  63.       when 2
  64.         bitmap = @storm_bitmap
  65.         # 雪
  66.       when 3
  67.         bitmap = @snow_bitmap
  68.         # 冰雹
  69.       when 4
  70.         bitmap = @Hail_bitmap
  71.         # 类型在 1234 以外的场合
  72.       else
  73.         # bitmap = 空
  74.         bitmap = nil
  75.       end
  76.       for i in 1..40
  77.         sprite = @sprites[i]
  78.         # 如bitmap非空
  79.         if sprite != nil
  80.           sprite.visible = (i <= @max)
  81.           sprite.bitmap = bitmap
  82.         end
  83.       end
  84.     end
  85.   #--------------------------------------------------------------------------
  86.   # ● 更新画面
  87.   #--------------------------------------------------------------------------
  88.     def update
  89.       # 如天气类型等于 0 则返回
  90.       return if @type == 0
  91.       for i in 1..@max
  92.         sprite = @sprites[i]
  93.         # 如sprite等于空
  94.         if sprite == nil
  95.           # 中断循环
  96.           break
  97.         end
  98.         # 如天气类型等于 1
  99.         if @type == 1
  100.           sprite.x -= 2
  101.           sprite.y += 16
  102.           sprite.opacity -= 8
  103.         end
  104.         # 如天气类型等于 2
  105.         if @type == 2
  106.           sprite.x -= 8
  107.           sprite.y += 16
  108.           sprite.opacity -= 12
  109.         end
  110.         # 如天气类型等于 3
  111.         if @type == 3
  112.           sprite.x -= 2
  113.           sprite.y += 8
  114.           sprite.opacity -= 8
  115.         end
  116.         # 如天气类型等于 4
  117.         if @type == 4
  118.           sprite.x -= 3
  119.           sprite.y += 15
  120.           sprite.opacity -= 8
  121.         end
  122.         x = sprite.x - @ox
  123.         y = sprite.y - @oy
  124.         # 如天气图片不透明度小于 64 或 x 小于 -50 或 x 大于 750 或 y 小于 -300 或 y 大于 500
  125.         if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
  126.           # 图片不透明度x,y,不透明度调整
  127.           sprite.x = rand(800) - 50 + @ox
  128.           sprite.y = rand(800) - 200 + @oy
  129.           sprite.opacity = 255
  130.           # if
  131.         end
  132.         # for
  133.       end
  134.       #update
  135.     end
  136.     # class
  137.   end
  138.   #module
  139. end
复制代码


              [本贴由 雷欧纳德 于 2007-5-31 10:12:49 进行了编辑]
作者: 魔剑美神    时间: 2007-4-5 06:33
LZ发个范例上来吧~~
作者: 3535    时间: 2007-4-5 06:41
以下引用魔剑美神于2007-4-4 22:33:29的发言:

LZ发个范例上来吧~~

范例工程 : http://rpg.blue/upload_program/files/Hailweather.rar
作者: 魔剑美神    时间: 2007-4-5 06:56
思路不错~鼓励一下~{/qiang}

有待改进~
作者: 莫浪语    时间: 2007-4-5 09:33
雨点最好搞成一小段上细下粗的,那个默认的太长太大了
作者: 九泪    时间: 2007-4-5 12:35
恩,现在这个区真的开始繁荣了哈~ 楼主加油~ 期待看到你更大的进步哟~{/qiang}
作者: 亿万星辰    时间: 2007-4-5 14:57
自制天气......{/pz}
作者: 小傻瓜    时间: 2007-4-5 20:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 3535    时间: 2007-4-6 01:38
小改动{/hx}
# 雨
      @rain_bitmap = Bitmap.new(7, 30)
      for i in 0..6
        @rain_bitmap.fill_rect(6-i, i*8, 1.2, 8, color1)
        @rain_bitmap.fill_rect(5-i, i*10, 1.5, 10, color2)
        @rain_bitmap.fill_rect(7-i, i*5.2, 1.6, 8, color1)
      end
作者: gpra8764    时间: 2007-4-7 23:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: RXVincent    时间: 2007-6-25 06:23
{/jy}哦,怎样停止冰雹?
作者: 菜鸟笨鸟傻鸟    时间: 2008-1-20 01:36
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1