コード例 #1
0
ファイル: Er.cs プロジェクト: DokuzEylulCsc/odev-1-yavuzgedik
        protected override void HaraketEt(Bolge _koordinat, double karar)
        {
            var oldBolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;

            if (karar < 0.1)
            {
                // aşağı ilerle
                _koordinat.x++;

                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x++;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.1 && karar < 0.3)
            {
                // yukarı ilerle
                _koordinat.x--;

                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x--;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }

            Console.WriteLine($"{Ad} Er Harket Ediyor.");
        }
コード例 #2
0
        private void TakimiYarat()
        {
            int k = 0;

            int[] askerRütbeleri = new int[3];
            askerRütbeleri[0] = random.Next(0, 2);
            askerRütbeleri[1] = random.Next(1, 3);
            askerRütbeleri[2] = 7 - askerRütbeleri[1] - askerRütbeleri[0];
            for (int i = 0; i < askerRütbeleri.Length; i++)
            {
                for (int j = 0; j < askerRütbeleri[i]; j++)
                {
                    Bolge a = tahta.BaslangıcNoktasıVer(baslangicBolge, 5);
                    switch (i)
                    {
                    case 0:
                        birlik[k] = new Yuzbasi(a, this, tahta);
                        break;

                    case 1:
                        birlik[k] = new Tegmen(a, this, tahta);
                        break;

                    case 2:
                        birlik[k] = new Er(a, this, tahta);
                        break;
                    }
                    a.Doldur(birlik[k]);
                    k++;
                }
            }
        }
コード例 #3
0
        public override void HareketEt(StreamWriter streamWriter)
        {
            string takım;

            takım = hangiTakım ? "Takım 1" : "Takım 2";
            int gidilecekKonum = rd.Next(3);

            if (yaşıyorMu)
            {
                if (Koordinat.ReturnY() > 0 && gidilecekKonum == 0)//Yukarı git
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() - 1, true);
                    streamWriter.WriteLine(takım + "Teğmen'i yukarı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
                else if (Koordinat.ReturnY() < 15 && gidilecekKonum == 1)//Aşağı git
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() + 1, true);
                    streamWriter.WriteLine(takım + "Teğmen'i aşağı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
                else if (Koordinat.ReturnX() > 0 && gidilecekKonum == 2)//Sağa git
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), true);
                    streamWriter.WriteLine(takım + "Teğmen'i sağa hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
                else if (Koordinat.ReturnX() < 15 && gidilecekKonum == 3)//Sola git
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() + 1, true);
                    streamWriter.WriteLine(takım + "Teğmen'i sola hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
            }
        }
コード例 #4
0
 public Asker()
 {
     can           = 100;
     hayattami     = true;
     koordinat     = new Bolge();
     koordinat.Bos = false;
 }
コード例 #5
0
        public override void HareketEt(StreamWriter streamWriter)
        {
            string takım;

            takım = hangiTakım ? "Takım 1" : "Takım 2";
            bool yukarı = rd.Next(2) == 1 ? true : false;

            if (yaşıyorMu)
            {
                if (Koordinat.ReturnY() > 0 && yukarı == true)//Yukarı git
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() - 1, true);
                    streamWriter.WriteLine(takım + "Er'i yukarı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
                else if (Koordinat.ReturnX() < 15 && yukarı == true)//Mümkün değilse sağa git.
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX() + 1, Koordinat.ReturnY(), true);
                    streamWriter.WriteLine(takım + "Er'i sola hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
                if (Koordinat.ReturnY() < 15 && yukarı == false)//Aşağı git
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() + 1, true);
                    streamWriter.WriteLine(takım + "Er'i aşağı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
                else if (Koordinat.ReturnX() > 0 && yukarı == false)//Mümkün değilse sola git.
                {
                    Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false);
                    Koordinat = new Bolge(Koordinat.ReturnX() + 1, Koordinat.ReturnY(), true);
                    streamWriter.WriteLine(takım + "Er'i sağa hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString());
                }
            }
        }
