Project1

标题: 【脚本制作】定做一个小游戏系统。 [打印本页]

作者: 笵妮拉·亚修    时间: 2012-11-8 14:45
标题: 【脚本制作】定做一个小游戏系统。
于是看到一些定做战旗系统;
一些卡片系统;
还有什么战斗系统的;
于是我也想定做一个小游戏系统。
提醒:本工程是大型工程哦。
具体定做的内容在附件内。
附件:http://l9.yunpan.cn/lk/sVkSExswFa3je
请脚本高高高人帮忙。
在此鸣谢
66RPG提供的好平台。
dsu_plus_rewardpost_czw
作者: 沙漠点灰    时间: 2012-11-8 20:09
看了下游戏规则,除了动画处理比较麻烦外,其余简单。
@hys111111
召唤版主!!若是版主要做,我就不做了,以免浪费时间.请尽快回复
作者: enghao_lim    时间: 2012-11-8 23:20
久久没来,一来看到那么多个大型悬赏都是楼主,暴汗 ==''。
核心其实不难,难就难在美工处理方面还有动画配合的流畅度,
小游戏一旦这些没有配合好很可能就会失败的。
反正楼上的接了,我就不插手了。
作者: 亿万星辰    时间: 2012-11-9 07:32
这么大的悬赏,快来做吧~不然版主们又要考虑回收VIP了~

打算手痒的做个事件版的……
作者: 虾米£浪子    时间: 2012-11-9 12:25
话说150VIP值多少钱?
作者: hys111111    时间: 2012-11-9 13:18
本帖最后由 hys111111 于 2012-11-9 13:21 编辑

下载下来看工程介绍,竟然是做魔法气泡的游戏……

(好吧,puyo制作成行走图还方便一些)如果丢掉66RPG俄罗斯方块脚本自己写貌似还简单一些。
顺便问一下fever功能要不要也一起做 ?
作者: 约修亚_RK    时间: 2012-11-9 13:55
勉强试试看吧……
作者: 沙漠点灰    时间: 2012-11-9 18:35
最后询问一次,是完全仿造吗。
第一次只玩了默认第一个,就是每次只出现1*2的泡泡,所以说简单,原来后面还有其他模式,吓尿了,有3个的,4个的。把之前的想法全部推翻了。
请把完整的规则说明一次
作者: 笵妮拉·亚修    时间: 2012-11-10 11:35
沙漠点灰 发表于 2012-11-9 18:35
最后询问一次,是完全仿造吗。
第一次只玩了默认第一个,就是每次只出现1*2的泡泡,所以说简单,原来后面还 ...

昨天有事忘记了,抱歉。
规则是得到多少分就胜利,碰到中间顶部的两行
叉叉就算失败。然后请先做1*2的泡泡试试。如果
有能力的话,再尝试做2*2或者1连2的泡泡吧。
就这样,感谢帮忙!
作者: 沙漠点灰    时间: 2012-11-10 22:32

一个下午的结果,因为一个不明原因浪费了几个小时,怀疑是ruby的bug....
预览版1号....其实啥也没完成...
看看UI这怎样吧...悲剧的"接触挤压动画"正在思考中....

project.rar
作者: 笵妮拉·亚修    时间: 2012-11-11 10:22
沙漠点灰 发表于 2012-11-10 22:32
一个下午的结果,因为一个不明原因浪费了几个小时,怀疑是ruby的bug....
预览版1号....其实啥也没完成...
...

呵呵呵
本来还是蛮兴奋的看到有预览版出来的。
结果有点失望呀。
1.游戏界面好像超出了方框了
2.感觉像俄罗斯方块了,具体的不用说吧。
3.无法消除,无法游戏结束
4.比较好的就是开头的READY跟暂停了。
总之非常感谢你帮忙,这个大工程还是理清楚思路。
慢慢制作为好。
作者: 沙漠点灰    时间: 2012-11-11 21:00
再次坑爹!!坑爹预览版2号送上,上次的挤压动画想到方法了,下个版本实现吧...
先说一下素材问题:

