Beispiel #1
0
        //starts everything
        public void run()
        {
            Console.Out.WriteLine("random bot running");

            serverStuff.createGame();

            if (serverStuff.errored == false)
            {
                //opens up a webpage so you can view the game, doing it async so we dont time out
                new Thread(delegate()
                {
                    System.Diagnostics.Process.Start(serverStuff.viewURL);
                }).Start();
            }

            Random random = new Random();

            while (serverStuff.finished == false && serverStuff.errored == false)
            {
                switch (random.Next(0, 6))
                {
                case 0:
                    serverStuff.moveHero(Direction.East);
                    break;

                case 1:
                    serverStuff.moveHero(Direction.North);
                    break;

                case 2:
                    serverStuff.moveHero(Direction.South);
                    break;

                case 3:
                    serverStuff.moveHero(Direction.Stay);
                    break;

                case 4:
                    serverStuff.moveHero(Direction.West);
                    break;
                }

                Console.Out.WriteLine("completed turn " + serverStuff.currentTurn);
            }

            if (serverStuff.errored)
            {
                Console.Out.WriteLine("error: " + serverStuff.errorText);
            }

            Console.Out.WriteLine("random bot finished");
        }
Beispiel #2
0
        //starts everything
        public void run()
        {
            Console.Out.WriteLine("random bot running");

            serverStuff.createGame();

            if (serverStuff.errored == false)
            {
                //opens up a webpage so you can view the game, doing it async so we dont time out
                new Thread(delegate()
                {
                    System.Diagnostics.Process.Start(serverStuff.viewURL);
                }).Start();
            }

            boardWidth  = serverStuff.board.Length;
            boardHeight = serverStuff.board[0].Length;
            maxX        = boardWidth - 1;
            maxY        = boardHeight - 1;

            Random        random = new Random();
            List <string> unblockedDirs;
            List <Tile>   unblockedTiles;
            string        chosenDir = "";


            while (serverStuff.finished == false && serverStuff.errored == false)
            {
                hy = serverStuff.myHero.pos.x;
                hx = serverStuff.myHero.pos.y;
                B.Tiles[hx][hy].Visits++;
                unblockedDirs  = getUnblockedDirections();
                unblockedTiles = getUnblockedTiles();
                if (unblockedTiles.Count == 0)
                {
                    chosenDir = Direction.North;
                }
                else if (unblockedTiles.Count == 1)
                {
                    chosenDir = TileToDir(unblockedTiles[0]);
                }
                else
                {
                    unblockedTiles = unblockedTiles.OrderBy(x => x.Visits).ToList();
                    unblockedTiles = unblockedTiles.Where(x => x.Visits == unblockedTiles[0].Visits).ToList();
                    chosenDir      = TileToDir(unblockedTiles[random.Next(0, unblockedTiles.Count)]);
                }
                lastDir = chosenDir;

                serverStuff.moveHero(chosenDir);
                Console.Out.WriteLine("completed turn " + serverStuff.currentTurn);
            }

            if (serverStuff.errored)
            {
                Console.Out.WriteLine("error: " + serverStuff.errorText);
            }

            Console.Out.WriteLine("random bot finished");
        }