コード例 #6
0
        public void HaritaYerleşimi(Takim takım1, Takim takım2)
        {
            //Takım1 haritanın sol alt köşesinde, Takım2 ise sağ üst köşede yer alacak.
            bool tekrarOluştur = false;
            int  x, y;

            for (int i = 0; i < 7; i++)
            {
                Bolge b1;
                Bolge b2;
                do
                {
                    x  = rd.Next(5);
                    y  = rd.Next(5);
                    b1 = new Bolge(x + 10, y, true);
                    b2 = new Bolge(x, y + 10, true);
                    for (int j = 0; j < i; j++)
                    {
                        if ((takım1.Birlik[j].Koordinat.ReturnX() == b1.ReturnX() && takım1.Birlik[j].Koordinat.ReturnY() == b1.ReturnY()) || (takım2.Birlik[j].Koordinat.ReturnX() == b2.ReturnX() && takım2.Birlik[j].Koordinat.ReturnY() == b2.ReturnY()))
                        {
                            tekrarOluştur = true;
                            break;
                        }
                        tekrarOluştur = false;
                    }
                } while (tekrarOluştur);
                takım1.Birlik[i].Koordinat = b1;
                takım2.Birlik[i].Koordinat = b2;
            }
        }
コード例 #7
0
ファイル: Er.cs プロジェクト: DokuzEylulCsc/Odev1_Cozum
        public override void AtesEt()
        {
            ArrayList komsular = ermeydani.KomsuBolgeleriVer(1, koordinat);
            ArrayList Dusman   = new ArrayList();

            foreach (object b in komsular)
            {
                if (b is Bolge)
                {
                    if (((Bolge)b).Dolumu)
                    {
                        if (Bolge.DusmanMi(this.koordinat, (Bolge)b))
                        {
                            Dusman.Add(((Bolge)b)._Asker);
                        }
                    }
                }
            }
            if (Dusman.Count > 0)
            {
                int    sec   = random.Next(0, Dusman.Count);
                Asker  temp  = (Asker)Dusman[sec];
                double prob  = random.NextDouble();
                int    hasar = (prob < 0.3) ? 5 : ((prob < 0.6) ? 10 : 15);
                Console.WriteLine($"{this.Takim.Isim}:{this.GetType().Name}, {temp.Takim.Isim}:{temp.GetType().Name}'e  ateş etti ve {hasar} hasar verdi. ");
                LogWriter.LogMessage($"{this.Takim.Isim}:{this.GetType().Name}, {temp.Takim.Isim}:{temp.GetType().Name}'e  ateş etti ve {hasar} hasar verdi. ");
                temp.Hasar(hasar);
            }
        }
コード例 #8
0
        // ..... //

        public Tegmen(Bolge koor, String takim)
        {
            this.alive     = true;
            this.Koordinat = koor;
            this.health    = 100;
            this.typeid    = "T";
            this.takimid   = takim;
        }
コード例 #9
0
        // ..... //

        public Yuzbasi(Bolge koor, String takim)
        {
            this.alive     = true;
            this.Koordinat = koor;
            this.health    = 100;
            this.typeid    = "Y";
            this.takimid   = takim;
        }
コード例 #10
0
        public Takim(String isim, Bolge bas_bolge, Ermeydani tahta)
        {
            this.tahta          = tahta;
            this.isim           = isim;
            this.baslangicBolge = bas_bolge;

            random = new Random();
            TakimiYarat();
        }
コード例 #11
0
ファイル: Asker.cs プロジェクト: DokuzEylulCsc/Odev1_Cozum
 public Asker(Bolge bolge, Takim takim, Ermeydani ermeydani)
 {
     this.koordinat = bolge;
     this.takim     = takim;
     this.ermeydani = ermeydani;
     can            = 100;
     canlimi        = true;
     random         = new Random();
 }
コード例 #12
0
 public void FillIn()
 {
     for (int i = 0; i < 16; i++)
     {
         for (int j = 0; j < 16; j++)
         {
             harita[i, j] = new Bolge(i, j);
         }
     }
 }
