Python 代码生成器中的依赖矛盾

Python 代码生成器中的依赖矛盾,python,multithreading,oop,code-generation,Python,Multithreading,Oop,Code Generation,我目前的项目是尝试将流行的纸牌游戏移植到一个局域网游戏多人游戏中,计算机将成为“大师”。它将跟踪规则、牌组、玩家等。然而,毛没有正式的规则集;取而代之的是球员们制定规则。因此,我的规则类具有非常基本的属性设置,因此可以使用RuleHandler类生成代码,该类的实例运行在与几个属性不同的线程中: 触发器可以是放置在堆上的卡片,也可以是文本/动作 可选条件,即:如果没有全甲板,则。。。 6.游戏中任何变量的基本动作: 删除变量,如删除卡或删除玩家 “del{variable}” 将一个变量设置为一

我目前的项目是尝试将流行的纸牌游戏移植到一个局域网游戏多人游戏中,计算机将成为“大师”。它将跟踪规则、牌组、玩家等。然而,毛没有正式的规则集;取而代之的是球员们制定规则。因此,我的规则类具有非常基本的属性设置,因此可以使用RuleHandler类生成代码,该类的实例运行在与几个属性不同的线程中:

触发器可以是放置在堆上的卡片,也可以是文本/动作 可选条件,即:如果没有全甲板,则。。。 6.游戏中任何变量的基本动作: 删除变量,如删除卡或删除玩家 “del{variable}” 将一个变量设置为一个值,例如,将玩家的整数顺序设置为负数,这将颠倒顺序 “{variable}={value}” “替换”两个变量a,b=b,a;例如交换两名球员的手牌或牌堆 “{variable1},{variable2}={variable2},{variable1}”实际上只是一个奇特的集合动作 “New”,它生成一个新对象,例如一张新卡 “{list}.append{class}{parametres}”使用parametres创建一个新的类对象,并将其添加到适当的列表卡中以堆叠或组块,将新规则添加到RuleHandler中,等等。 调用,它只调用另一个规则的代码 'self.rules.get{rule}rule'规则是一个字典,其键是包含所有信息的rule对象,值是编译后生成的代码 说,这让一个玩家说了些什么 不是一个简单的一行,超越了它的类界限参考球员连接和聊天 最后一个是最复杂的,也是我遇到麻烦的一个。例如,毛泽东的一条普遍规则是,如果有人在任何一套西装上写下“7”,他们必须说“祝你有个愉快的一天”。如果下一位选手写下“7”,那么他们必须说“祝你有一个非常愉快的一天”。这句话一直持续下去,直到有人没有写下“7”,他们必须说“非常感谢”,其中“非常”的数量是“非常愉快的一天”中的“非常”的数量+1,同时抽取该数量的牌作为惩罚。虽然这是一个复杂的规则,但大多数都可以通过临时变量和最后一张卡片的放置日志轻松实现。然而,确保玩家说出正确短语的代码是我的绊脚石。其余的操作都是在幕后进行的,不需要任何用户输入。等待用户输入是服务器代码工作的一部分,不应该是RuleHandler类的一部分


我该怎么做才能确保Say操作简单,并且不会超出面向对象编程的单一职责属性

我决定将短语存储在一个队列中,每次有人说话时,每个短语都会对照所述队列进行检查。也就是说:如果有人说“Dog”和“Dog”在队列中,它会删除它,给等待该标记的规则中的原始代码一个继续执行所需的标记

如果我理解正确,你可以用游戏状态的方式解决它。例如,播放了一个7,并且在说动作中提到过一次“非常”。可能的下一步行动是另一张7+very*2或任何其他卡+very*2。如果没有选择这两个选项,则玩家将无法通过规则。哦,那么RuleHandler可能有一个等待方法,该方法将队列作为参数,如果没有及时添加正确的短语,该方法将在一段时间后超时?为什么超时?不应该总是有下一个球员转弯吗??我的意思是回合制多人游戏的超时总是有意义的,但这不是一个不同的问题吗?我正在计划回合制多人游戏,对不起,如果我不清楚的话,我会编辑帖子,规则是在一个单独的线程中,我意识到也没有说,所以跟踪当前玩家的代码总是在运行