如图,素材没有完全密封,希望lz自己加工一下....再赞一下素材的表情分布,
实在太科学了....自己一个人可能想不到这种分布....

看看做了的有哪些不足....
最后骂一下这坑爹学校,妹的...都大学了,作业比高三还多(又或者是我高三没怎么做作业??)....

坑爹无极限2
作者: 笵妮拉·亚修    时间: 2012-11-12 11:25
@沙漠点灰
整体的游戏规则就出来了?
好快。。。。。。
不过有些问题还是很纠结的
尝试进行10连消,结果老是有BUG干扰。
以下是暂时我发现的一点问题
1.消除的效果,难道是素材问题吗?



2.返回标题时无法清除泡泡




3.BUG一个,连消有错位现象。就是在相隔大概一层的位置,四个泡泡
没有接触也会触发消除。
偶尔会出现,这个请你测试一下工程。大概就会明白了。
请务必修复,谢谢。

另继续期待下一个坑爹版的诞生
作者: enghao_lim    时间: 2012-11-13 19:08
@笵妮拉·亚修
楼主,我看着看着突然有一个不错的思路,所有忍不住也写了一个……==''
基本上核心功能已经完成,只是没有什么美化,啊哈哈哈 XD。
我最近也几乎都只是在写RM的小游戏,这个倒是激发了我其他的灵感,呵呵。
连接 <--------------
作者: 亿万星辰    时间: 2012-11-13 19:37
本帖最后由 亿万星辰 于 2012-11-13 19:39 编辑
enghao_lim 发表于 2012-11-13 19:08
@笵妮拉·亚修
楼主,我看着看着突然有一个不错的思路,所有忍不住也写了一个……==''
基本上核心功能已经 ...


你们一个个都玩得挺high的啊。。。
你这个有点问题,
比如是这样的情况

□□■■



□■■

上面那两个黑方块落下来的时候,只会消除掉左边那块先接触下面那三块以后变成的四块,而右边的那块会保留。。。
作者: 笵妮拉·亚修    时间: 2012-11-13 19:43
enghao_lim 发表于 2012-11-13 19:08
@笵妮拉·亚修
楼主,我看着看着突然有一个不错的思路,所有忍不住也写了一个……==''
基本上核心功能已经 ...

好厉害。
压缩效果居然做出来了?
可是为什么不是从地图里用脚本直接进入游戏的?
一些美化效果没有做出来,实在可惜啊。
如果可以的话,可以继续试试做下去吗?
虽然已经有人在接手工程了。
不过我会尽量给你合理的报酬的。
作者: enghao_lim    时间: 2012-11-13 19:58
笵妮拉·亚修 发表于 2012-11-13 19:43
好厉害。
压缩效果居然做出来了?
可是为什么不是从地图里用脚本直接进入游戏的?

哈哈,我倒是能够继续没有问题,报酬就算了,我也就有兴致做出来了,其目的不在报酬,就当我借你的贴来练练手 =)。不能从地图是因为我懒得每次都从地图进入测试,过后给你把地图版本的弄好。
至于压缩效果嘛,其实我只是模仿你给的那个flash游戏而已,然后大概看了一下介绍,并没有对消失有什么要求,所以我就弄着那个模仿的了,要是是我看漏了那就不好意思了。
作者: 沙漠点灰    时间: 2012-11-13 22:08
最近学校的事较多,几乎没什么时间,上次的bug貌似解决了,再测试看看吧..
下次就是Alpha版了...
http://pan.baidu.com/share/link?shareid=122467&uk=4228885365
最后要说明的是挤压动画,没学过弹性形变的公式,总有点不协调,lz可自行修改

  ZOOM = [1.0,0.95,0.9,0.86,0.82,0.76,0.74,0.72,0.71,0.70,0.71,0.72,
  0.74,0.76,0.82,0.86,0.9,0.95]

