查看: 2166|回复: 3

[已经过期] 请问用RMXP怎么做连连看?

[复制链接]
梦石
0
星屑
395
在线时间
2 小时
注册时间
2014-1-26
回帖
1
发表于 2016-12-19 19:49:25 | 显示全部楼层 |阅读模式

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

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

×
求解啊~
梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

发表于 2016-12-19 21:44:36 | 显示全部楼层
这个你得用脚本写吧

首先你需要这个:
[pre lang="ruby"]=begin
第一个是获取鼠标相对于游戏界面的位置
使用方法是 Extra.get_cursor 调用一次后会保存到 $Mouse
每一次 Graphics.update 后 要用鼠标位置的话就要调用一次
第二个是判断鼠标是否被按下
使用是 Extra.p? 是的话会返回True
=end
$Mouse=[0,0]
module Extra
  module_function
#---------------------窗口句柄----------------------------------
  Hwnd=Win32API.new("user32", "GetActiveWindow", 'v', 'L').call
#-------------------获取鼠标对于游戏界面坐标---------------------
  GetWindowRect = Win32API.new("user32", "GetWindowRect", %w(i p), 'i')
  GetCursorPos = Win32API.new("user32","GetCursorPos",'P','V')
  def get_cursor
    x=' '*8
    GetCursorPos.Call(x)
    mouse=x.unpack('ll')
    GetWindowRect.call(Hwnd,x)
    gametop=x.unpack('ll')
    x=mouse[0]-gametop[0]-3
    y=mouse[1]-gametop[1]-29
    $Mouse=[x,y]
  end
#-------------------是否按下鼠标-----------------------------
  Get=Win32API.new("user32","GetAsyncKeyState",'i','i')
  def p?()
    Get.call(1) != 0
  end
end
[/pre]


然后 关于连连看的算法问题 可以参考这个 http://jingyan.baidu.com/article/c85b7a640df6d7003bac95d9.html
然后 就靠你自己了
回复

使用道具 举报

梦石
0
星屑
1902
在线时间
959 小时
注册时间
2012-7-5
回帖
225
发表于 2016-12-20 07:18:45 | 显示全部楼层
嗯鼠标脚本,
核心的算法是个广度优先搜索嘛
tan(pi/2)
回复

使用道具 举报

梦石
0
星屑
395
在线时间
2 小时
注册时间
2014-1-26
回帖
1
 楼主| 发表于 2016-12-20 11:49:27 | 显示全部楼层
SixRC 发表于 2016-12-19 21:44
这个你得用脚本写吧

首先你需要这个:

好的,非常感谢~
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部