jjzjj

ruby - 我应该如何构建我的(moSTLy)基于文本的游戏服务器?

想想MUD/MUCK,但可能还有头像或现场插图。我选择的语言是ruby。我需要处理多个持久连接,数据在服务器和它的各种客户端之间异步传输。单个数据库必须根据客户端session中发生的事件保持最新。每个客户端session中的事件可能需要立即更新多个其他客户端(用户进入房间;用户向另一个用户发送私有(private)消息)。这是一个目标项目和一个学习项目,所以我打算重新发明一两个轮子来了解更多关于并发网络编程。但是,我对并发编程和网络编程都不熟悉;以前,我几乎只在Web应用程序中的非持久同步HTTP请求领域工作。所以,我想确保我正在重新发明正确的轮子。根据emboss的出色回答,我已经

[USACO07DEC]Mud Puddles S

[USACO07DEC]MudPuddlesS题目描述FarmerJohnisleavinghishousepromptlyat6AMforhisdailymilkingofBessie.However,thepreviouseveningsawaheavyrain,andthefieldsarequitemuddy.FJstartsatthepoint(0,0)inthecoordinateplaneandheadstowardBessiewhoislocatedat(X,Y)(-500≤X≤500;-500≤Y≤500).HecanseeallN(1≤N≤10,000)puddlesofm

telnet - telnet如何知道一包数据是否接收完整?

我在写一个玩具MUD使用TCP/IP套接字连接到telnet服务器的客户端。作为MUD客户端中的一个常见功能,我应该能够对来自服务器的响应运行一堆正则表达式,并在它们被触发时执行一些操作。现在,当响应很长并且在2个或更多TCP/IP数据包中收到时,问题就出现了,因此当我在响应上运行正则表达式时它们不会匹配,因为它们还没有完成(第一部分或第二部分不会单独匹配)。所以问题是,在对服务器运行我的正则表达式之前,我如何知道服务器已完成发送数据包。 最佳答案 简短的回答是:你没有TCP/IP是一个串行协议(protocol),没有数据包的概念

Python 绘图 ASCII map

我需要在我用python构建的MUD(或更多,如果可能)中绘制玩家当前房间的2半径map。房间设置为带有self.exits={'west':1,'north':2}的容器,其中键是值(相邻房间的UID)所在的方向.房间仅以这种方式链接。self.location为0的玩家可以键入“n”,然后根据上述变量,他们的位置将为2,并且该房间的内容会将玩家的UID附加到其内容。因此,我希望根据上述变量显示如下所示的map,其中“u”是玩家的当前位置..[]|[]-[u]我已经实现了这个部分,因为这只是一个半径1。这是我如何做到这一点的一小段(经过大量修改以便在此处发布),您会明白为什么我正在发

python - 异步获取用户输入并传递给 python 中的事件循环

我正在构建一个单人游戏MUD,它基本上是一个基于文本的战斗游戏。它没有联网。我不明白如何收集用户命令并将它们异步传递到我的事件循环中。玩家需要能够在游戏事件触发时随时输入命令。因此,使用raw_input暂停进程是行不通的。我想我需要做一些类似select.select的事情并使用线程。在下面的示例中,我有一个userInputListener()的模型函数,这是我喜欢接收命令的地方,如果有输入则将它们附加到命令Que。如果有一个事件循环,例如:fromthreadingimportTimerimporttime#Maingameloop,runsandoutputscontinuou

python - 扭曲忽略从 MUD 客户端发送的数据?

我有以下代码(几乎是列出的聊天服务器示例的精确副本here:导入twisted.scripts.twistd从twisted.protocols导入基本来自twisted.internet导入协议(protocol),reactor来自twisted.application导入服务,互联网classMyChat(basic.LineReceiver):defconnectionMade(self):print"Gotnewclient!"self.factory.clients.append(self)defconnectionLost(self,reason):print"Losta