コード例 #13
0
 public Ermeydani()
 {
     for (int i = 0; i < 16; i++)
     {
         for (int j = 0; j < 16; j++)
         {
             Harita[i, j] = new Bolge(i, j);
         }
     }
 }
コード例 #14
0
        public bool check;        // Hareket sırasında hedef bolgenin dolu olup olmadıgını anlayabilmek icin kullanılan bir degisken.

        public Ermeydani(Takim t) // Bu for her bir bolgenin koordinatlarının harita uzerınde atanmasını saglıyor. Yani harita uzerındeki 16 bolgeyi belirledik.
        {
            for (int i = 0; i < 16; i++)
            {
                for (int j = 0; j < 16; j++)
                {
                    Harita[i, j] = new Bolge(i, j);
                }
            }
            team = t;
        }
コード例 #15
0
ファイル: Bolge.cs プロジェクト: DokuzEylulCsc/Odev1_Cozum
 public static bool DusmanMi(Bolge a, Bolge b)
 {
     if (a.asker.Takim.Equals(b.asker.Takim))
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
コード例 #16
0
ファイル: Asker.cs プロジェクト: DokuzEylulCsc/Odev1_Cozum
 public void Hasar(int a)
 {
     this.can -= a;
     if (can <= 0)
     {
         canlimi = false;
         koordinat.Bosalt(this);
         koordinat = null;
         Console.WriteLine($"{this.Takim.Isim}:{this.GetType().Name} öldü!!");
         LogWriter.LogMessage($"{this.Takim.Isim}:{this.GetType().Name} öldü!!");
     }
 }
コード例 #17
0
 public Ermeydani(int boyut)
 {
     rand       = new Random();
     harita     = new Bolge[boyut, boyut];
     this.boyut = boyut;
     for (int i = 0; i < boyut; i++)
     {
         for (int j = 0; j < boyut; j++)
         {
             harita[i, j] = new Bolge(i, j);
         }
     }
 }
コード例 #18
0
        public Ermeydani()
        {
            //meydan oluştur
            int say1, say2;

            for (int i = 0; i < 16; i++)
            {
                for (int j = 0; j < 16; j++)
                {
                    harita[i, j]   = new Bolge();
                    harita[i, j].X = i;
                    harita[i, j].Y = j;
                }
            }
            //takim 1 oluştur
            takim[0] = new Takim(); takim[0].Ad = "A";
            foreach (Asker a in takim[0].Birlik)
            {
geri:
                say1 = rnd1.Next(0, 5);
                say2 = rnd1.Next(0, 5);
                if (harita[say1, say2].Bos)
                {
                    a.Koordinat.X          = say1;
                    a.Koordinat.Y          = say2;
                    harita[say1, say2].Bos = false;
                }
                else
                {
                    goto geri;
                }
            }
            //takim 2 oluştur
            takim[1] = new Takim(); takim[1].Ad = "B";
            foreach (Asker a in takim[1].Birlik)
            {
geri:
                say1 = rnd1.Next(10, 15);
                say2 = rnd1.Next(10, 15);
                if (harita[say1, say2].Bos)
                {
                    a.Koordinat.X          = say1;
                    a.Koordinat.Y          = say2;
                    harita[say1, say2].Bos = false;
                }
                else
                {
                    goto geri;
                }
            }
        }
コード例 #19
0
        public ArrayList KomsuBolgeleriVer(int komsuluk, Bolge bolge)
        {
            ArrayList komsular = new ArrayList();

            for (int i = bolge.X + 1; i < bolge.X + komsuluk + 1; i++)
            {
                for (int j = bolge.Y + 1; j < bolge.Y + komsuluk + 1; j++)
                {
                    if (j < boyut && i < boyut && harita[i, j] != null)
                    {
                        komsular.Add(harita[i, j]);
                    }
                }
            }

            return(komsular);
        }
コード例 #20
0
ファイル: Asker.cs プロジェクト: DokuzEylulCsc/Odev1_Cozum
        protected void BolgeyiIsgalEt(int delta_x, int delta_y)
        {
            int x = this.koordinat.X;
            int y = this.koordinat.Y;

            if (this.koordinat.X + delta_x >= 0 && this.koordinat.X + delta_x < ermeydani.Boyut && this.koordinat.Y + delta_y < ermeydani.Boyut && this.koordinat.Y + delta_y >= 0)
            {
                if (!ermeydani[this.koordinat.X + delta_x, this.koordinat.Y + delta_y].Dolumu)
                {
                    koordinat.Bosalt(this);
                    ermeydani[this.koordinat.X + delta_x, this.koordinat.Y + delta_y].Doldur(this);
                    koordinat = ermeydani[this.koordinat.X + delta_x, this.koordinat.Y + delta_y];
                }
            }
            else
            {
                if (this is Er)
                {
                    if (this.koordinat.Y + delta_y >= ermeydani.Boyut || this.koordinat.Y + delta_y < 0)
                    {
                        double a   = random.NextDouble();
                        int    d_x = (a < 0.5) ? 1 : -1;
                        if (this.koordinat.X + d_x >= ermeydani.Boyut)
                        {
                            d_x = 0;
                        }
                        else if (this.koordinat.X + d_x < 0)
                        {
                            d_x = 0;
                        }

                        if (!ermeydani[this.koordinat.X + d_x, this.koordinat.Y].Dolumu)
                        {
                            koordinat.Bosalt(this);
                            ermeydani[this.koordinat.X + d_x, this.koordinat.Y].Doldur(this);
                            koordinat = ermeydani[this.koordinat.X + d_x, this.koordinat.Y];
                        }
                    }
                }
            }

            LogWriter.LogMessage($"{this.Takim.Isim}:{this.GetType().Name} {x}--{y} koordinatından {this.koordinat.X},{this.koordinat.Y}'a gitti.");
        }
コード例 #21
0
 public Bolge BaslangıcNoktasıVer(Bolge solUst, int a_boyut)
 {
     if (a_boyut > 2 && solUst.X + a_boyut <= boyut && solUst.Y + a_boyut <= boyut)
     {
         int x_p = rand.Next(solUst.X, solUst.X + a_boyut);
         int y_p = rand.Next(solUst.Y, solUst.Y + a_boyut);
         if (!harita[x_p, y_p].Dolumu)
         {
             return(harita[x_p, y_p]);
         }
         else
         {
             return(BaslangıcNoktasıVer(solUst, a_boyut));
         }
     }
     else
     {
         return(null);
     }
 }
コード例 #22
0
        void Ekle(Ermeydani em, Er a, int dongu, int tk)
        {
            Bolge b;

            while (indis < dongu)
            {
                a = new Er();
                b = new Bolge();
                do
                {
                    b.x         = r.Next(5) + tk;
                    b.y         = r.Next(5) + tk;
                    b.takım     = tk;
                    a.Koordinat = b;
                }while (em.Harita[b.x, b.y] != null);

                em.Harita[b.x, b.y] = a.Koordinat;
                birlik[indis]       = a;
                indis++;
            }
        }
コード例 #23
0
        public void İşlemYap(Asker asker, Takim takım1, Takim takım2, Bolge merkezBolge, StreamWriter streamWriter)
        {//30 ateş,60 hareket, 10 bekleme
            double işlem = rd.NextDouble();

            if (işlem < 0.3)
            {
                if (asker.hangiTakım == takım1.Birlik[0].hangiTakım)
                {
                    asker.AteşEt(BölgedekiDüşmanlar(asker, takım2, asker.Koordinat), streamWriter);
                }
                else
                {
                    asker.AteşEt(BölgedekiDüşmanlar(asker, takım1, asker.Koordinat), streamWriter);
                }
            }
            else if (işlem < 0.9)
            {
                asker.HareketEt(streamWriter);
            }
            else
            {
                asker.Bekle(streamWriter);
            }
        }
コード例 #24
0
        protected override void HaraketEt(Bolge _koordinat, double karar)
        {
            var oldBolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;

            if (karar < 0.05)
            {
                // aşağı ilerle
                _koordinat.x++;

                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x++;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.05 && karar < 0.1)
            {
                // yukarı ilerle
                _koordinat.x--;

                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x--;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.1 && karar < 0.15)
            {
                // sağa ilerle
                _koordinat.y++;

                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.y++;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.15 && karar < 0.2)
            {
                // sola ilerle
                _koordinat.y--;

                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.y--;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.2 && karar < 0.25)
            {
                // sağ çapraz yukarı ilerle
                _koordinat.x--;
                _koordinat.y++;
                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x--;
                    Koordinat.y++;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.25 && karar < 0.3)
            {
                // sağ çapraz aşağı ilerle
                _koordinat.x++;
                _koordinat.y++;
                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x++;
                    Koordinat.y++;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.3 && karar < 0.35)
            {
                // sol çapraz yukarı ilerle
                _koordinat.x--;
                _koordinat.y--;
                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x--;
                    Koordinat.y--;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }
            else if (karar >= 0.35 && karar < 0.4)
            {
                // sol çapraz aşağı ilerle
                _koordinat.x++;
                _koordinat.y--;
                var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge;
                if (bolge.Asker == null)
                {
                    Koordinat.x++;
                    Koordinat.y--;
                    bolge.Asker    = this;
                    oldBolge.Asker = null;
                }
            }

            Console.WriteLine($"{Ad} Yuzbasi Harket Ediyor.");
        }
コード例 #25
0
ファイル: Er.cs プロジェクト: DokuzEylulCsc/Odev1_Cozum
 public Er(Bolge bolge, Takim takim, Ermeydani ermeydani) : base(bolge, takim, ermeydani)
 {
     random = new Random();
 }
コード例 #26
0
 public Tegmen(Bolge bolge, Takim takim, Ermeydani ermeydani) : base(bolge, takim, ermeydani)
 {
 }
コード例 #27
0
 public Asker(Bolge Koord)
 {
     koordinat = Koord;
 }
コード例 #28
0
 // ..... //
 public Tegmen(Bolge Koord) : base(Koord)
 {
 }
コード例 #29
0
 // ..... //
 public Yuzbasi(Bolge Koord) : base(Koord)
 {
 }
コード例 #30
0
        //rastsal olarak asker üretmek
        static void birlikUret(int yuzbasiSayi, int tegmenSayi, int yuzbasiSayi2, int tegmenSayi2)
        {
            int[] temp = new int[2];
            temp[0] = 0; temp[1] = 0;
            Ermeydani meydan  = new Ermeydani();
            Takim     takım   = new Takim();
            Er        er      = new Er(true, takım, 100, temp);
            Tegmen    tegmen  = new Tegmen(true, takım, 100, temp);
            Yuzbasi   yuzbasi = new Yuzbasi(true, takım, 100, temp);
            Bolge     bolge   = new Bolge();

            int i = 0;

            if (yuzbasiSayi == 2)
            {
                takım.Birlik1[i] = yuzbasi;
                i++;
            }
            if (tegmenSayi == 1)
            {
                takım.Birlik1[i] = tegmen;
                i++;
            }
            else
            {
                takım.Birlik1[i] = tegmen;
                i++;
                takım.Birlik1[i] = tegmen;
                i++;
            }
            for (int x = i; x < 7; x++)
            {
                takım.Birlik1[x] = er;
            }


            i = 0;

            if (yuzbasiSayi2 == 2)
            {
                takım.Birlik2[i] = yuzbasi;
                i++;
            }
            if (tegmenSayi2 == 1)
            {
                takım.Birlik2[i] = tegmen;
                i++;
            }
            else
            {
                takım.Birlik2[i] = tegmen;
                i++;
                takım.Birlik2[i] = tegmen;
                i++;
            }
            for (int x = i; x < 7; x++)
            {
                takım.Birlik2[x] = er;
            }


            for (int a = 0; a < 7; a++)
            {
                meydan.askerYerlestir(takım.Birlik1[a], takım.Birlik2[a], bolge.harita, a);
            }
        }