Project1

标题: 是男人就下一百层(脚本版)v1.0 [打印本页]

作者: 赤点    时间: 2009-8-14 23:53
标题: 是男人就下一百层(脚本版)v1.0
本帖最后由 赤点 于 2009-8-22 00:48 编辑

看了那小游戏,于是就邪恶的搬到rmxp里了
素材还是用截图抠的说。。。
欢迎拍砖~
测试
图片:



以下是范例:
是男人就下一百层.rar (244.14 KB, 下载次数: 394)
以下是脚本:
  1. #==============================================================================
  2. # ■ 是男人就下一百层 v1.0
  3. # ■  BY 赤点   
  4. #------------------------------------------------------------------------------
  5. #  使用方法:$scene = Nanren.new 必须把范例中Pictures里的图片复制到你的工程!
  6. #   不需要内置脚本支持,应该没什么冲突。
  7. #==============================================================================


  8. #==============================================================================
  9. # ■ Window_Status
  10. #------------------------------------------------------------------------------
  11. #  显示角色状态的窗口。
  12. #==============================================================================

  13. class Window_Status <  Window
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化目标
  16.   #--------------------------------------------------------------------------
  17.   def initialize(jilu)
  18.     super()
  19.     self.windowskin = RPG::Cache.windowskin("001-Blue01")
  20.     self.x = 379
  21.     self.y = 0
  22.     self.width = 261
  23.     self.height = 480
  24.     self.z = 100   
  25.     self.contents = Bitmap.new(width - 32, height - 32)
  26.     update
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 刷新
  30.   #--------------------------------------------------------------------------
  31.   def update
  32.      self.contents.clear
  33.       #draw_actor_graphic(24, 80)
  34.     end
  35.   #描绘图形
  36.   def draw_actor_life(hp)
  37.     bitmap = RPG::Cache.character("001-Fighter01", 0)
  38.     cw = bitmap.width / 4
  39.     ch = bitmap.height / 4
  40.     src_rect = Rect.new(0, 0, cw, ch)
  41.     for i in 1..hp
  42.       self.contents.blt(i*28, 35, bitmap, src_rect)
  43.     end
  44.   end
  45.   #描绘层数
  46.   def draw_ceng(ceng)
  47.     self.contents.font.size = 45
  48.     self.contents.font.color = Color.new(255, 200, 50, 255)
  49.     self.contents.draw_text(12, 150, 200, 100,"现在层数: #{ceng}")
  50.   end   
  51.   #释放
  52.   def dispose
  53.     self.contents.dispose
  54.   end
  55.   
  56. end
  57. #==============================================================================
  58. # ■ Scene_Nanren
  59. #------------------------------------------------------------------------------
  60. #  主场景。
  61. #==============================================================================
  62. class Scene_Nanren
  63.   def main
  64.     #准备初始化
  65.     ready
  66.     Graphics.transition
  67.     # 主循环
  68.     loop do
  69.       # 刷新游戏画面
  70.       Graphics.update
  71.       @world.oy += 2
  72.       # 刷新输入信息
  73.       Input.update
  74.       # 刷新画面
  75.       @actor.update
  76.       update
  77.       #死亡检查
  78.       if @hp <= 0 or @play.y >= 480
  79.        print "你的层数是: #{@ceng}"
  80.        if @jilu < @ceng
  81.        file =File.open("nanren.sav","wb")
  82.        @jilu = @ceng
  83.        Marshal.dump(@jilu,file)
  84.        file.close
  85.       end
  86.       #失败时切换用,就把下下面的dispose和break去掉
  87.       #$scene =
  88.       dispose
  89.       break
  90.       end
  91.       # 如果画面被切换就中断循环
  92.       if $scene != self
  93.         break
  94.       end
  95.     end
  96.     # 装备过渡
  97.     Graphics.freeze
  98.     # 释放
  99.     @actor.dispose
  100.     dispose
  101.   end
  102.   def ready
  103.     #生成世界
  104.     @world = Viewport.new(0,0,385,960)
  105.     @world.oy = -400
  106.     #生成顶部
  107.     @top = Sprite.new
  108.     @top.bitmap =Bitmap.new("Graphics/Pictures/top.png")#w379,h15
  109.     @top.x = 0
  110.     @top.y = 0
  111.     #生成部件
  112.     draw
  113.     #生成人物andHp
  114.     player
  115.     @hp = 6
  116.     #读取描绘记录
  117.     if FileTest.exist?("nanren.sav")
  118.     file =File.open("nanren.sav","rb")
  119.     @jilu = Marshal.load(file)
  120.     file.close
  121.     else
  122.     @jilu = 0
  123.     end   
  124.     #生成角色窗口
  125.     @actor = Window_Status.new(@jilu)
  126.     @actor.x = 385
  127.     @actor.y = 0  
  128.     draw_jilu(@jilu)
  129.   end
  130.   #描绘记录
  131.   def draw_jilu(jilu)
  132.     @bit2 = Bitmap.new(130,90)
  133.     @bit2.font.size = 45
  134.     @bit2.font.color = Color.new(200, 100, 255, 255)
  135.     @bit2.draw_text(5,10, 130, 90,"记录:#{jilu}")      
  136.     @jilus = Sprite.new
  137.     @jilus.bitmap = @bit2
  138.     @jilus.x = 405
  139.     @jilus.y = 255
  140.     @jilus.z = 111
  141.   end  
  142.   #描绘部件
  143.   def draw
  144.     #初始化部件bitmap
  145.     @total = []
  146.     y = rand(20)+30
  147.     #开始描绘
  148.     @checks = @top
  149.     for @i in 0..300
  150.       math = rand(5)
  151.       draw_sprite(@i,y,math)
  152.       y += rand(60)+50
  153.     end

  154.   end
  155.   
  156.   #部件sprite
  157.   def draw_sprite(i,y,math)
  158.       temp = rand(2)
  159.       case math
  160.       when 0
  161.         @total = Sprite.new(@world)
  162.         @total.bitmap = Bitmap.new("Graphics/Pictures/ci")
  163.         if temp == 0
  164.         @total.x = rand(142)+1
  165.         else
  166.         @total.x = rand(142)+142
  167.         end
  168.         @total.y = y+rand(20)+20
  169.         @total.z = 1
  170.       when 1
  171.         @total = Sprite.new(@world)
  172.         @total.bitmap = Bitmap.new("Graphics/Pictures/dong")
  173.         if temp == 0
  174.         @total.x = rand(142)+1
  175.         else
  176.         @total.x = rand(142)+142
  177.         end
  178.         @total.y = y+rand(20)+20
  179.         @total.z = 2 or 10
  180.       when 2
  181.         @total = Sprite.new(@world)
  182.         @total.bitmap = Bitmap.new("Graphics/Pictures/nor")
  183.         if temp == 0
  184.         @total.x = rand(142)+1
  185.         else
  186.         @total.x = rand(142)+142
  187.         end
  188.         @total.y = y+rand(20)+20
  189.         @total.z = 3
  190.       when 3
  191.         @total = Sprite.new(@world)
  192.         @total.bitmap = Bitmap.new("Graphics/Pictures/nnor")
  193.         if temp == 0
  194.         @total.x = rand(142)+1
  195.         else
  196.         @total.x = rand(142)+142
  197.         end
  198.         @total.y = y+rand(20)+20
  199.         @total.z = 4
  200.       when 4
  201.         @total = Sprite.new(@world)
  202.         @total.bitmap = Bitmap.new("Graphics/Pictures/tang")
  203.         if temp == 0
  204.         @total.x = rand(142)+1
  205.         else
  206.         @total.x = rand(142)+142
  207.         end
  208.         @total.y = y+rand(20)+20
  209.         @total.z = 5
  210.       end   
  211.   end
  212.   #碰触检查
  213.   def check(s,d)
  214.     sx1 = s.x
  215.     sy1 = s.y
  216.     sx2 = s.x + s.bitmap.width
  217.     sy2 = s.y + s.bitmap.height
  218.     sx3 = s.x + s.bitmap.width/2
  219.     dx1 = d.x
  220.     dy1 = [email protected]
  221.     dx2 = d.x + s.bitmap.width*2 + 28
  222.     dy2 = d.y + s.bitmap.height - @world.oy   
  223.     if sy2-dy1>=-5 and sx3<=dx2 and sx3 >= dx1 and sy2-dy1<=5
  224.       return true
  225.     else
  226.       return false
  227.       
  228.     end
  229.    
  230.   end
  231.   #描绘角色
  232.   def player
  233.      @bitmap = Bitmap.new("Graphics/Characters/001-Fighter01")
  234.      @play = Sprite.new(Viewport.new(0,0,385,480))
  235.      @play.bitmap = Bitmap.new(@bitmap.width/4,@bitmap.height/4)
  236.      @play.bitmap.blt(0,0,@bitmap,@bitmap.rect,255)
  237.      @play.x = 200
  238.      @play.y = 30
  239.      @m = 1
  240.    end
  241.    def clear
  242.      @play.bitmap.clear
  243.    end
  244.    #左
  245.    def move_left
  246.      if @m != 4
  247.        clear
  248.      end
  249.      @play.bitmap.blt(0,-(@bitmap.height/4),@bitmap,@bitmap.rect,255)
  250.      if @play.x>=5
  251.      @play.x -= 8
  252.      end
  253.      @m = 4
  254.      
  255.    end
  256.    #右
  257.    def move_right
  258.      if @m != 6
  259.        clear
  260.      end
  261.      @play.bitmap.blt(0,-2*(@bitmap.height/4),@bitmap,@bitmap.rect,255)
  262.      if @play.x<=355
  263.      @play.x += 8
  264.      end
  265.      @m = 6  
  266.    end
  267.    #跳
  268.    def move_jump
  269.       @play.y -= 200
  270.    end
  271.     #检测接触时
  272.    def pcheck
  273.     for i in @ceng..@ceng+90
  274.        if check(@play,@total)
  275.          break      
  276.        end
  277.      end
  278.      if check(@play,@total)
  279.        check_sort(@total)
  280.        @play.y -= 2
  281.        case Input.dir4
  282.        when 8
  283.          move_jump
  284.        end
  285.      else
  286.        @play.y += 6
  287.      end         
  288.    end
  289.    #检查种类
  290.    def check_sort(sort)
  291.      case sort.z
  292.      when 1
  293.        ci
  294.      when 2
  295.        dong(true)
  296.      when 5
  297.        tang
  298.      when 10
  299.        dong(false)
  300.      end
  301.    end
  302.    def ci
  303.      @hp -= 1
  304.      @play.y -= 100
  305.    end
  306.    def dong(tem)
  307.      if tem
  308.        @play.x += 6
  309.      else
  310.        @play.x -= 6
  311.      end
  312.      
  313.    end
  314.    def nnor
  315.      tem = rand(2)
  316.      if tem == 0
  317.        @play.y += 8
  318.      end     
  319.    end
  320.    def tang
  321.      @play.y -= 100
  322.    end
  323.    #受伤
  324.    def play_act
  325.      if @play.y <= 16
  326.        @hp -= 1
  327.        @play.flash(Color.new(255, 50, 50, 255), 5)
  328.        @play.y += 20
  329.      else
  330.        @play.update
  331.      end
  332.    end
  333.    
  334.    
  335.    #刷新
  336.    def update
  337.      @ceng = @world.oy / 200
  338.      @actor.draw_ceng(@ceng)
  339.      @actor.draw_actor_life(@hp)
  340.      pcheck
  341.      play_act
  342.      case Input.dir4
  343.      when 4
  344.        if @m != 0
  345.          clear
  346.          @m = 0
  347.        end
  348.        move_left
  349.      when 6
  350.        if @m != 0
  351.          clear
  352.          @m = 0
  353.        end
  354.        move_right
  355.      when 2
  356.        @play.y += 20
  357.       
  358.      end
  359.      
  360.    end
  361.    #释放
  362.    def dispose
  363.      for i in [email protected]
  364.        @total.dispose
  365.      end
  366.      @total.clear
  367.      @actor.dispose
  368.      @play.bitmap.dispose
  369.      @bit2.dispose
  370.      @jilus.bitmap.dispose
  371.      @top.dispose
  372.    end
  373.    
  374. end
