我在为一个涉及网络的游戏写些东西。在这个游戏中,网络是一个类,到每个节点的“连接”被格式化如下:
network.nodes = [router, computer1, computer2]
network.connections = [ [1, 2], [0], [0] ]"network.nodes“中的每个迭代与"network.connections”中的每个迭代并行工作,意思是"network.connections“表示连接到的所有节点"network.nodes”。我试图在网络类中编写一个简单的函数,它可以找到从路由器( "network.connections“)开始的路由,然后再找到一个特定的”节点“。我越想这个问题,答案就越复杂。
在这种情况下,非常简单的情况下,它应该返回如下
[router, computer1]如果我想找到一条通往"computer1“的路线,我想看看,但我需要的是一些能与更复杂的网络模拟一起工作的东西。
它基本上是一个计算机网络的模拟器。但是在这个游戏中,我需要能够准确地知道什么节点可以通过移动到达特定的目标。任何帮助都将不胜感激。谢谢。
发布于 2017-03-16 09:27:59
不如放弃.nodes和.connections,把它们保存在一个数据结构中,就像字典一样。
network.nodes = {"router": [computer1, computer2],
"computer1": [router],
"computer2": [router]
}您甚至可以将字符串作为键丢弃,并使用对象本身:
network.nodes = {router: [computer1, computer2],
computer1: [router],
computer2: [router]
}这样,如果您需要访问路由器的连接,可以这样做:
>>>network.nodes[router]
[computer1, computer2]因为我对你的项目没有一个完整的概述,我不能只是给你一个函数来做,但是我可以试着指出正确的方向。
如果您将网络“映射”构建为字典,并且network.nodes[router]返回[computer1, computer2],那么接下来需要做的就是network.nodes[computer1]和network.nodes[computer2]。
在注释中的防火墙示例中,您将重新构建包含防火墙的网络映射。所以字典应该是这样的:
network.nodes = {router: [firewall, computer2],
firewall: [computer1]
computer1: [firewall],
computer2: [router]
}https://stackoverflow.com/questions/42829766
复制相似问题