就是压缩率了,是逆序的
作者: 笵妮拉·亚修    时间: 2012-11-14 09:55
@沙漠点灰
嗯,效果比上次的要不坑爹了。
利用上电脑课的时间测试了一下。
发现了一些问题。
1.第一次完成游戏任务后,退出再进行游戏时会报错。



2.全消时也会报错。



另有一些比较纠结的
1.分数不能事件脚本内自设定吗?
2.显示动画时,只要在最后一消时,显示对应的动画即可。
3.胜利跟失败时的画面可以停留久一些么?
4.其他人物表情可以也表现出来么?

还有
压缩动画做得的确不错,感觉萌了好多!> <
如果加上高度压缩的话就更棒了啊。
可以参考一下楼上有位前辈做得工程哦。

暂时就这样多了。回去时再测试,要下课了!
作者: enghao_lim    时间: 2012-11-14 18:48
http://www.lim-space.tk/etc/PuyoGame.rar
工程2号,楼主我大概翻了一下那个文档,能看懂的我都弄了,剩下的估计你找不着的就是因为我不了解是什么意思了。
作者: 沙漠点灰    时间: 2012-11-14 23:17
Alpha版出炉,基本功能全部实现,精灵的表情lz的doc里面貌似没说完整,请完整说明。
Alpha

  Win                          = [220,220,1]
  Lose                         = [220,220,2]
  AllClear                     = [220,220,3]
  WinLoli                      = [220,220,4]
  LoseLoli                     = [220,220,5]
  Clear                        = [220,220,[0,0,6,6,7,7,7,8,8,8,9,9,9,10,10,10,10,10,10]]

希望lz不会陌生


加入消除动画,
  SB = [(1..32).inject([]){|a,b|a<<[b,(b-28)**2/10]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b-32)**2/8+5]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b-30)**2/15-5]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b-32)**2/12+2]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b+2)**2/10]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b)**2/8+5]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b-1)**2/15-5]}.reverse,
        (1..32).inject([]){|a,b|a<<[b,(b+2)**2/12+2]}.reverse,
  ] # 移动路径


这就是fever表情sb之后的移动路径,正弦函数就不建议了....lz可自行扩充

作者: 笵妮拉·亚修    时间: 2012-11-15 10:51
本帖最后由 笵妮拉·亚修 于 2012-11-15 13:07 编辑

@enghao_lim
很华丽的说啊。
不过测试时发现了几个问题。
第一个按Q,W会改变泡泡的颜色
这个是怎么回事呢?
第二个是,连消时大于10时,显示的数字会重叠在一起。

第三个是,那些连消范例做错了啦。除了一跟二,其它的
红软糖消除都只算是两连消了啦。
就是说无论是同种颜色还是不同颜色的软糖
同时消除时,只当作一连消来计算。
这个规则弄错了哦。

现在就只剩下一个连消动画的项目了。
另外,希望显示连消数时,每消除一次显示一次。
而不是消除完毕显示总的消除数。

暂时就这样多建议了,感谢帮忙啊!
作者: 笵妮拉·亚修    时间: 2012-11-15 11:00
本帖最后由 笵妮拉·亚修 于 2012-11-15 11:03 编辑

@沙漠点灰
整体效果基本都出来了啊,好高兴!!
泡泡消除动画也精致了许多,很萌!
不过依旧有些小问题。
麻烦你测试一下。
一:泡泡超出方框进行消除时会报错,之前的版本也有。现在才
注意到这点。


二:全消时,精灵的表情和语句一直都保持着。很别扭。

(背景是自己加上去的,别介意!)

三:sb连消动画一直看不明白是什么意思。
而且只要显示一次最大连消数的动画就够了。
这个痛苦ING

四:其他表情我没有想到其他用途,可以的话帮忙想想。
比如多久时间没有连消是变为疑惑表情。
隔多少秒眨眼一次等等。

