public List <DiamondGroup> createClickList() { List <DiamondGroup> ret = new List <DiamondGroup>(); List <int> cache = new List <int>(); for (int j = 0; j < 9; j++) { for (int i = 0; i < 10; i++) { if (board[i, j].grey) { greyCount++; } if (board[i, j].count >= 3) { // check in cache if (!cache.Exists(g => g == board[i, j].group)) { ret.Add(createGroup(board[i, j].group)); cache.Add(board[i, j].group); continue; } } } } if (ret.Count < 3) { for (int j = 0; j < 9; j++) { for (int i = 0; i < 10; i++) { if (board[i, j].spacial != 0) { DiamondGroup d = new DiamondGroup(); d.add(board[i, j]); ret.Add(d); } } } } // txtDebug.AppendText("createClickList " + ret.Count + "\n"); // foreach (DiamondGroup d in ret) // { // txtDebug.AppendText(d.ToString() + "\n"); // } ret = optimizeClickList(ret); //txtDebug.AppendText("optimizeClickList " + ret.Count + " grey=" + greyCount + "\n"); // foreach (DiamondGroup d in ret) // { // txtDebug.AppendText(d.ToString() + "\n"); // } return(ret); }
public DiamondGroup createGroup(int group) { DiamondGroup ret = new DiamondGroup(); for (int i = 0; i < 10; i++) { for (int j = 0; j < 9; j++) { if (board[i, j].group == group) { ret.add(board[i, j]); } } } return(ret); }