首页 > 解决方案 > 在没有 javascript 的情况下实现“熄灯”

问题描述

- 我现在已经解决了这个问题,请参阅帖子的下半部分以获得解决方案。

我感兴趣的是是否可以在不使用任何 JavaScript的情况下生成一个 html 页面,该页面可以为任意固定网格大小( https://en.wikipedia.org/wiki/Lights_Out_(game) )生成“熄灯”游戏。

当然,只要稍加一点 JavaScript 提示就很容易做到。

CSS 是非常强大的东西(CSS Turing 是否完整?),所以看起来它可能是可能的。

我在类似问题中看到(并且自己做过)的典型技术是明智地使用复选框/收音机,例如

https://css-tricks.com/functional-css-tabs-revisited/

如果你谷歌你可以看到一些人用 css 制作的游戏

我们似乎受到了阻碍,因为我们只允许使用 CSS 选择器在一个方向上遍历 dom,我不能要求说具有某些属性的元素的父级。

我的兴趣是,如果可能的话,我认为看到解决方案将是非常有见地的。

期望的结果是在不调用任何 JavaScript 的情况下玩 5 x 5 熄灯游戏,并且可以在 Firefox 中运行,html 本身可以很大,但需要很大。

如果不可能,我想要一个令人信服的论据来说明为什么不这样做。

编辑:我在对这个问题的初步分析中犯了一个错误。这实际上很琐碎,将在今天晚些时候发布解决方案。

编辑 2:鉴于该问题因我无法理解的原因而被搁置,因此我不会费心正确地提出解决方案,所以我只会提供这个想法。

只需按顺序排列对应于 5*5 方格的 5*5 复选框。现在下面有 2^(5*5) 个 div,其中包含棋盘的一些表示,表示在为特定方格选择每个可能的开/关组合后游戏状态的外观。

默认隐藏所有这些 div,现在有 2^(5*5) 个 CSS 选择器,它们基本上匹配选中/未选中复选框的特定配置,然后执行 + * + * + *... 与 + * 一样多需要到达与此游戏状态相对应的 div,然后使该 div 可见,完成。

碰巧的是,我确实找到了一种表示游戏的方法,即使事情的顺序很重要,只要你只对有限的回合感兴趣。如果问题被重新打开,如果有人感兴趣,我可以提供这个。

编辑3:如果可能的话,请有人告诉我将我的问题从搁置状态中删除的机制?我看到它被标记为太宽泛,但我不知道该怎么做。它当然有一个令人满意的解决方案,事实上,我刚刚提供了一个。

标签: htmlcss

解决方案


推荐阅读