非常这些天你的帮忙。剩下的最后一点事项也得麻烦你了!
作者: 笵妮拉·亚修    时间: 2012-11-16 16:03
@沙漠点灰
我不清楚,就类似下面的情况。

将绿色泡泡旋转后放到第二行时,进行消除时就会报错。

作者: 沙漠点灰    时间: 2012-11-16 19:03
Beta
貌似没什么可说的,看看哪些不足
作者: 笵妮拉·亚修    时间: 2012-11-16 21:04
本帖最后由 笵妮拉·亚修 于 2012-11-16 21:09 编辑

@沙漠点灰
哎呀,即将就要完成了啊。
测试时发现有一些小问题。
精灵变更表情之后,
再变回一般表情时就没有眨眼效果了。
还有那疑惑的表情是哪里定义的。
好奇怪,如果可以的话还是删除掉吧。
对了,那个连消数图片被泡泡挡住了,MS是图片高度不够吧

剩下的工程就是一些连消数动画的制作了。
另外下落速度是哪里定义的?
感觉游戏时帧数不太够?也许是错觉= =

就这样先。
我再测试会
作者: 沙漠点灰    时间: 2012-11-16 23:18
懒得打包了,直接代码,把"危机"下的全替换,注意end:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 危机!
  3.   #--------------------------------------------------------------------------
  4.   def crisis!
  5.     return if@crisis == (@map.max <= Max) or @allclear_count > 0
  6.     @crisis = (@map.max <= Max)
  7.     if @crisis
  8.       loli_show 3
  9.       @bgp_sprite.bitmap = RPG::Cache.picture("背景底纹危急")
  10.     else
  11.       loli_show 4
  12.       @bgp_sprite.bitmap = RPG::Cache.picture("背景底纹一般")
  13.     end
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 眨眼刷新
  17.   #--------------------------------------------------------------------------
  18.   def update_eyes
  19.     @eyes = 200 if @eyes == 0
  20.     @eyes -= 1
  21.     @loli_.bitmap = RPG::Cache.picture("绿之妖精眨眼") if @eyes == 10
  22.     @loli_.bitmap = RPG::Cache.picture("绿之妖精一般") if @eyes == 1
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 全消
  26.   #--------------------------------------------------------------------------
  27.   def allclear
  28.     loli_show 0
  29.     animation = $data_animations[AllClear[2]]
  30.     @amina[2].animation(animation, true)
  31.     @allclear_count = 30
  32.     @crisis = nil
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 刷新处理
  36.   #--------------------------------------------------------------------------
  37.   def update_p
  38.     @pause_wnd.update if @pause_wnd.active # 窗口刷新
  39.     bgm_show # 显示BGM文字
  40.     update_eyes # 眨眼
  41.     @allclear_count -= 1 if @allclear_count > 0
  42.     crisis! if @allclear_count == 1
  43.     @amina.each{|i|i.update}
  44.     loli_update
  45.     return win if @score_tag <= @score
  46.     if @pause_count # 暂停精灵刷新
  47.       @pause_count += 0.1
  48.       @pause_count %= 7
  49.       @pause_spt.bitmap.clear
  50.       @pause_spt.bitmap.blt(0,0, @pause_cache, Rect.new(0,0,(6+@pause_count.to_i)*22,45))
  51.     end
  52.     if Input.trigger?(Input::B) # B按下时
  53.       $game_system.se_play($data_system.cancel_se)
  54.       Graphics.freeze
  55.       if @pause_wnd.active # 关闭
  56.         @pause_wnd.visible = false
  57.         @black.opacity = 0
  58.         @pause_count = nil
  59.         @pause_spt.dispose;@pause_spt.bitmap.dispose;@pause_spt = nil
  60.         @input_allow = true
  61.       else # 生成
  62.         @pause_spt = Sprite.new;@pause_spt.bitmap = Bitmap.new(640,480)
  63.         @pause_spt.x = 202;@pause_spt.y= 203
  64.         @pause_count = 1
  65.         @pause_spt.bitmap.blt(0,0, @pause_cache, Rect.new(0,0,(6+@pause_count)*22,45))
  66.         @pause_spt.z = 590
  67.         @pause_wnd.visible = true
  68.         @black.opacity = 100
  69.         @input_allow = false
  70.       end
  71.       Graphics.transition(30)
  72.       @pause_wnd.index = 0
  73.       return @pause_wnd.active = !@pause_wnd.active
  74.     end
  75.     if Input.trigger?(Input::C) and @pause_wnd.active# C按下时
  76.       $game_system.se_play($data_system.decision_se)
  77.       case @pause_wnd.index
  78.       when 0 # 恢复
  79.         Graphics.freeze
  80.         @pause_wnd.visible = false
  81.         @black.opacity = 0
  82.         @pause_count = nil
  83.         @pause_spt.dispose;@pause_spt.bitmap.dispose;@pause_spt = nil
  84.         Graphics.transition(30)
  85.         @pause_wnd.index = 0
  86.         @input_allow = true
  87.         return @pause_wnd.active = !@pause_wnd.active
  88.       when 1 # 随机BGM
  89.         play(@bgms[rand(@bgms.size)])
  90.       when 2 # 返回标题
  91.         $scene = Scene_Title.new
  92.         @pause_spt.dispose;@pause_spt.bitmap.dispose;@pause_spt = nil
  93.       end
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 按键处理
  98.   #--------------------------------------------------------------------------
  99.   def input_p
  100.     @move = 0;@speed = false;@turn = 0
  101.     @move = 1 if Input.repeat?(Input::RIGHT) and !$game_system.se_play($data_system.cursor_se)
  102.     @move =-1 if Input.repeat?(Input::LEFT)  and !$game_system.se_play($data_system.cursor_se)
  103.     @turn = 1 if Input.trigger?(Input::R)and !$game_system.se_play($data_system.cursor_se)
  104.     @turn =-1 if Input.trigger?(Input::L)and !$game_system.se_play($data_system.cursor_se)
  105.     @speed=true if Input.press?(Input::DOWN)
  106.   end            
  107.   #--------------------------------------------------------------------------
  108.   # ● 精灵处理
  109.   #--------------------------------------------------------------------------
  110.   def sprite_p
  111.     # 刷新puyo
  112.     if @map.can_down?(@now_b)
  113.        @now_b.move_down if @now_b.can_down?
  114.     else
  115.       if @now_b.can_down? and @now_b.can_turn? and @now_b.can_move?
  116.         @map.register(@now_b)
  117.         chain = 0;num=0
  118.         loop do
  119.           until @map.update
  120.             Graphics.update
  121.             update_eyes
  122.           end
  123.           @map.update # 再运行一次以检
  124.           Graphics.update
  125.           break if @map.can_next? # 无4组时
  126.           # 执行清空
  127.           chain += 1 # 连击
  128.           animation = $data_animations[Clear[2][chain]]
  129.           @amina[-1].animation(animation, true)
  130.           @map.sb! # 显示SB了
  131.           60.times{|i|@amina[-1].update;Graphics.update;update_eyes
  132.             break if @map.sb_update
  133.             Audio.se_play("Audio/SE/chain#{[chain,7].min}") if i == 10
  134.             show_chain chain if i == 32# 显示连击
  135.            }
  136.           Graphics.update
  137.           num = @map.remove # 消除
  138.           @score += num * 10 * (2 ** chain) # 加分
  139.           check_score # 更新分数
  140.           20.times{Graphics.update;update_eyes}
  141.         end
  142.         show_chain 0 # 消除显示连击
  143.         show_next
  144.         return lose if @map.game_over?
  145.         return allclear if @map.all_clear?
  146.         crisis!
  147.       end
  148.     end
  149.     @now_b.move(@move) if @move != 0 and @now_b.can_move? and @map.can_move?(@now_b,@move)
  150.     @now_b.turn(@turn) if @turn != 0 and @now_b.can_turn? and @map.can_turn?(@now_b,@turn)
  151.     @level.times{@now_b.update(@speed)}
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● BGM播放
  155.   #--------------------------------------------------------------------------
  156.   def play(bgm=@bgm)
  157.     @bgm = bgm  # 记录名称
  158.     Audio.bgm_play("Audio/BGM/#{@bgm}", 100, 100)
  159.     @bgm_bmp.dispose if @bgm_bmp # 释放之前位图
  160.     rect = @black.bitmap.text_size(@bgm) # 获取文字宽度
  161.     @bgm_bmp = Bitmap.new(rect.width, rect.height) # 生成新位图
  162.     @bgm_bmp.draw_text(rect, @bgm) # 刻画文字
  163.     @show.bitmap.fill_rect(BGMRect, Color.new(0,0,0,0)) # 清空之前像素块
  164.     @show.bitmap.blt(BGMRect.x, BGMRect.y, @bgm_bmp, Rect.new(0,0,BGMRect.width,BGMRect.height)) # 复制像素块
  165.     @bgm_x = 0
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● BGM显示
  169.   #--------------------------------------------------------------------------
  170.   def bgm_show
  171.     return if !@bgm_bmp
  172.     @show.bitmap.fill_rect(BGMRect, Color.new(0,0,0,0)) # 清空之前像素块
  173.     @bgm_x = [[@bgm_x+(@bgm_s ? 0.25 : -0.25),@bgm_bmp.width-BGMRect.width].min,0].max
  174.     @bgm_s = !@bgm_s if @bgm_x == @bgm_bmp.width-BGMRect.width or @bgm_x == 0
  175.     @show.bitmap.blt(BGMRect.x, BGMRect.y, @bgm_bmp, Rect.new(@bgm_x,0,BGMRect.width,BGMRect.height)) # 复制像素块
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 显示连击 0即为消除
  179.   #--------------------------------------------------------------------------
  180.   def show_chain(chain)
  181.     if chain > 0
  182.       show_chain 0
  183.       x = 0;bmp = RPG::Cache.picture("chain")
  184.       chain.to_s.split("").each{|i|@show.bitmap.blt(Chain.x+x, Chain.y, bmp, Rect.new(i.to_i*20,0,20,42));x += 20}
  185.       @show.bitmap.blt(Chain.x+x, Chain.y, bmp, Rect.new(200,0,90,42))
  186.     else
  187.       @show.bitmap.fill_rect(Chain, Color.new(0,0,0,0))
  188.     end
  189.   end
  190. end

