tintin++ GPS 机器人
我的 tintin++ 机器人终于也可以用 GPS 了, 主要是用 python 写的, 并且和 tintin++ 配合工作.这个版本的 GPS 寻路时支持权重, 并且用户可以在 setting 中设置这些权重. 例如, 默认设置了这些权重:
// 出口有人堵路
set gps.weight.clear 10;
// 要过河
set gps.weight.guohe 50;
// 有延迟, 例如金牛道
set gps.weight.delay 5;
// 要坐车
set gps.weight.zuoche 20;
权重越高越不容易被选择. 实现原理类似于在水面上抛两个石子, 然后波纹会因为权重的原因不再是同心圆...有权重的点会有限的阻碍波纹的传播而
形成一个凹形的波纹.
权重是一个很有用的概念, 例如用户如果想省时间不坐船, 可以把 gps.weight.guohe 设置为一个较大的值. 用户如果有长袖, 可以设置 gps.weight.clear
为一个较小的值, 如果是土豪, 可以选择多坐车..., 包括晚上的北京城墙也可以使用权重来处理.
如果要尝试, 可以 git clone https://github.com/sunwayforever/pkuxkx.git, 然后在程序中使用 "gps.gt <房间号或房间名称>"
具体的代码位于 bin/gps 下 (python 脚本) 和 plugin/gps.tin
1. 寻路部分代码是参考的论坛上提到的那个"两个点同时遍历求交点"的方法, 我图简单用递归写了, 并且有许多 sql 语句.
性能可能有问题 ..., 而且我也没有仔细考虑过程序的正确性, 反正目前是可以工作的.
2. 数据库部分, 由于机器人管理的规定, 我的 github 仓库中只包含一个 sample 数据库, 完整的数据库不共享...
北大侠客行MUD,中国最好的MUD 强人啊 赞美大神~~~
不过,你是不是不太上QQ?inn...
之前有问过一个问题可能你没看到:为什么把机器人的脚本语言从Ruby变成了Python呢?是出于什么考虑呢?(因为感觉重写一次的工作量很大,所以比较好奇。。) 回复 3# cappuccino
嗯,不怎么上 QQ....改成 python 是因为之前用 ruby 实现的 xmpp 通知, 其中 xmpp4r 这个 gem有 bug, 导致机器人概率性的无法连接到 localhost 的 xmpp server... 最终放弃改用 python 了...然后因为强迫症把所有脚本都改成 python 的了... 回复 5# erq
{:8_304:}
酱紫。。XMPP。。不明觉厉。。最近在学习RabbitMQ,不知道可不可以作为类似的替代。。会抽空好好学习一下楼主的代码的。。再次膜拜
btw,楼主的code效率真是太赞了! 一直没弄明白怎么在tintin里调用数据库 应该是tintin调用python,python再调用数据库。
我看代码里有一个INVOKE,这个是在alias.tin里定义的,用于调用python脚本
#alias {INVOKE} {
#script {file_name} {python3 -m bin.%0};
#var file_name ${file_name};
#if {"${file_name}" != ""} {
#read ${file_name};
#system {rm ${file_name}};
};
};
但是没搞清楚,python执行结果是怎么回到tt里的。 回复 8# dreamnb
另一个帖子里回你啦, 实际这是自己写的一个对 #script 的 wrapper, 利用临时文件做为 python 向 tintin 返回大量数据时的接口。 如果只是返回一个数或一个字符串, 直接通过 #script 就可以了... 感谢。 凡是脚本语言调用第三方数据库,效率都是惨不忍睹吧。
页:
[1]
2