public void MarkDead(Stone stone) { EnsureMarkup(); Markup.EnsureDeadStones(); Markup.DeadStones[stone.X, stone.Y] = true; stone.IsBlack = board.Black[stone.X, stone.Y]; var newStone = stone.LeftStone(); if (board.HasStone(newStone) && !Markup.DeadStones[newStone.X, newStone.Y]) { MarkDead(newStone); } newStone = stone.TopStone(); if (board.HasStone(newStone) && !Markup.DeadStones[newStone.X, newStone.Y]) { MarkDead(newStone); } newStone = stone.RightStone(); if (board.HasStone(newStone) && !Markup.DeadStones[newStone.X, newStone.Y]) { MarkDead(newStone); } newStone = stone.BottomStone(); if (board.HasStone(newStone) && !Markup.DeadStones[newStone.X, newStone.Y]) { MarkDead(newStone); } }