Exemple #1
0
        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);
        }
Exemple #2
0
 public void InformAiAboutMove(PrevHitLevel passedHitLevel, ref List <int> hitsByAi)
 {
     hitlevel      = passedHitLevel;
     this.hitsByAi = hitsByAi;
 }