loli_show(type,num=0)显示表情,
下落速度是X像素每帧,X是等级,在:
431:@level.times{@now_b.update(@speed)}

帧率为60FPS,因为没有优化,每个泡泡就是一个精灵,而不是上次俄罗斯的全部才一个精灵,主要是
各种效果只用一个精灵难度非常大.

作者: 笵妮拉·亚修    时间: 2012-11-17 10:53
@沙漠点灰
测试发现还是存在了一点点问题。
虽然可以实现26楼的效果。但是我想危急时
保持着危急的表情。而不是显示了一下之后又刷新到
一般跟眨眼的表情。
另外,chain的图片高度能修改吗?

于是问问,这个效果功能是不能实现还是
什么原因呢?因为之前我也提到过了。
  1. 连消的动画设定:
  2. 1消除:无动画显示
  3. 2~3连消:显示一阶动画;
  4. 4~6连消:显示二阶动画;
  5. 7~9连消:显示三阶动画;
  6. 10~12连消:显示四阶动画;
  7. 13连消以上:显示五阶动画。
  8. 阶层动画只在连消结束后显示以上符合的动画一次!
复制代码
先就这些问题了
又得麻烦你抱歉了

作者: 沙漠点灰    时间: 2012-11-17 11:35
不好意思,没测试那里:
  1.   #--------------------------------------------------------------------------
  2.   # ● 眨眼刷新
  3.   #--------------------------------------------------------------------------
  4.   def update_eyes
  5.     return if @bgp_sprite.bitmap == RPG::Cache.picture("背景底纹危急")
  6.     @eyes = 200 if @eyes == 0
  7.     @eyes -= 1
  8.     @loli_.bitmap = RPG::Cache.picture("绿之妖精眨眼") if @eyes == 10
  9.     @loli_.bitmap = RPG::Cache.picture("绿之妖精一般") if @eyes == 1
  10.   end
