设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2659|回复: 8
打印 上一主题 下一主题

方向游戏~~-___-|||

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
跳转到指定楼层
1
发表于 2007-7-8 08:54:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
前几天kaze在水区介绍了一个测验动态视力的游戏,打了几次,怎么打都是8级70多分,郁闷之极,后来就产生了做个RM版的念头,本来想用事件做的,这是最简单直接的方法,后来RP有问题,就改用了脚本了~~不过我没有半点编程基础,是半个脚本盲,所以写的算法有点原始,别见怪~~~~{/gg}不过无论如何效果达到了,只是不知道有没有潜在bug,有的话通知我吧~~不知道以前有没人做过类似的~~{/gg}
脚本如下:
  1. #===========================================================================
  2. #★方向键游戏
  3. #★作者:Zhong
  4. #★联系方式: 论坛短信
  5. #★个人论坛:god.5d6d.com
  6. #★附:在下是半个脚本盲,,可能实现游戏效果的方法有点不科学,不过总算达到效果了!
  7. #★   有什么bug的话请提出来,能力范围内的,我会尽量更正~~~-__-|||
  8. #===========================================================================

  9. #==============================================================================
  10. # ■ Window_point
  11. #------------------------------------------------------------------------------
  12. # ★ 记分窗口
  13. #
  14. #==============================================================================

  15. class Window_point < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化窗口
  18.   #--------------------------------------------------------------------------
  19.   def initialize
  20.     super(0, 0, 400, 400)
  21.     self.contents = Bitmap.new(width - 32, height - 32)
  22.     self.opacity = 0
  23.     $p = 0 #初始分数
  24.     $l = $p/10 # 初始等级
  25.    
  26.     refresh
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 刷新
  30.   #--------------------------------------------------------------------------
  31.   def refresh
  32.     self.contents.clear
  33.     $l = $p/10
  34.     #描绘等级,分数字样
  35.     self.contents.font.color = Color.new(0,0,0,200)
  36.     self.contents.font.size = 27
  37.     self.contents.draw_text(80,60,120,32,"Level")
  38.     self.contents.font.size = 25
  39.     self.contents.draw_text(150, 60, 120, 32, $l.to_s)
  40.     self.contents.font.size = 22
  41.     self.contents.draw_text(90,90,120,32,"分数")
  42.     self.contents.font.size = 20
  43.     self.contents.draw_text(150,90,120,32,$p.to_s)
  44.   end
  45. end

  46. #============================================================================

  47. #=============================================================================
  48. class Scene_zhong
  49. #=============================================================================  
  50.   
  51.   #--------------------------------------------------------------------------
  52.   # ● 主处理
  53.   #--------------------------------------------------------------------------
  54.   def main
  55.     @max_l = 10 #最大等级,但达到这个等级时自动胜出
  56.     @f = false #用这个开关判断游戏是否刚运行,方便后面图的坐标排布
  57.     @a = [] #随机数组
  58.     @b = [] #玩家输入数组
  59.     @test = [] #显示图片用的数组
  60.     @t = -1 #次数
  61.     @n = 0 #分数参数  
  62.     @se = 0 #判断se是否已播放,避免重播
  63.    
  64.     $game_variables[45] = 0 #这个变量时判断失败与否的变量,亦可用开关,主要时方便事件操作
  65.    
  66.     @sprite = [Sprite.new] #这个为了批量生成精灵的数组
  67.    
  68.     for i in 0..6
  69.       @sprite[i] = Sprite.new
  70.       @sprite[i].y = 173
  71.       @sprite[i].z = 2
  72.     end
  73.     @sprite[5].bitmap = Bitmap.new("Graphics/pictures/前景图")
  74.     @sprite[5].opacity = 255
  75.     @sprite[5].y = 0
  76.     @sprite[5].x = 0
  77.     @sprite[5].z = 500
  78.     @sprite[6].bitmap = Bitmap.new("Graphics/pictures/背景图")
  79.     @sprite[6].y = 0
  80.     @sprite[6].x = 0
  81.     @sprite[6].z = 1
  82.     @point_window = Window_point.new
  83.     @point_window.z = 600
  84.    
  85.      #演奏BGM
  86.     Audio.bgm_play("Audio/BGM/015-Theme04", 100, 100)
  87.    
  88.    
  89.    # 执行过渡
  90.     Graphics.transition
  91.    # 主循环
  92.     loop do
  93.       # 刷新游戏画面
  94.       Graphics.update
  95.       
  96.      
  97.       
  98.     # 刷新输入信息
  99.       Input.update
  100.    
  101.     # 刷新
  102.       update
  103.      
  104.     # 如果等级为最大级或失败就中断循环
  105.       if $l == @max_l or $game_variables[45] == -1
  106.          break
  107.       end
  108.     end
  109.    
  110.     # 准备过渡
  111.     Graphics.freeze
  112.    
  113.     #停止播放bgm
  114.     Audio.bgm_stop
  115.    
  116.     if $game_variables[45] == -1
  117.         #演奏失败Me
  118.         Audio.me_play("Audio/ME/005-Defeat01", 100, 100)
  119.     else
  120.         #演奏胜利乐章
  121.          Audio.me_play("Audio/ME/002-Victory02", 100, 100)
  122.      end
  123.          
  124.      for i in 1..100
  125.       Graphics.update
  126.      end   
  127.    
  128.      #批量释放精灵和图片
  129.      for i in 0..6
  130.       @sprite[i].bitmap.dispose
  131.       @sprite[i].dispose
  132.     end
  133.    
  134.     @point_window.dispose
  135.     $scene = Scene_Map.new
  136.   end

  137. #--------------------------------------------------------------------------
  138. #★刷新定义
  139. #--------------------------------------------------------------------------
  140.   def update
  141.    
  142.     #刷新积分窗口
  143.     @point_window.refresh
  144.    
  145.    #以下就是传说中的核心算法,如果你是脚本达人就不要看下去了~~ 因为方法太原始了
  146.     if @t == 4
  147.        @n += 1
  148.        @t = -1
  149.        @se = 0
  150.     end  
  151.     for j in 0..4
  152.       if @a[j] == nil
  153.          @a[j] = rand(4) + 1
  154.          @test[j] = @a[j].to_s
  155.          
  156.          @sprite[j].bitmap = Bitmap.new("Graphics/pictures/E_#{@test[j]}")
  157.          if @f == false
  158.            @sprite[j].x = 530 + 100*j
  159.          else
  160.            @sprite[j].x = 530
  161.          end  
  162.       
  163.       end  
  164.     end
  165.    #======================================================================   
  166.       
  167.      
  168.    #========================================================================
  169.       for s in 0..4
  170.         if @sprite[s].x > 28 #图象的边缘坐标
  171.           @sprite[s].x -= 2 + $l*0.5 #计算移动数度的公式
  172.         end
  173.       end
  174.     #=========================================================================
  175.      
  176.        input_zhong
  177.        if @sprite[@t].x > 30 and @sprite[@t].x < 530 #当图片进入这一区域时按键才有效
  178.            
  179.            if @b[@t] != nil and @a[@t] != nil
  180.              if @a[@t] == @b[@t]
  181.                
  182.                if @se == @t
  183.                 # 演奏 SE
  184.                Audio.se_play("Audio/SE/056-Right02", 100, 100)
  185.                @se += 1
  186.                end

  187.                $p = @t+ 1+ @n*5
  188.                x = @sprite[@t].x
  189.                @sprite[@t].bitmap.dispose
  190.                @sprite[@t].bitmap = Bitmap.new("Graphics/pictures/h_#{@test[@t]}")
  191.                @sprite[@t].x = x
  192.                
  193.               else
  194.                 # 演奏冻结 SE
  195.                 Audio.se_play("Audio/SE/011-System11", 100, 100)
  196.                 $game_variables[45] = -1
  197.              end
  198.            
  199.            end
  200.       
  201.        end
  202.         
  203.       
  204.      for g in 0..4
  205.         
  206.        if @sprite[g].x  <= 30 #图片出了区域时
  207.          if @b[g] != nil
  208.             if @a[g] == @b[g]
  209.                @sprite[g].bitmap.dispose
  210.                @a[g] = nil
  211.                @b[g] = nil
  212.                @f = true
  213.             else
  214.             end
  215.           else
  216.             $game_variables[45] = -1
  217.             
  218.           end
  219.        end   
  220.      end  
  221. end

  222. #---------------------------------------------------------------------------
  223. #★ 按键输入判断
  224. #---------------------------------------------------------------------------
  225. def input_zhong
  226.      if Input.trigger?(Input::LEFT)
  227.       
  228.        @t += 1
  229.        @b[@t] = 1
  230.      end  
  231.   
  232.      if Input.trigger?(Input::UP)
  233.       
  234.        @t += 1
  235.        @b[@t] = 2
  236.      end
  237.      if Input.trigger?(Input::RIGHT)
  238.       
  239.       
  240.        @t += 1
  241.        @b[@t] = 3
  242.      
  243.      end
  244.      if Input.trigger?(Input::DOWN)
  245.       
  246.        @t += 1
  247.       @b[@t] = 4
  248.      end
  249. end

  250. #----------------------------------------------------------------------------

  251. end   
  252.    
  253.    