复制代码

作者: 后知后觉    时间: 2009-8-15 00:00
好像有人做过这个游戏。。。。记不清楚了- -
作者: 赤点    时间: 2009-8-15 00:03
好后悔,迟生了几年= =a
作者: 后知后觉    时间: 2009-8-15 00:17
那也是没办法的事啊 哎
现在RMXP该写的该改的都被前辈做得差不多了
留下来的给我们要做的事就只有创意了- -
作者: dbshy    时间: 2009-8-15 00:22
这个不错,刚才试了一下,手感比原来有人用事件做的好些
以前我也想写一个,懒得去搜集素材就放弃了
作者: 赤点    时间: 2009-8-15 10:41
还是转到小游戏区吧,不知道可不可以
作者: 越前リョーマ    时间: 2009-8-15 12:09
为什么看截图总觉得不如Flash的爽……
作者: 后知后觉    时间: 2009-8-15 12:54
6# 赤点
这个本来就应该发在小游戏区,当然你发在这里也不为过
既然你开扣了就转过去.顺手把同类的能搜索出来的小游戏帖也转过去- -
作者: 幽兰鬼剑    时间: 2009-8-15 16:20
``````````纯支持
```````````````用XP的人感觉怪怪的
作者: ONEWateR    时间: 2009-8-15 19:08
为什么看截图总觉得不如Flash的爽……
越前リョーマ 发表于 2009-8-15 12:09


因为素材与阿尔西斯不鞋盒~ - -~

那也是没办法的事啊 哎
现在RMXP该写的该改的都被前辈做得差不多了
留下来的给我们要做的事就只有创意了- -
后知后觉 发表于 2009-8-15 00:17


算了一下小游戏的,貌似有很多很多没有被写的说~
作者: 赤点    时间: 2009-8-15 21:29
人物图可以换嘛
回ls他也许说的是rmxp发布区的东东
作者: 后知后觉    时间: 2009-8-16 14:48
10# ONEWateR
那个是在说XP发布区拉~
作者: 风雪优游    时间: 2009-8-16 17:22
支持!虽然这个游戏我很讨厌,但是,也是经典游戏啊
作者: 赤点    时间: 2009-8-16 23:35
谢谢支持,我会更努力的
作者: ★PIG★    时间: 2009-8-17 16:48
我以前用的某部诺基亚的手机有类似的游戏,不过那是个球




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