北大侠客行MUD论坛

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

15行代码的mud

[复制链接]
发表于 2012-11-30 15:10:05 | 显示全部楼层 |阅读模式
原文(英文):http://viewsourcecode.org/why/redhanded/bits/mudIn15LinesOfRuby.html

一个叫Jon的用ruby写了一个只有15行代码的mud。
  1. require 'socket';require 'yaml';def q x;$m.find{|o|o.t==:p&&x==o.n};end
  2. def a r,t;$m.find_all{|o|t==o.t&&(!r||r==o.l)};end;def g z;a(nil,:p).each{|p|
  3. p.p z};end;class O;attr_accessor :i,:n,:l,:e,:s,:t;def initialize n,l=nil,t=:r
  4. @n,@l,@i,@t=n,l,$d+=1,t;@e={};end;def p s;@s.puts(s)if @s;end;def y m
  5. v=$m.find{|o|@l==o.i};t=v.e.keys;case m;when/^q/;@s.close;@s=nil;
  6. File.open('d','w'){|f|YAML::dump $m,f};when/^h/;p "i,l,d,g,c,h,q,,O,R"
  7. when/^i/;a(@i,:o).each{|o|p o.n};when/^c.* (.*)/;g "#{@n}:#{$1}"
  8. when/^g/;a(@l,:o).each{|q|q.l=@i};when/^d/;a(@i,:o).each{|q|q.l=@l}
  9. when/^O (.*)/;$m<
  10. v.e[$2]=d.i;d.e[$3]=v.i;when/^l/;p v.n;(a(@l,:p)+a(@l,:o)).each{|x|
  11. p x.n if x.s||x.t==:o};p t.join '|';when/(^#{t.empty? ? "\1" : t.join('|^')})/
  12. @l=v.e[$1];else;p "?";end;end;end;test ?e,'d'||begin;$d=0;$m=[O.new("Home")]
  13. end;$m=YAML::load_file 'd';$d=$m.size;z=TCPServer.new 0,4000;while k=z.accept
  14. Thread.new(k){|s|s.puts "Name";s.gets;l=$_.chomp;d=q l;$m<
  15. d.s=s;while s.gets;d.y $_.chomp;end;};end
复制代码



下面是运行方法:
1.上面的内容保存至teensymud.rb
2.创建一个YAML文件,内容是“[]”,不包含引号部分。linux可以直接echo "[]" > d
3.运行teensymud.rb 前提是有ruby的环境(很简单,ruby官网的download里有win、mac、linux的配置方法)
4.telnet到本地的4000端口。
5.输入一个id并回车。

接着你就拥有一个可运行的mud,虽然超级mini。
mud中的命令
i  显示物品
l  观察房间
dr  相当于北侠的drop all
g  相当于北侠的get all
k  相当于北侠的kill
s  相当于北侠的say
c  相当于北侠的chat
q  推出并保存
north、south等等 按响应方向移动

O 创建新对象,例如O rose
R 创建房间

上述内容简单的翻译了一下,细节建议看原文。
15行的mud好精致、好精彩。希望ruby爱好者喜欢。

没有用过ruby的直接复制粘贴运行(先去ruby官网下载rubyinstall,这个是windows的安装包),然后连接127.0.0.1 4000就可以把玩吧玩,呵呵!

ruby小礼物,希望大家喜欢

北大侠客行MUD,中国最好的MUD

评分

参与人数 1精华 +12 +2 收起 理由
seagate + 12 + 2 好东西啊,攒

查看全部评分

北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-11-30 15:34:00 | 显示全部楼层
虽然看不懂,但感觉是个好东东。顶个
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-12-1 01:16:38 | 显示全部楼层
话说非常喜欢精致的东西,就是看不懂……那个$1是什么意思……
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-12-1 12:29:13 | 显示全部楼层
火枪手,我永远佩服你
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-12-2 20:56:27 | 显示全部楼层
太凶残了。。。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-12-2 21:21:23 | 显示全部楼层
火枪的东西都很高端。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-12-14 14:12:28 | 显示全部楼层
ruby忘光了,看不懂了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-12-16 11:31:48 | 显示全部楼层
膜拜一下
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-11 09:48 PM , Processed in 0.012782 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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