复制代码


建议参考范例看一下吧~~素材规格是方向图片100*100,前景图中间镂出一个400*100的透明区域~~具体看范例~~~

范例 : http://rpg.blue/upload_program/files/方向游戏.rar





--------------------------------------------------------------------
大半个月前做的"美化"版,这段时间一直没机会上网,现在有点空,就发上来,其实很鸡肋~~~{/gg} 另:我把文件上传到ftp上时,才发现论坛附件最大可以上传5M的文件,晕~~~

http://rpg.blue/upload_program/files/美化_方向游戏.rar


准备有空挖个坑玩玩..

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
2
 楼主| 发表于 2007-7-8 08:54:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
前几天kaze在水区介绍了一个测验动态视力的游戏,打了几次,怎么打都是8级70多分,郁闷之极,后来就产生了做个RM版的念头,本来想用事件做的,这是最简单直接的方法,后来RP有问题,就改用了脚本了~~不过我没有半点编程基础,是半个脚本盲,所以写的算法有点原始,别见怪~~~~{/gg}不过无论如何效果达到了,只是不知道有没有潜在bug,有的话通知我吧~~不知道以前有没人做过类似的~~{/gg}
脚本如下:
  1. #===========================================================================
  2. #★方向键游戏
  3. #★作者:Zhong
  4. #★联系方式: 论坛短信
  5. #★个人论坛:god.5d6d.com
  6. #★附:在下是半个脚本盲,,可能实现游戏效果的方法有点不科学,不过总算达到效果了!
  7. #★   有什么bug的话请提出来,能力范围内的,我会尽量更正~~~-__-|||
  8. #===========================================================================

  9. #==============================================================================
  10. # ■ Window_point
  11. #------------------------------------------------------------------------------
  12. # ★ 记分窗口
  13. #
  14. #==============================================================================

  15. class Window_point < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化窗口
  18.   #--------------------------------------------------------------------------
  19.   def initialize
  20.     super(0, 0, 400, 400)
  21.     self.contents = Bitmap.new(width - 32, height - 32)
  22.     self.opacity = 0
  23.     $p = 0 #初始分数
  24.     $l = $p/10 # 初始等级
  25.    
  26.     refresh
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 刷新
  30.   #--------------------------------------------------------------------------
  31.   def refresh
  32.     self.contents.clear
  33.     $l = $p/10
  34.     #描绘等级,分数字样
  35.     self.contents.font.color = Color.new(0,0,0,200)
  36.     self.contents.font.size = 27
  37.     self.contents.draw_text(80,60,120,32,"Level")
  38.     self.contents.font.size = 25
  39.     self.contents.draw_text(150, 60, 120, 32, $l.to_s)
  40.     self.contents.font.size = 22
  41.     self.contents.draw_text(90,90,120,32,"分数")
  42.     self.contents.font.size = 20
  43.     self.contents.draw_text(150,90,120,32,$p.to_s)
  44.   end
  45. end

  46. #============================================================================

  47. #=============================================================================
  48. class Scene_zhong
  49. #=============================================================================  
  50.   
  51.   #--------------------------------------------------------------------------
  52.   # ● 主处理
  53.   #--------------------------------------------------------------------------
  54.   def main
  55.     @max_l = 10 #最大等级,但达到这个等级时自动胜出
  56.     @f = false #用这个开关判断游戏是否刚运行,方便后面图的坐标排布
  57.     @a = [] #随机数组
  58.     @b = [] #玩家输入数组
  59.     @test = [] #显示图片用的数组
  60.     @t = -1 #次数
  61.     @n = 0 #分数参数  
  62.     @se = 0 #判断se是否已播放,避免重播
  63.    
  64.     $game_variables[45] = 0 #这个变量时判断失败与否的变量,亦可用开关,主要时方便事件操作
  65.    
  66.     @sprite = [Sprite.new] #这个为了批量生成精灵的数组
  67.    
  68.     for i in 0..6
  69.       @sprite[i] = Sprite.new
  70.       @sprite[i].y = 173
  71.       @sprite[i].z = 2
  72.     end
  73.     @sprite[5].bitmap = Bitmap.new("Graphics/pictures/前景图")
  74.     @sprite[5].opacity = 255
  75.     @sprite[5].y = 0
  76.     @sprite[5].x = 0
  77.     @sprite[5].z = 500
  78.     @sprite[6].bitmap = Bitmap.new("Graphics/pictures/背景图")
  79.     @sprite[6].y = 0
  80.     @sprite[6].x = 0
  81.     @sprite[6].z = 1
  82.     @point_window = Window_point.new
  83.     @point_window.z = 600
  84.    
  85.      #演奏BGM
  86.     Audio.bgm_play("Audio/BGM/015-Theme04", 100, 100)
  87.    
  88.    
  89.    # 执行过渡
  90.     Graphics.transition
  91.    # 主循环
  92.     loop do
  93.       # 刷新游戏画面
  94.       Graphics.update
  95.       
  96.      
  97.       
  98.     # 刷新输入信息
  99.       Input.update
  100.    
  101.     # 刷新
  102.       update
  103.      
  104.     # 如果等级为最大级或失败就中断循环
  105.       if $l == @max_l or $game_variables[45] == -1
  106.          break
  107.       end
  108.     end
  109.    
  110.     # 准备过渡
  111.     Graphics.freeze
  112.    
  113.     #停止播放bgm
  114.     Audio.bgm_stop
  115.    
  116.     if $game_variables[45] == -1
  117.         #演奏失败Me
  118.         Audio.me_play("Audio/ME/005-Defeat01", 100, 100)
  119.     else
  120.         #演奏胜利乐章
  121.          Audio.me_play("Audio/ME/002-Victory02", 100, 100)
  122.      end
  123.          
  124.      for i in 1..100
  125.       Graphics.update
  126.      end   
  127.    
  128.      #批量释放精灵和图片
  129.      for i in 0..6
  130.       @sprite[i].bitmap.dispose
  131.       @sprite[i].dispose
  132.     end
  133.    
  134.     @point_window.dispose
  135.     $scene = Scene_Map.new
  136.   end

  137. #--------------------------------------------------------------------------
  138. #★刷新定义
  139. #--------------------------------------------------------------------------
  140.   def update
  141.    
  142.     #刷新积分窗口
  143.     @point_window.refresh
  144.    
  145.    #以下就是传说中的核心算法,如果你是脚本达人就不要看下去了~~ 因为方法太原始了
  146.     if @t == 4
  147.        @n += 1
  148.        @t = -1
  149.        @se = 0
  150.     end  
  151.     for j in 0..4
  152.       if @a[j] == nil
  153.          @a[j] = rand(4) + 1
  154.          @test[j] = @a[j].to_s
  155.          
  156.          @sprite[j].bitmap = Bitmap.new("Graphics/pictures/E_#{@test[j]}")
  157.          if @f == false
  158.            @sprite[j].x = 530 + 100*j
  159.          else
  160.            @sprite[j].x = 530
  161.          end  
  162.       
  163.       end  
  164.     end
  165.    #======================================================================   
  166.       
  167.      
  168.    #========================================================================
  169.       for s in 0..4
  170.         if @sprite[s].x > 28 #图象的边缘坐标
  171.           @sprite[s].x -= 2 + $l*0.5 #计算移动数度的公式
  172.         end
  173.       end
  174.     #=========================================================================
  175.      
  176.        input_zhong
  177.        if @sprite[@t].x > 30 and @sprite[@t].x < 530 #当图片进入这一区域时按键才有效
  178.            
  179.            if @b[@t] != nil and @a[@t] != nil
  180.              if @a[@t] == @b[@t]
  181.                
  182.                if @se == @t
  183.                 # 演奏 SE
  184.                Audio.se_play("Audio/SE/056-Right02", 100, 100)
  185.                @se += 1
  186.                end

  187.                $p = @t+ 1+ @n*5
  188.                x = @sprite[@t].x
  189.                @sprite[@t].bitmap.dispose
  190.                @sprite[@t].bitmap = Bitmap.new("Graphics/pictures/h_#{@test[@t]}")
  191.                @sprite[@t].x = x
  192.                
  193.               else
  194.                 # 演奏冻结 SE
  195.                 Audio.se_play("Audio/SE/011-System11", 100, 100)
  196.                 $game_variables[45] = -1
  197.              end
  198.            
  199.            end
  200.       
  201.        end
  202.         
  203.       
  204.      for g in 0..4
  205.         
  206.        if @sprite[g].x  <= 30 #图片出了区域时
  207.          if @b[g] != nil
  208.             if @a[g] == @b[g]
  209.                @sprite[g].bitmap.dispose
  210.                @a[g] = nil
  211.                @b[g] = nil
  212.                @f = true
  213.             else
  214.             end
  215.           else
  216.             $game_variables[45] = -1
  217.             
  218.           end
  219.        end   
  220.      end  
  221. end

  222. #---------------------------------------------------------------------------
  223. #★ 按键输入判断
  224. #---------------------------------------------------------------------------
  225. def input_zhong
  226.      if Input.trigger?(Input::LEFT)
  227.       
  228.        @t += 1
  229.        @b[@t] = 1
  230.      end  
  231.   
  232.      if Input.trigger?(Input::UP)
  233.       
  234.        @t += 1
  235.        @b[@t] = 2
  236.      end
  237.      if Input.trigger?(Input::RIGHT)
  238.       
  239.       
  240.        @t += 1
  241.        @b[@t] = 3
  242.      
  243.      end
  244.      if Input.trigger?(Input::DOWN)
  245.       
  246.        @t += 1
  247.       @b[@t] = 4
  248.      end
  249. end

  250. #----------------------------------------------------------------------------

  251. end   
  252.    
  253.    
