北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 18693|回复: 15

tintin++ GPS 机器人

[复制链接]
发表于 2015-3-25 15:30:43 | 显示全部楼层 |阅读模式
我的 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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-3-25 15:52:26 | 显示全部楼层
强人啊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-3-25 15:54:56 | 显示全部楼层
赞美大神~~~

不过,你是不是不太上QQ?inn...

之前有问过一个问题可能你没看到:为什么把机器人的脚本语言从Ruby变成了Python呢?是出于什么考虑呢?(因为感觉重写一次的工作量很大,所以比较好奇。。)
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2015-3-25 16:27:27 | 显示全部楼层
回复 3# cappuccino

嗯,不怎么上 QQ....改成 python 是因为之前用 ruby 实现的 xmpp 通知, 其中 xmpp4r 这个 gem  有 bug, 导致机器人概率性的无法连接到 localhost 的 xmpp server... 最终放弃改用 python 了...然后因为强迫症把所有脚本都改成 python 的了...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-3-25 16:51:49 | 显示全部楼层
回复 5# erq


   

酱紫。。XMPP。。不明觉厉。。最近在学习RabbitMQ,不知道可不可以作为类似的替代。。会抽空好好学习一下楼主的代码的。。再次膜拜

btw,楼主的code效率真是太赞了!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-3-26 02:37:51 | 显示全部楼层
一直没弄明白怎么在tintin里调用数据库
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-4-7 19:05:45 | 显示全部楼层
应该是tintin调用python,python再调用数据库。
我看代码里有一个INVOKE,这个是在alias.tin里定义的,用于调用python脚本
#alias {INVOKE} {
    #script {file_name} {python3 -m bin.%0};
    #var file_name ${file_name}[1];
    #if {"${file_name}" != ""} {
        #read ${file_name};
        #system {rm ${file_name}};        
    };
};

但是没搞清楚,python执行结果是怎么回到tt里的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2015-4-7 19:11:39 | 显示全部楼层
回复 8# dreamnb


    另一个帖子里回你啦, 实际这是自己写的一个对 #script 的 wrapper, 利用临时文件做为 python 向 tintin 返回大量数据时的接口。 如果只是返回一个数或一个字符串, 直接通过 #script 就可以了...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-4-8 10:02:42 | 显示全部楼层
感谢。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-4-8 12:56:34 | 显示全部楼层
凡是脚本语言调用第三方数据库,效率都是惨不忍睹吧。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-4-28 10:23 PM , Processed in 0.013176 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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