예제 #1
0
        public override bool devam(GameData f1)
        {
            durum3SaldiriIndexleri.Clear();
            if (southAmericaBendeMi(f1))
            {
                //Ordusu diğerlerinin toplamından buyuk olduğunda her tarafa saldıracak...
                if (getToplamDusmanSayisi(f1)/2 < f1.players[f1.turn].getTotalNumberOfArmies())
                {
                    foreach (Bolge b in f1.players[f1.turn].bolgeler)
                    {
                        foreach (Bolge komsu in b.komsular)
                        {
                            if (b.ordu.askerSayisi > komsu.ordu.askerSayisi && b.sahip != komsu.sahip)
                            {
                                return true;
                            }
                        }
                    }
                    return false;
                }
                else
                {
                    return false;
                }
            }
            else//Güney Amerikayı ele geçirmeye çalışacak...
            {
                if (southAmericadaToprakVarMi(f1)!=-1)
                {
                    foreach (Bolge b in f1.players[f1.turn].bolgeler)
                    {
                        if (getKomsuDusmanSayisi(b) > 0)
                        {
                            foreach (Bolge b2 in b.komsular)
                            {
                                if (b2.sahip != b.sahip)
                                {
                                    if (b.ordu.askerSayisi > b2.ordu.askerSayisi+10 && buBolgeGuneyAmerikadaMi(b2))
                                    {
                                        return true;
                                    }
                                }
                            }

                        }
                    }
                }
                else//Guney Amerikada Toprak yoksa...
                {
                    Graph graph = new Graph();
                    foreach (Bolge b in f1.bolgeler)
                    {
                        graph.AddNode(b.index.ToString());
                    }

                    foreach (Bolge b in f1.bolgeler)
                    {
                        foreach (Bolge b2 in b.komsular)
                        {
                            if (b2.sahip != f1.players[f1.turn])
                            {
                                graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false);
                            }
                        }
                    }

                    var calculator = new DistanceCalculator();
                    var distances = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString());  // Start from "G"

                    String temp = "";

                    //SA Sınırları
                    List<int> gaSinirlari = new List<int>();
                    gaSinirlari.Add(0);
                    gaSinirlari.Add(0);

                    foreach (var d in distances)
                    {
                        temp += d.Key + " - " + d.Value + "-";
                        if (d.Key == "9")
                        {
                            gaSinirlari[0] = (int)d.Value;
                        }
                        if (d.Key == "11")
                        {
                            gaSinirlari[1] = (int)d.Value;
                        }
                    }

                    int min = gaSinirlari.Min();
                    int minIndex = gaSinirlari.IndexOf(min);

                    int minBolgeIndex = 0;
                    if (minIndex == 0)
                    {
                        minBolgeIndex = 9;
                    }
                    if (minIndex == 1)
                    {
                        minBolgeIndex = 11;
                    }

                    List<String> gidilecekyol = new List<String>();

                    //calculator = new DistanceCalculator();

                    gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(), minBolgeIndex.ToString(), graph);

                    if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya
                    {
                        if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])]))
                        {
                            saldirmaDurumu = 3;
                            durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1));
                            durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1]));
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else//Biraz daha büyüyeceğiz...
                    {
                        return false;
                    }
                }
                return false;
            }
        }
예제 #2
0
        public override bool devam(GameData f1)
        {
            durum3SaldiriIndexleri.Clear();
            if (southAmericaBendeMi(f1))
            {
                //Ordusu diğerlerinin toplamından buyuk olduğunda her tarafa saldıracak...
                if (getToplamDusmanSayisi(f1) / 2 < f1.players[f1.turn].getTotalNumberOfArmies())
                {
                    foreach (Bolge b in f1.players[f1.turn].bolgeler)
                    {
                        foreach (Bolge komsu in b.komsular)
                        {
                            if (b.ordu.askerSayisi > komsu.ordu.askerSayisi && b.sahip != komsu.sahip)
                            {
                                return(true);
                            }
                        }
                    }
                    return(false);
                }
                else
                {
                    return(false);
                }
            }
            else//Güney Amerikayı ele geçirmeye çalışacak...
            {
                if (southAmericadaToprakVarMi(f1) != -1)
                {
                    foreach (Bolge b in f1.players[f1.turn].bolgeler)
                    {
                        if (getKomsuDusmanSayisi(b) > 0)
                        {
                            foreach (Bolge b2 in b.komsular)
                            {
                                if (b2.sahip != b.sahip)
                                {
                                    if (b.ordu.askerSayisi > b2.ordu.askerSayisi + 10 && buBolgeGuneyAmerikadaMi(b2))
                                    {
                                        return(true);
                                    }
                                }
                            }
                        }
                    }
                }
                else//Guney Amerikada Toprak yoksa...
                {
                    Graph graph = new Graph();
                    foreach (Bolge b in f1.bolgeler)
                    {
                        graph.AddNode(b.index.ToString());
                    }

                    foreach (Bolge b in f1.bolgeler)
                    {
                        foreach (Bolge b2 in b.komsular)
                        {
                            if (b2.sahip != f1.players[f1.turn])
                            {
                                graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false);
                            }
                        }
                    }

                    var calculator = new DistanceCalculator();
                    var distances  = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString()); // Start from "G"

                    String temp = "";

                    //SA Sınırları
                    List <int> gaSinirlari = new List <int>();
                    gaSinirlari.Add(0);
                    gaSinirlari.Add(0);

                    foreach (var d in distances)
                    {
                        temp += d.Key + " - " + d.Value + "-";
                        if (d.Key == "9")
                        {
                            gaSinirlari[0] = (int)d.Value;
                        }
                        if (d.Key == "11")
                        {
                            gaSinirlari[1] = (int)d.Value;
                        }
                    }

                    int min      = gaSinirlari.Min();
                    int minIndex = gaSinirlari.IndexOf(min);


                    int minBolgeIndex = 0;
                    if (minIndex == 0)
                    {
                        minBolgeIndex = 9;
                    }
                    if (minIndex == 1)
                    {
                        minBolgeIndex = 11;
                    }

                    List <String> gidilecekyol = new List <String>();

                    //calculator = new DistanceCalculator();

                    gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(), minBolgeIndex.ToString(), graph);


                    if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya
                    {
                        if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])]))
                        {
                            saldirmaDurumu = 3;
                            durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1));
                            durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1]));
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else//Biraz daha büyüyeceğiz...
                    {
                        return(false);
                    }
                }
                return(false);
            }
        }