Beispiel #3
0
        /**
         * Démarre le jeu
         **/
        public void run()
        {
            Console.Out.WriteLine("Poly_morphisme démarre");
            bool Continu     = false;
            bool ContinuFuir = false;

            serverStuff.createGame();

            //initMinesTotal();
            //initBiereTotal();
            // Ouvre une page web pour suivre le jeu
            // Asynchrone
            if (serverStuff.errored == false)
            {
                new Thread(delegate()
                {
                    System.Diagnostics.Process.Start(serverStuff.viewURL);
                }).Start();
            }

            while (serverStuff.finished == false && serverStuff.errored == false)
            {
                // la variable deplacement correspond au deplacement de notre hero durant notre tour
                string deplacement = Direction.Stay;
                // suite deplacement est la liste des déplacement d'un hero vers son objectif
                List <string> suitedeplacement = new List <string>();

                // si il n'y a pas d'ennemis autour de notre hero
                if (EnnemisACoté() == null)
                {
                    Console.Out.WriteLine("personne à coté");
                    ContinuFuir = false;
                    if (Continu == false)
                    {
                        // si la vie du hero est supérieure ou égale à 40, on va chercher la mine la plus proche
                        if (serverStuff.myHero.life >= 40)
                        {
                            InitMines();
                            suitedeplacement = AStar(serverStuff.myHero.pos, minesDispo[0]);
                            deplacement      = suitedeplacement[0];
                            suitedeplacement.RemoveAt(0);
                        }
                        // si la vie est inférieure à 40, on va se bourrer la gueule
                        else
                        {
                            initBieres();
                            suitedeplacement = AStar(serverStuff.myHero.pos, bieresDispo[0]);
                            deplacement      = suitedeplacement[0];
                            suitedeplacement.RemoveAt(0);
                        }
                        Continu = true;
                    }
                    else
                    {
                        if (suitedeplacement.Count != 0)
                        {
                            deplacement = suitedeplacement[0];
                            suitedeplacement.RemoveAt(0);
                        }
                    }
                    if (suitedeplacement.Count == 0)
                    {
                        Continu = false;
                    }
                }
                else
                {
                    // si la vie du héro est supérieur ou égale à 80, on va taper l'adversaire
                    if (serverStuff.myHero.life >= 80)
                    {
                        suitedeplacement = AStar(serverStuff.myHero.pos, EnnemisACoté());
                        deplacement      = suitedeplacement[0];
                        suitedeplacement.RemoveAt(0);
                        ContinuFuir = false;
                    }
                    // sinon, on fuit vers la bière la plus proche
                    else
                    {
                        if (!ContinuFuir)
                        {
                            initBieres();
                            suitedeplacement = AStar(serverStuff.myHero.pos, bieresDispo[0]);
                            deplacement      = suitedeplacement[0];
                            suitedeplacement.RemoveAt(0);
                            ContinuFuir = true;
                        }
                        else
                        {
                            if (suitedeplacement.Count != 0)
                            {
                                deplacement = suitedeplacement[0];
                                suitedeplacement.RemoveAt(0);
                            }
                        }
                    }
                    if (suitedeplacement.Count == 0)
                    {
                        ContinuFuir = false;
                    }
                }

                //  on bouge le héro

                //Console.Out.WriteLine(deplacement);
                serverStuff.moveHero(deplacement);


                if (serverStuff.errored)
                {
                    Console.Out.WriteLine("error: " + serverStuff.errorText);
                }
            }
            Console.Out.WriteLine("Poly_morphisme a fini");
        }