复制代码
替换:眨眼刷新

chain的图片高度修改了啊...
是嵌到@show里面的.
@show.z = 105


消除动画,没理解到lz什么意思,我设定了:
  Clear                        = [220,220,[0,0,6,6,7,7,7,8,8,8,9,9,9,10,10,10,10,10,10]]

代表0,1消除显示0号动画,即不显示,
之后的以此类推
作者: 笵妮拉·亚修    时间: 2012-11-17 12:04
@沙漠点灰
恩,解决了。感谢了。
于是可能是自己的表达有问题了。
很抱歉!
只好举个例子好了。
比如:
一次3连消,就在3连消结束后播放1阶层动画一次;
而不是在2连消时播放1阶层动画,3连消时又播放1阶层动画;
再一个例子:
一次10连消,就在10连消结束后播放4阶层动画一次;
而不是在2连消时播放1阶层动画,3连消时播放1阶层动画,4连消时播放2阶层动画。
5连消时又播放2阶层动画..............................
这样会拖慢游戏的速度,而且也不美观的说。
希望能修改一下,感谢。
可以用WHEN 的方法,也可以用其他的方法。
作者: 沙漠点灰    时间: 2012-11-17 12:23
哦,这个意思啊。
替换:精灵处理
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 精灵处理
  3.   #--------------------------------------------------------------------------
  4.   def sprite_p
  5.     # 刷新puyo
  6.     if @map.can_down?(@now_b)
  7.        @now_b.move_down if @now_b.can_down?
  8.     else
  9.       if @now_b.can_down? and @now_b.can_turn? and @now_b.can_move?
  10.         @map.register(@now_b)
  11.         chain = 0;num=0
  12.         loop do
  13.           until @map.update
  14.             Graphics.update
  15.             update_eyes
  16.           end
  17.           @map.update # 再运行一次以检
  18.           Graphics.update
  19.           break if @map.can_next? # 无4组时
  20.           # 执行清空
  21.           chain += 1 # 连击
  22.           @map.sb! # 显示SB了
  23.           60.times{|i|Graphics.update;update_eyes
  24.             break if @map.sb_update
  25.             Audio.se_play("Audio/SE/chain#{[chain,7].min}") if i == 10
  26.             show_chain chain if i == 32# 显示连击
  27.            }
  28.           Graphics.update
  29.           num = @map.remove # 消除
  30.           @score += num * 10 * (2 ** chain) # 加分
  31.           check_score # 更新分数
  32.           20.times{Graphics.update;update_eyes}
  33.         end
  34.         show_chain 0 # 消除显示连击
  35.         @amina[-1].animation($data_animations[Clear[2][chain]], true)
  36.         show_next
  37.         return lose if @map.game_over?
  38.         return allclear if @map.all_clear?
  39.         crisis!
  40.       end
  41.     end
  42.     @now_b.move(@move) if @move != 0 and @now_b.can_move? and @map.can_move?(@now_b,@move)
  43.     @now_b.turn(@turn) if @turn != 0 and @now_b.can_turn? and @map.can_turn?(@now_b,@turn)
  44.     @level.times{@now_b.update(@speed)}
  45.   end

