public void updateListCanMove() { blockCanMoves.Clear (); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { BlockCanMove block = checkCanMove(i, j, i + 1, j); if (block != null) { blockCanMoves.Add(block); } block = checkCanMove(i, j, i, j + 1); if (block != null) { blockCanMoves.Add(block); } } } }
private BlockCanMove checkCanMove(int x1, int y1, int x2, int y2) { if(this.blocks[x1,y1] == this.blocks[x1,y1] { return null; } if(x2 > 8 || y2 >8) { return null; } //swap this.swapBlock(x1,y1,x2,y2); BlockNeedCheck block1 = new BlockNeedCheck(x1,y1)); BlockNeedCheck block2 = new BlockNeedCheck(x2,y2)); int H1 = block1.left + block1.right -1; int V1 = block1.top + block1.bottom -1; int H2 = block2.left + block2.right -1; int V2 = block2.top + block2.bottom -1; int point = 0; if(V1 > 3 || H1 > 3) { point+=1; } if(V1 > 3 || H1 > 3) { point+=1; } if(H1>4 || V1>4 ) { point+=1; } if(H2>4 || V2>4 ) { point+=1; } if(H1>5 || V1>5 ) { point+=1; } if(H2>5 || V2>5 ) { point+=1; } //Re swap this.swapBlock(x1,y1,x2,y2); if(point > 0) { BlockCanMove blockCanMove = new BlockCanMove(); blockCanMove.x1 = x1; blockCanMove.y1 = y1; blockCanMove.x2 = x2; blockCanMove.y2 = y2; blockCanMove.point = point; return blockCanMove; } else { return null; } }