Beispiel #4
0
        //starts everything
        public void run()
        {
            Console.Out.WriteLine("farm bot running");

            serverStuff.createGame();

            if (serverStuff.errored == false)
            {
                //opens up a webpage so you can view the game, doing it async so we dont time out
                new Thread(delegate()
                {
                    System.Diagnostics.Process.Start(serverStuff.viewURL);
                }).Start();
            }

            boardWidth  = serverStuff.board.Length;
            boardHeight = serverStuff.board[0].Length;
            maxX        = boardWidth - 1;
            maxY        = boardHeight - 1;
            switch (serverStuff.myHero.id)
            {
            case 1:
                myMine = TileType.GOLD_MINE_1;
                myHero = TileType.HERO_1;
                break;

            case 2:
                myMine = TileType.GOLD_MINE_2;
                myHero = TileType.HERO_2;
                break;

            case 3:
                myMine = TileType.GOLD_MINE_3;
                myHero = TileType.HERO_3;
                break;

            case 4:
                myMine = TileType.GOLD_MINE_4;
                myHero = TileType.HERO_4;
                break;

            default:
                break;
            }

            random = new Random();
            List <Tile> desirableTiles;
            string      chosenDir = "";


            while (serverStuff.finished == false && serverStuff.errored == false)
            {
                hy = serverStuff.myHero.pos.x;
                hx = serverStuff.myHero.pos.y;

                var shortestPaths = GetShortestPaths();
                #region output shortest path
                //Console.Clear();
                //for (var y = 0; y < shortestPaths[0].Length; y++)
                //{
                //    for (var x = 0; x < shortestPaths.Length; x++)
                //    {
                //        if (shortestPaths[x][y] == null)
                //        {
                //            Console.Write("--");
                //        }
                //        else
                //        {
                //            if (shortestPaths[x][y].Count > 9)
                //            {
                //                Console.Write(shortestPaths[x][y].Count);
                //            }
                //            else
                //            {
                //                Console.Write("0" + shortestPaths[x][y].Count);
                //            }
                //        }
                //    }
                //    Console.WriteLine("");
                //}
                #endregion output shortest path

                if (JustDied())
                {
                    ResetVisits();
                }

                B.Tiles[hx][hy].Visits++;

                desirableTiles = GetUnblockedTiles();

                if (serverStuff.myHero.life < 20)
                {
                    desirableTiles = desirableTiles.Where(x => !IsNewMine(x)).ToList();
                }

                if (desirableTiles.Any(x => IsNewMine(x)))
                {
                    desirableTiles = desirableTiles.Where(x => IsNewMine(x)).ToList();
                }
                else if (serverStuff.myHero.life < 90 && desirableTiles.Any(x => x.Type == TileType.TAVERN))
                {
                    desirableTiles = desirableTiles.Where(x => x.Type == TileType.TAVERN).ToList();
                }
                else
                {
                }

                var tavernPath = GetPathToClosestTavern(shortestPaths);
                var found      = false;
                if (tavernPath != null && (serverStuff.myHero.life < 40 || (serverStuff.myHero.life < 90 && tavernPath.Count < 3)))
                {
                    chosenDir = TileToDir(tavernPath[0]);
                    found     = true;
                }
                else if (serverStuff.myHero.life > 20)
                {
                    var weakHeroes = serverStuff.heroes.Where(x => x.id != serverStuff.myHero.id && x.life < serverStuff.myHero.life);
                    if (weakHeroes.Any())
                    {
                        List <Tile> shortestHeroPath = null;
                        foreach (var weakling in weakHeroes)
                        {
                            var pathToWeakling = shortestPaths[weakling.pos.x][weakling.pos.y];
                            if (pathToWeakling != null)
                            {
                                if (shortestHeroPath == null)
                                {
                                    shortestHeroPath = pathToWeakling;
                                }
                                else
                                {
                                    if (pathToWeakling.Count < shortestHeroPath.Count)
                                    {
                                        shortestHeroPath = pathToWeakling;
                                    }
                                }
                            }
                        }

                        if (shortestHeroPath != null && shortestHeroPath.Count < 3)
                        {
                            chosenDir = TileToDir(shortestHeroPath[0]);
                            found     = true;
                        }
                    }

                    if (!found)
                    {
                        var minePath = GetPathToClosestMine(shortestPaths);
                        if (minePath != null)
                        {
                            chosenDir = TileToDir(minePath[0]);
                            found     = true;
                        }
                    }
                }
                else
                {
                }

                if (!found)
                {
                    chosenDir = ChooseRandomLeastVisitedDir(desirableTiles);
                }

                lastHP = serverStuff.myHero.life;

                Console.WriteLine("From (" + hx + "," + hy + ") " + chosenDir);
                serverStuff.moveHero(chosenDir);
                Console.Out.WriteLine("completed turn " + serverStuff.currentTurn);
            }

            if (serverStuff.errored)
            {
                Console.Out.WriteLine("error: " + serverStuff.errorText);
            }

            Console.Out.WriteLine("random bot finished");
        }