0

我正在尝试使用Canopy来使用 F# 在这里玩井字游戏。“板”如下所示

<div class="game">
<div class="board">
<div class="square top left"><div class="x"></div></div>    <--- take note here
<div class="square top"><div></div></div>
<div class="square top right"><div></div></div>
<div class="square left"><div></div></div>
<div class="square"><div></div></div>
<div class="square right"><div class="o"></div></div>       <--- take note here
<div class="square bottom left"><div></div></div>
<div class="square bottom"><div></div></div>
<div class="square bottom right"><div></div></div>
</div>

当您单击放置 X 或 O 时,它会更改<div><div class="o">我正在尝试检索板的状态,但它不起作用,因为比如说我做了最简单的事情

let state = elements |> ".square" 

这将返回 9 个元素......但它不会返回子 div 是否为 x,因为“x”是属性而不是值。

所以基本上我的问题是。如何检索某个位置包含 X 或 O。

4

1 回答 1

1

对不起,我很久没看SO了!

这个有点棘手,如果你拥有代码,你可以通过改变它来让你的生活更轻松一些

<div class="square top left">
to  
<div class="square top-left">

如果没有,您可能需要创建 9 个选择器,每个位置一个选择器。

像这样的东西,未经测试:

let topLeft = ".square.top.left"
let topCenter = ".square.top:not(.left,.right)"
let topRight = ".square.top.right"
let middleLeft =".square.left:not(.top,.bottom)"
etc

然后你检查那些方块是否有X或O

let hasX square = 
  let result = someElement <| sprintf "%s .x" square
  match result with
  | None    -> false
  | Some(_) -> true

and one for hasO

那么你可以做

if hasX topLeft then
  //whatever
于 2016-07-08T18:02:03.590 回答