简单的布景游戏演示。
skyzyx-set-game-demo的Python项目详细描述
游戏
核心概念
- 每个卡都有4个属性:颜色、形状、阴影和数字。
- 牌组是所有 牌的集合。
- 牌 是 牌组 的一个子集,仅包含 正在播放中。
- a 集合 是三张满足特定条件的卡的集合 (下文讨论)。当在 板上的play中找到 集合 时, set 将从播放中删除,并按原样记录。
- 游戏 封装了所有这些概念并跟踪 它们。
游戏规则
每张卡上都有一个带有4个正交属性的图像:
- 颜色(红色、绿色或紫色)
- 形状(菱形、波浪形或椭圆形)
- 阴影(实心、空或条纹)
- 数字(1、2或3)
如果对于每个 属性,值 完全相同或完全不同。
例如:
- "两个红色固体蠕动","一个绿色固体菱形", "三个紫色实心卵形"将构成一个 集合。(数字、形状和 颜色不同,底纹相同)
- "两个红色固体蠕动","一个绿色固体蠕动", "三个紫色实心卵形"不会构成一个集合,因为形状 两张卡相同,但第三张不同。
- "set"的一个游戏开始于12张牌,面朝上。当A 玩家看到三张牌组成一套牌,他们大叫"套!"和 抓住 卡 。新卡 由 牌组 处理以替换 它们。
- 如果没有玩家能找到一个 牌组,则再发三张 牌 15,然后18,然后21…
- 当 牌组中没有 牌时, 游戏结束,并且 不 设置表的左边。得分最多的选手获胜。
游戏要求
您的任务是在代码中对 游戏建模,并实现以下内容 方法:
- 一种方法,它接受三张牌,并确定三张牌 卡 设置
- 一种给一个 卡的 板 的方法m>将找到一个 集合, 或者确定表上没有 集合 。
- 一种方法,从开始到 结束,并返回从 电路板
对于最后一种方法,将有多个正确的解决方案,但是 有效的 集合列表是可以的。
假设
< Buff行情> "如果对于每个属性,值 完全相同或完全不同。"这句话措辞含糊不清,所举的例子使我相信 以下是对规则的更具体的描述。
- 拿三张卡片,逐一查看它们的属性。
- 如果所有卡对该属性或所有卡都有不同的值 对于该属性具有相同的值,则它可以是一个集合。
- 如果步骤2的任何属性未通过测试,则该组不是 SET.
问题参数
- 此问题使用数学组合(与 排列 )。这将产生81个组合( 3^4 )。
- 如果未能成为集合,则表示该组不是集合,因此 尽早失败并继续前行。
逻辑
(而" 组合"指的是数学上的 概念)
- 通过确保每张卡 唯一,并且所有属性的 组合都被表示出来。 另外,默认情况下,洗牌组。
- 向 板发12张卡
- 计算 板上卡的所有可能的 组合 三人一组。
- 对每个 组合进行迭代,应用逻辑来确定 或者这个 组合不代表 集合
- 通过移除确定为 a 集合的一部分
- 当找不到更多的 集时,从 甲板
- 重复步骤3–6,直到 牌组 为空。