注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

你我崩坏的世界

~永远鲜红的幼月~

 
 
 

日志

 
 

电路连接小游戏 VER.1  

2008-02-29 23:06:56|  分类: 素材与资源 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

橙子C 21:20:16
我先把思路告诉你,这个应该是事件就能解决的
橙子C 21:22:09
首先呢进入解迷画面,是一个3x3的棋盘格子,每一小格都显示一个不同方向的箭头,例:
(其中●代表正确的电源线路出入口)
●→→→
 ↑↓←
 →↓↓●

因此玩家要做的就是要尝试让箭头变成最终正确的状态:
●→↓*
  *↓*
  *↓→●

于是就有了

=begin
名称:电路连接小游戏 VER.1
制作人:kaze(bbm.kaze@163.com)
制作时间:2008.2.29~2008.2.29

特别鸣谢:美兽(帮在下解决了很脑残的二维数组的问题)
使用方法:
通过$scene = Scene_Kaze_Game.new(n)调用,n为任意正整数
但n * ARROW_SIZE >= 480 显示会出现问题,ARROW_SIZE为箭头素材的大小,默认为32
可以在34行修改。n推荐在6~12之间
游戏占屏幕的大小大约为480*480,也就是说右边的部分可以用来自定义时间啊之类的数据
这部分使用者可自己尝试。

附注:本脚本适用于RMXP,基本上不存在冲突的可能性。
3.1修正了随机造成无法胜利的BUG,增加了按X键退出游戏
=end
#====================================================#
#●箭头的类                                          #
#====================================================#
class Kaze_Arrow
  attr_accessor :kaze_way
  attr_accessor :kaze_sprite
  def initialize
    @kaze_way = 0
    @kaze_sprite = Sprite.new
  end
end
#====================================================#
#●场景的类                                          #
#====================================================#
class Scene_Kaze_Game
 
#★★★★★★★★★★★★★★★★★★
  ARROW_SIZE = 32 #箭头素材的大小
  SWITCH = 30 #游戏胜利后修改的开关(false→true)