예제 #3
0
        public override bool devam(GameData f1)
        {
            durum3SaldiriIndexleri.Clear();
            saldirmaDurumu = 0;
            //19-25 arasını almak amaç öncelikle
            if (avrupaBendeMi(f1))//avrupa onda
            {
                foreach (Bolge b in f1.players[f1.turn].bolgeler)
                {
                    foreach (Bolge komsu in b.komsular)
                    {
                        if (b.ordu.askerSayisi > komsu.ordu.askerSayisi + 10 && b.sahip != komsu.sahip)
                        {
                            saldirmaDurumu = 1;
                            return(true);
                        }
                    }
                }
                return(false);
            }
            else if (avrupadaToprakVarMi(f1))                                     //avrupada toprağm var sadece
            {
                if (getAvrupadakiAskerSayisi(f1) > getAvrupadakiDusmanSayisi(f1)) //Toplam Düşmandan daha fazlaysa Saldırıya geçer //Avrupaya karşı
                {
                    //Eğer Avrupada tek başına komsusundan güçlü olan varsa saldırırız
                    //Toplamımız daha büyük olabilir ama tek tek hiçbir bölgemiz daha güçlü olmayabilir
                    foreach (Bolge b in f1.players[f1.turn].bolgeler)
                    {
                        if (getKomsuDusmanSayisi(b) > 0)
                        {
                            foreach (Bolge b2 in b.komsular)
                            {
                                if (b2.sahip != b.sahip)
                                {
                                    if (b.ordu.askerSayisi > b2.ordu.askerSayisi && buBolgeAvrupadaMi(b2))
                                    {
                                        saldirmaDurumu = 2;
                                        return(true);
                                    }
                                }
                            }
                        }
                    }

                    return(false);
                }
                else//Düşman daha fazlaysa bekler devam etmez
                {
                    return(false);
                }
            }
            else//Avrupayla alakamız yoksa Avrupaya ulaşmaya çalışacağız.
            {
                Graph graph = new Graph();
                foreach (Bolge b in f1.bolgeler)
                {
                    graph.AddNode(b.index.ToString());
                }

                foreach (Bolge b in f1.bolgeler)
                {
                    foreach (Bolge b2 in b.komsular)
                    {
                        if (b2.sahip != f1.players[f1.turn])
                        {
                            graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false);
                        }
                    }
                }

                var calculator = new DistanceCalculator();
                var distances  = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString()); // Start from "G"

                String temp = "";

                //Avrupa Sınırları
                List <int> avrupaSinirlari = new List <int>();
                avrupaSinirlari.Add(0);
                avrupaSinirlari.Add(0);
                avrupaSinirlari.Add(0);
                avrupaSinirlari.Add(0);

                foreach (var d in distances)
                {
                    temp += d.Key + " - " + d.Value + "-";
                    if (d.Key == "19")
                    {
                        avrupaSinirlari[0] = (int)d.Value;
                    }
                    if (d.Key == "21")
                    {
                        avrupaSinirlari[1] = (int)d.Value;
                    }
                    if (d.Key == "24")
                    {
                        avrupaSinirlari[2] = (int)d.Value;
                    }
                    if (d.Key == "25")
                    {
                        avrupaSinirlari[3] = (int)d.Value;
                    }
                }

                int min      = avrupaSinirlari.Min();
                int minIndex = avrupaSinirlari.IndexOf(min);


                int minBolgeIndex = 0;
                if (minIndex == 0)
                {
                    minBolgeIndex = 19;
                }
                if (minIndex == 1)
                {
                    minBolgeIndex = 21;
                }
                if (minIndex == 2)
                {
                    minBolgeIndex = 24;
                }
                if (minIndex == 3)
                {
                    minBolgeIndex = 25;
                }

                List <String> gidilecekyol = new List <String>();

                //calculator = new DistanceCalculator();

                gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(), minBolgeIndex.ToString(), graph);


                if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya
                {
                    if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])]))
                    {
                        saldirmaDurumu = 3;
                        durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1));
                        durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1]));
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else//Biraz daha büyüyeceğiz...
                {
                    return(false);
                }
            }
        }