作者: 笵妮拉·亚修    时间: 2012-11-17 16:43
@沙漠点灰
就没有办法将时延缩短一点么?
真的很可惜呀。

最后再优化一下代码就可以收工了。
刚刚将工程给个会玩这个游戏的朋友。
结果反映不太好。
现在希望能优化一下这几个方面。
1.下落的速度降低一点,3级的速度都感觉很难控制了。
2.下落的泡泡跟已经在地的泡泡接触太快了。一下子就黏上去了。没有缓冲的效果。
在危急状态时就根本只能任其下落,完全控制不了。(这是朋友的测试感言- -)
希望可以加入一点缓冲,让游戏的平衡性提高一点。
3.就是那个动画的时延问题了。

希望你可以优化以上几个方面。
感谢你的耐心啊,我脚本费你能不介意真的很感激呀。
作者: 沙漠点灰    时间: 2012-11-18 14:13
因为不能dup Sprite类,所以在我这没办法....没办法预判断,所以,抱歉了..重写脚本就算了...
Scripts.7z (127.42 KB, 下载次数: 51)
多了个
Hard  = 3
表示这里每3级代表之前1级,比如现在的
1级=之前的1级
4级=之前的2级
7级=之前的3级
.............
作者: 笵妮拉·亚修    时间: 2012-11-18 19:15
@沙漠点灰
那个动画问题就算了
没事的。
关于那个缓冲的效果,有一点问题。
1.缓冲的时间好像有点长,3秒耶。
能不能自己修改的呀?
2.缓冲效果会带来泡泡偶尔出现错位,能不能修正一下
这个问题呢?