#★★★★★★★★★★★★★★★★★★

  def initialize(kaze_size) # kaze_size * ARROW_SIZE >= 480 显示会有问题★
    @kaze_size = kaze_size
    @kaze_arrow_x = 1
    @kaze_arrow_y = 1
    @kaze_arrow = Array.new(kaze_size + 1){Array.new(kaze_size + 1)}
  end
  def main
    @x = (480 - ARROW_SIZE * @kaze_size) / 2
    @y = (480 - ARROW_SIZE * @kaze_size) / 2
    for n in 1..@kaze_size
      i = false
      for m in 1..@kaze_size
        #生成箭头组的实例
        @kaze_arrow[m][n] = Kaze_Arrow.new
        #生成箭头方向
        @kaze_arrow[m][n].kaze_way = rand(3)  #方向:0-上,1-下,2-左,3-右
        @kaze_arrow[m][n].kaze_way = 2 +rand(1) if m + n == @kaze_size * 2
        #生成箭头图案
        kaze_g(m,n)
        @kaze_arrow[m][n].kaze_sprite.x = @x + 32 * m
        @kaze_arrow[m][n].kaze_sprite.y = @y + 32 * n
        i = @kaze_arrow[m][n].kaze_way > 1 or i
      end
      n -= 1 unless i
    end
    @kaze_rect = Sprite.new
    @kaze_rect.bitmap = Bitmap.new("Graphics/Pictures/rect.png")
    kaze_shuoming = Sprite.new
    kaze_shuoming.bitmap = Bitmap.new("Graphics/Pictures/shuoming.png")
    kaze_shuoming.x = 480
    kaze_shuoming.y = 0
    kaze_begin = Sprite.new
    kaze_begin.bitmap = Bitmap.new("Graphics/Pictures/3.png")
    kaze_begin.x = @x
    kaze_begin.y = @y +32
    kaze_end = Sprite.new
    kaze_end.bitmap = Bitmap.new("Graphics/Pictures/3.png")
    kaze_end.x = @x + ARROW_SIZE * ( @kaze_size + 1 )
    kaze_end.y = @y + ARROW_SIZE * @kaze_size
   
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
     
      if $scene != self
        break
      end
    end
   
    Graphics.freeze
  end
  def update
    if Input.trigger?(Input::UP)
      @kaze_arrow_y -= 1 unless @kaze_arrow_y == 1
    end
    if Input.trigger?(Input::DOWN)
      @kaze_arrow_y += 1 unless @kaze_arrow_y == @kaze_size
    end
    if Input.trigger?(Input::LEFT)
      @kaze_arrow_x -= 1 unless @kaze_arrow_x == 1
    end
    if Input.trigger?(Input::RIGHT)
      @kaze_arrow_x += 1 unless @kaze_arrow_x == @kaze_size
    end
    if Input.trigger?(Input::C)
      case @kaze_arrow[@kaze_arrow_x][@kaze_arrow_y].kaze_way
      when 0
        @kaze_arrow[@kaze_arrow_x][@kaze_arrow_y].kaze_way = 1
      when 1
        @kaze_arrow[@kaze_arrow_x][@kaze_arrow_y].kaze_way = 0
      when 2
        @kaze_arrow[@kaze_arrow_x][@kaze_arrow_y].kaze_way = 3
      when 3
        @kaze_arrow[@kaze_arrow_x][@kaze_arrow_y].kaze_way = 2
      end
      kaze_g(@kaze_arrow_x,@kaze_arrow_y)
      kaze_win if kaze_judge?  #胜利检查
    end
    if Input.trigger?(Input::B)
      $game_switches[SWITCH] = false
      game_over
    end
    @kaze_rect.x = @x + @kaze_arrow_x * 32
    @kaze_rect.y = @y + @kaze_arrow_y * 32
  end
  def kaze_judge?
    m = 1
    n = 1
    loop do
      case @kaze_arrow[m][n].kaze_way
      when 0  #上
        return false if n == 1
        n -= 1
        return false if @kaze_arrow[m][n].kaze_way == 1
      when 1  #下
        return false if n == @kaze_size
        n += 1
        return false if @kaze_arrow[m][n].kaze_way == 0
      when 2  #左
        return false if m == 1
        m -= 1
        return false if @kaze_arrow[m][n].kaze_way == 3
      when 3  #右
        if m == @kaze_size
          return true if n == @kaze_size
          return false
        end
        m += 1
        return false if @kaze_arrow[m][n].kaze_way == 2
      end
    end
  end
  def kaze_win
    p "游戏胜利"
    $game_switches[SWITCH] = true
    game_over
  end
  def kaze_g(m,n)
    case @kaze_arrow[m][n].kaze_way
    when 0  #上
      @kaze_arrow[m][n].kaze_sprite.bitmap = Bitmap.new("Graphics/Pictures/0.png")
    when 1  #下
      @kaze_arrow[m][n].kaze_sprite.bitmap = Bitmap.new("Graphics/Pictures/1.png")
    when 2  #左
      @kaze_arrow[m][n].kaze_sprite.bitmap = Bitmap.new("Graphics/Pictures/2.png")
    when 3  #右
      @kaze_arrow[m][n].kaze_sprite.bitmap = Bitmap.new("Graphics/Pictures/3.png")
    end
  end
  def game_over
    for n in 1..@kaze_size
      for m in 1..@kaze_size
        @kaze_arrow[m][n].kaze_sprite.bitmap.clear
      end
    end
    $scene = Scene_Map.new
  end
end 

范例游戏下载:http://www.91files.com/?SAUZKZEUNBHG1RHMD3R4

演示:

电路连接小游戏 VER.1 - 灰白兰·泽 - 你我崩坏的世界

 

  评论这张
 
阅读(249)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018