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

Project1

 找回密码
 注册会员
搜索
打印 上一主题 下一主题

[已经解决] 【脚本制作】定做一个小游戏系统。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
21
发表于 2012-11-14 23:17:02 | 只看该作者
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可自行扩充

点评

抱歉,这BUG无法截图说明啊。就是说泡泡超过游戏范围内进行消除会报错。  发表于 2012-11-15 12:40
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
22
 楼主| 发表于 2012-11-15 10:51:36 | 只看该作者
本帖最后由 笵妮拉·亚修 于 2012-11-15 13:07 编辑

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

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

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

暂时就这样多建议了,感谢帮忙啊!

点评

因为另一个工程就是用QW操作的啊- -  发表于 2012-11-16 16:04
为什么你去按Q和W Σ( ̄□ ̄),那个是测试用的偷懒法,总不能叫我一直等到我要的颜色掉落吧……==,自己用QW变比较快……  发表于 2012-11-15 22:05
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
23
 楼主| 发表于 2012-11-15 11:00:11 | 只看该作者
本帖最后由 笵妮拉·亚修 于 2012-11-15 11:03 编辑

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


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

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

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

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

非常这些天你的帮忙。剩下的最后一点事项也得麻烦你了!

点评

怎么会超出范围??  发表于 2012-11-15 13:08
SB就是消除时,泡泡表情就sb一样了。SB代表的仅仅是移动路径  发表于 2012-11-15 12:32
"泡泡超出方框"啥意思,抱歉,理解能力太弱  发表于 2012-11-15 12:29
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
24
 楼主| 发表于 2012-11-16 16:03:32 | 只看该作者
@沙漠点灰
我不清楚,就类似下面的情况。

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

点评

哦,为方便,把-1行设为0了,游戏中,0是空,已修改  发表于 2012-11-16 19:03
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
25
发表于 2012-11-16 19:03:58 | 只看该作者
Beta
貌似没什么可说的,看看哪些不足

评分

参与人数 1星屑 +60 收起 理由
笵妮拉·亚修 + 60 塞糖

查看全部评分

>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
26
 楼主| 发表于 2012-11-16 21:04:58 | 只看该作者
本帖最后由 笵妮拉·亚修 于 2012-11-16 21:09 编辑

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

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

就这样先。
我再测试会
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
27
发表于 2012-11-16 23:18:11 | 只看该作者
懒得打包了,直接代码,把"危机"下的全替换,注意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,因为没有优化,每个泡泡就是一个精灵,而不是上次俄罗斯的全部才一个精灵,主要是
各种效果只用一个精灵难度非常大.
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
28
 楼主| 发表于 2012-11-17 10:53:04 | 只看该作者
@沙漠点灰
测试发现还是存在了一点点问题。
虽然可以实现26楼的效果。但是我想危急时
保持着危急的表情。而不是显示了一下之后又刷新到
一般跟眨眼的表情。
另外,chain的图片高度能修改吗?

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
29
发表于 2012-11-17 11:35:07 | 只看该作者
不好意思,没测试那里:
  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号动画,即不显示,
之后的以此类推

评分

参与人数 1星屑 +60 收起 理由
笵妮拉·亚修 + 60 塞糖

查看全部评分

>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
30
 楼主| 发表于 2012-11-17 12:04:37 | 只看该作者
@沙漠点灰
恩,解决了。感谢了。
于是可能是自己的表达有问题了。
很抱歉!
只好举个例子好了。
比如:
一次3连消,就在3连消结束后播放1阶层动画一次;
而不是在2连消时播放1阶层动画,3连消时又播放1阶层动画;
再一个例子:
一次10连消,就在10连消结束后播放4阶层动画一次;
而不是在2连消时播放1阶层动画,3连消时播放1阶层动画,4连消时播放2阶层动画。
5连消时又播放2阶层动画..............................
这样会拖慢游戏的速度,而且也不美观的说。
希望能修改一下,感谢。
可以用WHEN 的方法,也可以用其他的方法。

点评

真是抱歉,这个脚本不支持预判定,想实现的话,必须从基层重写代码.....  发表于 2012-11-17 16:00
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-19 10:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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