作者: 沙漠点灰    时间: 2012-11-19 20:36
花了一个小时,终于找到原因了,没找到最好了解决方法,先修改如下:
精灵处理

下,有个:
@now_b.move_down if @now_b.can_down?

修改为
  1. @now_b.move_down if @now_b.can_down? and @now_b.can_move? and @now_b.can_turn?
复制代码
现在变成了"等待下降",在下降过程中,若接近每格底线8像素以下(25~32像素行),会等待平移或旋转
结束。不过,本人感觉不到"等待",若lz感觉强烈,我会再次思考的....
作者: 笵妮拉·亚修    时间: 2012-11-20 12:04
@沙漠点灰
大体上没有什么问题了。
如果有什么问题就再请教一下你。
另外,能不能转为VX呢?
跟上次的俄罗斯方块一样?
您对代码比较熟悉,所以。。。
能否麻烦一下?
感谢
作者: enghao_lim    时间: 2012-11-23 21:22
修正你说的问题,不过那个连消的规则,我尽力理解得出来的就是现在这样,你自己看着对不对吧。@@

PuyoGameData.rar

170.6 KB, 下载次数: 36


作者: 笵妮拉·亚修    时间: 2012-11-24 09:24
@enghao_lim
感谢能抽空帮忙,不过好像错了哦。
无论消除多少连都始终显示的是一连消。
这是怎么回事?
麻烦请你再看看吧。
作者: enghao_lim    时间: 2012-11-25 19:12
笵妮拉·亚修 发表于 2012-11-24 09:24
@enghao_lim
感谢能抽空帮忙,不过好像错了哦。
无论消除多少连都始终显示的是一连消。

连消的规则不是,要每次掉落都有消除才叫连消?对吧这个理解?
或者是你不介意的稍微仔细的解释一下那个连消规则 =='',我理解零蛋了。
作者: 笵妮拉·亚修    时间: 2012-11-25 19:57
本帖最后由 笵妮拉·亚修 于 2012-11-25 19:59 编辑

@enghao_lim

没错。
是这个意思没错的。
不过就是每次掉落时的消除出错了。
掉落时,同时触发的消除只算一连消而已。
只是这个地方错了。
比如:

这个样子只算一连而已。
努力理解一下。
作者: 沙漠点灰    时间: 2012-11-29 14:07
额,计划提前了,这是vx版的。
VX坑爹版


一直很奇怪lz一直没说评分函数,这是评分的语句,lz可搜索后自行修改:
@score += num * 10 * (2 ** chain) # 加分





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