public int MakeAiMove(List <int> clickableCoords) { radiusFromFirstHit = 1; for (int i = 0; i < canMoveInDirs.Length; i++) { canMoveInDirs[i] = true; } if (PrevHitLevel.Hit == hitlevel) { while (true) { if (canMoveInDirs.All(canMoveInDir => canMoveInDir == false)) { radiusFromFirstHit++; for (int i = 0; i < canMoveInDirs.Length; i++) { canMoveInDirs[i] = true; } } if (dir == 1) { if (clickableCoords.Exists(coord => coord == clickedBtnCoord - 10 * radiusFromFirstHit)) { clickedBtnCoord = clickableCoords.Find(coord => coord == clickedBtnCoord - 10 * radiusFromFirstHit); break; } else { dir = random.Next(1, 5); canMoveInDirs[dir - 1] = false; } } if (dir == 2) { if (clickableCoords.Exists(coord => coord == clickedBtnCoord + radiusFromFirstHit) && WallDetector(dir, clickedBtnCoord, radiusFromFirstHit) == false) { clickedBtnCoord = clickableCoords.Find(coord => coord == clickedBtnCoord + radiusFromFirstHit); break; } else { dir = random.Next(1, 5); canMoveInDirs[dir - 1] = false; } } if (dir == 3) { if (clickableCoords.Exists(coord => coord == clickedBtnCoord + 10 * radiusFromFirstHit)) { clickedBtnCoord = clickableCoords.Find(coord => coord == clickedBtnCoord + 10 * radiusFromFirstHit); break; } else { dir = random.Next(1, 5); canMoveInDirs[dir - 1] = false; } } if (dir == 4) { if (clickableCoords.Exists(coord => coord == clickedBtnCoord - radiusFromFirstHit) && WallDetector(dir, clickedBtnCoord, radiusFromFirstHit) == false) { clickedBtnCoord = clickableCoords.Find(coord => coord == clickedBtnCoord - radiusFromFirstHit); break; } else { dir = random.Next(1, 5); canMoveInDirs[dir - 1] = false; } } } } if (PrevHitLevel.Sunk == hitlevel || PrevHitLevel.NoHit == hitlevel) { if (hitsByAi.Any()) { dir = random.Next(1, 5); hitlevel = PrevHitLevel.Hit; clickedBtnCoord = hitsByAi.ElementAt(0); MakeAiMove(clickableCoords); } else { dir = random.Next(1, 5); random.Next(clickableCoords.Count); clickedBtnCoord = clickableCoords.ElementAt(random.Next(clickableCoords.Count)); } } /*if (Hitlevel.NoHit==hitlevel) * { * if (hitsByAi.Count>0) * { * dir = random.Next(1, 5); * clickedBtn = hitsByAi.ElementAt(0); * hitlevel = Hitlevel.Hit; * MakeAiMove(clickableBtns); * } * else * { * dir = random.Next(1, 5); * random.Next(clickableBtns.Count); * clickedBtn = clickableBtns.ElementAt(random.Next(clickableBtns.Count)); * return clickedBtn; * } * }*/ return(clickedBtnCoord); }
public void InformAiAboutMove(PrevHitLevel passedHitLevel, ref List <int> hitsByAi) { hitlevel = passedHitLevel; this.hitsByAi = hitsByAi; }