예제 #4
0
        public override bool devam(GameData f1)
        {
            durum3SaldiriIndexleri.Clear();
            saldirmaDurumu = 0;
            //19-25 arasını almak amaç öncelikle
            if (avrupaBendeMi(f1))//avrupa onda
            {
                foreach (Bolge b in f1.players[f1.turn].bolgeler)
                {
                    foreach (Bolge komsu in b.komsular)
                    {
                        if (b.ordu.askerSayisi > komsu.ordu.askerSayisi + 10 && b.sahip != komsu.sahip)
                        {
                            saldirmaDurumu = 1;
                            return true;
                        }
                    }
                }
                return false;
            }
            else if (avrupadaToprakVarMi(f1))//avrupada toprağm var sadece
            {
                if (getAvrupadakiAskerSayisi(f1) > getAvrupadakiDusmanSayisi(f1))//Toplam Düşmandan daha fazlaysa Saldırıya geçer //Avrupaya karşı
                {
                    //Eğer Avrupada tek başına komsusundan güçlü olan varsa saldırırız
                    //Toplamımız daha büyük olabilir ama tek tek hiçbir bölgemiz daha güçlü olmayabilir
                    foreach (Bolge b in f1.players[f1.turn].bolgeler)
                    {
                        if (getKomsuDusmanSayisi(b) > 0)
                        {
                            foreach (Bolge b2 in b.komsular)
                            {
                                if (b2.sahip != b.sahip)
                                {
                                    if (b.ordu.askerSayisi > b2.ordu.askerSayisi && buBolgeAvrupadaMi(b2))
                                    {
                                        saldirmaDurumu = 2;
                                        return true;
                                    }
                                }
                            }

                        }
                    }

                    return false;
                }
                else//Düşman daha fazlaysa bekler devam etmez
                {
                    return false;
                }
            }
            else//Avrupayla alakamız yoksa Avrupaya ulaşmaya çalışacağız.
            {
                Graph graph = new Graph();
                foreach (Bolge b in f1.bolgeler)
                {
                    graph.AddNode(b.index.ToString());
                }

                foreach (Bolge b in f1.bolgeler)
                {
                    foreach (Bolge b2 in b.komsular)
                    {
                        if (b2.sahip != f1.players[f1.turn])
                        {
                            graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false);
                        }
                    }
                }

                var calculator = new DistanceCalculator();
                var distances = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString());  // Start from "G"

                String temp="";

                //Avrupa Sınırları
                List<int> avrupaSinirlari = new List<int>();
                avrupaSinirlari.Add(0);
                avrupaSinirlari.Add(0);
                avrupaSinirlari.Add(0);
                avrupaSinirlari.Add(0);

                foreach (var d in distances)
                {
                    temp+= d.Key+" - "+d.Value+"-";
                    if (d.Key == "19")
                    {
                        avrupaSinirlari[0] =(int)d.Value;
                    }
                    if (d.Key == "21")
                    {
                        avrupaSinirlari[1] = (int)d.Value;
                    }
                    if (d.Key == "24")
                    {
                        avrupaSinirlari[2] = (int)d.Value;
                    }
                    if (d.Key == "25")
                    {
                        avrupaSinirlari[3] = (int)d.Value;
                    }
                }

                int min = avrupaSinirlari.Min();
                int minIndex = avrupaSinirlari.IndexOf(min);

                int minBolgeIndex = 0;
                if (minIndex == 0)
                {
                    minBolgeIndex = 19;
                }
                if (minIndex == 1)
                {
                    minBolgeIndex = 21;
                }
                if (minIndex == 2)
                {
                    minBolgeIndex = 24;
                }
                if (minIndex == 3)
                {
                    minBolgeIndex = 25;
                }

                List<String> gidilecekyol = new List<String>();

                //calculator = new DistanceCalculator();

                gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(),minBolgeIndex.ToString(), graph);

                if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya
                {
                    if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])]))
                    {
                        saldirmaDurumu = 3;
                        durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1));
                        durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1]));
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else//Biraz daha büyüyeceğiz...
                {
                    return false;
                }
            }
        }