复制代码


建议参考范例看一下吧~~素材规格是方向图片100*100,前景图中间镂出一个400*100的透明区域~~具体看范例~~~

范例 : http://rpg.blue/upload_program/files/方向游戏.rar





--------------------------------------------------------------------
大半个月前做的"美化"版,这段时间一直没机会上网,现在有点空,就发上来,其实很鸡肋~~~{/gg} 另:我把文件上传到ftp上时,才发现论坛附件最大可以上传5M的文件,晕~~~

http://rpg.blue/upload_program/files/美化_方向游戏.rar


准备有空挖个坑玩玩..

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

3
发表于 2007-7-8 14:03:25 | 只看该作者
...就是那个让我头晕了好久的游戏啊......
虚无  堕落
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2007-7-8 16:27:09 | 只看该作者
这个纯事件应该也可以,

就是不停循环了好了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
5
 楼主| 发表于 2007-7-9 00:41:28 | 只看该作者
话说那游戏也让我很郁闷,那天打了几次都没超过8级~~~{/gg}~~~`
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

苹果梨

梦石
0
星屑
43
在线时间
6 小时
注册时间
2007-2-14
帖子
720
6
发表于 2007-7-9 10:38:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
7
 楼主| 发表于 2007-7-10 03:07:10 | 只看该作者
呵呵~~{/gg}做的有点简陋~~~
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

8
发表于 2007-7-10 04:33:51 | 只看该作者
不错不错,咱想要美化滴
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
22 小时
注册时间
2006-4-22
帖子
370
9
 楼主| 发表于 2007-8-31 02:27:26 | 只看该作者
{/gg}不知道这算不算美化了,挺鸡肋的东西,放在机子上也没用,就发上来了~~~~~
准备有空挖个坑玩玩..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 10:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表