我正在尝试学习如何在Javascript中编写(虚拟)交易卡游戏(类似于魔法收集)。我已经阅读了一些关于MVC架构和控制器的内容,但它完全在我的头上(我没有任何正式的CS教育),我想知道是否有任何人有关于如何了解更多有关代码的任何好的链接或提示初学者级别的建筑。
每个“卡”是否都被表示为一个对象,并且卡片规则的所有逻辑都包含在一个大型游戏引擎功能或许多相互连接的小功能中?
以下是一个示例问题: 想象一下,有一张卡片上写着“当这张卡进场时,会抽一张牌。”我应该如何构建游戏以准备这种情况,以及如何触发(最有效)?卡是否触发游戏引擎,或者游戏引擎是否解析了所播放的每张卡?
这是另一个例子: 想象一下,有一张卡片上写着“你所有的卡片花费少了1美元。”并永久地保持在游戏中。在这种情况下,游戏如何理解它需要改变其规则?这是一个侦听卡播放并中断成本的功能吗?每回合结算,此规则存储在何处?是否存在存储游戏基本规则的变量(全局卡成本修改器:0;您的卡成本修改器:0)以及存储卡引入的新规则的其他变量(您的卡成本修改器:-1),或者是这些变量当牌改变规则时你的游戏引擎动态创建的变量(你的精灵成本修正值:-2)?当卡被销毁时,规则如何知道改变,从而删除卡的规则修改?
我需要一个关于听众和事件的入门读物吗? (我对他们一无所知,但我不时地看到他们的参考。)你能指出我的资源方向吗?
要明确的是,我并没有试图让人们为我手动谷歌提出冗长的要求;我在黑暗中盲目摸索,并询问是否有人会指出我正确的单词或短语来搜索。谢谢!
答案 0 :(得分:1)
关于重新创建类似的纸牌游戏,有一个非常不错的博客:暴雪的炉石传说。尽管它是用C#编写的并且使用Unity作为视图层,但是您对如何为这种游戏创建合适的体系结构有了很好的了解。不过,公平的警告是,用Javascript重新创建“魔术聚会”可能会变得异常复杂,并且会使您的头部混乱很多(我有第一手经验)。
答案 1 :(得分:1)
您需要在这里更深入地思考“游戏”本身。您所描述的游戏实际上将围绕“状态机”构建,这是您在开始构建之前应深入了解的核心CS概念。
您的游戏规则将成为状态机,并且在游戏过程中(通过玩法)触发的事件(牌)可以修改这些规则。您将需要某种解释器来“读取”卡片并修改规则或游戏状态。然后,您将需要一些东西来轮流迭代游戏,读取状态并采取适当的措施。
您还需要了解堆栈。如果您的游戏允许玩家彼此打扰,您将需要一种方法来跟踪哪个事件应该首先发生,因为事件将希望能够影响,阻止和重定向其他事件。堆栈将帮助您跟踪该顺序。