Exemplo n.º 1
0
        public bool kazanan(oyuncu oyuncu)
        {
            int kazanmaSayisi = 3;

            if (boyut > 3)
            {
                kazanmaSayisi = 4;
            }
            char karakter = oyuncu.karakteriAl();

            for (int i = 0; i < boyut; i++)
            {
                for (int j = 0; j < boyut; j++)
                {
                    if (oynTahtasi[i][j] == karakter)
                    {
                        int sayacH = 1;
                        int sayacD = 1;
                        int sayacV = 1;
                        for (int b = 1; b < kazanmaSayisi; b++)
                        {
                            if (j + b < boyut)
                            {
                                if (oynTahtasi[i][j + b] == karakter)
                                {
                                    sayacH++;
                                }
                            }

                            if (i + b < boyut)
                            {
                                if (oynTahtasi[i + b][j] == karakter)
                                {
                                    sayacV++;
                                }
                            }

                            if (i + b < boyut && j + b < boyut)
                            {
                                if (oynTahtasi[i + b][j + b] == karakter)
                                {
                                    sayacD++;
                                }
                            }
                        }
                        if (sayacD >= kazanmaSayisi || sayacH >= kazanmaSayisi || sayacV >= kazanmaSayisi)
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Exemplo n.º 2
0
 public bool hamleyiYaz(string koordinat, oyuncu oyuncu)
 {
     int[] kord = str2cord(koordinat);
     if (oynTahtasi[kord[0]][kord[1]] == '\0')
     {
         oynTahtasi[kord[0]][kord[1]] = oyuncu.karakteriAl();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            int         n = 3, sira = 0, secim = 0, oyuncuSayisi = 2;
            string      savePath = "save.txt";
            oyunTahtasi tahta;

            oyuncu[] oyuncular = new oyuncu[oyuncuSayisi];

            // MENU
            Console.Write("::Tic Tac Toe::\n1.Yeni Oyun\n2.Kayitli Oyunu Ac\n3.Cikis\n\nSecim: ");
            while (!int.TryParse(Console.ReadLine(), out secim) || secim < 1 || secim > 3)
            {
                Console.WriteLine("Yanlis secim yaptiniz! 1-3 arasinda secim yapiniz!");
            }

            if (secim == 1) //YENI OYUN
            {
                int oyunTuru;
                Console.Write("\nTic Tac Toe icin n boyutunu giriniz: ");
                while (!int.TryParse(Console.ReadLine(), out n) || (n != 7 && n != 5 && n != 3))
                {
                    Console.WriteLine("Lutfen mantikli bir boyut giriniz (3, 5 veya 7).");
                }
                tahta = new oyunTahtasi(n);
                Console.Write("\nOyun turunu seciniz:\n1.Insan vs. Insan\n2.Insan vs. PC\n3.PC vs. PC\n\nSecim: ");
                while (!int.TryParse(Console.ReadLine(), out oyunTuru) || oyunTuru < 1 || oyunTuru > 3)
                {
                    Console.WriteLine("Yanlis secim yaptiniz! 1-3 arasinda secim yapiniz!");
                }
                if (oyunTuru == 1) //Insan vs. Insan
                {
                    for (int i = 0; i < oyuncuSayisi; i++)
                    {
                        char   karakter;
                        string oyuncuAdi;
                        Console.WriteLine("Oyuncu {0} karakteri?", i + 1);
                        while (!char.TryParse(Console.ReadLine(), out karakter) || karakter == ' ')
                        {
                            Console.WriteLine("Lutfen bosluk haricinde bir karakter giriniz: ");
                        }
                        Console.WriteLine("Oyuncu {0} adi nedir?", i + 1);
                        oyuncuAdi = Console.ReadLine();
                        if (oyuncuAdi == "")
                        {
                            oyuncular[i] = new oyuncu(true, karakter);
                        }
                        else
                        {
                            oyuncular[i] = new oyuncu(true, karakter, oyuncuAdi);
                        }
                    }
                }
                else if (oyunTuru == 2) //Insan vs. PC
                {
                    char   karakter;
                    string oyuncuAdi;
                    Console.WriteLine("Oyuncu karakteri?");
                    while (!char.TryParse(Console.ReadLine(), out karakter) || karakter == ' ')
                    {
                        Console.WriteLine("Lutfen bosluk haricinde bir karakter giriniz: ");
                    }
                    Console.WriteLine("Oyuncu adi nedir?");
                    oyuncuAdi = Console.ReadLine();
                    if (oyuncuAdi == "")
                    {
                        oyuncular[0] = new oyuncu(true, karakter);
                    }
                    else
                    {
                        oyuncular[0] = new oyuncu(true, karakter, oyuncuAdi);
                    }
                    oyuncular[1] = new oyuncu(false);
                }
                else //PC vs. PC
                {
                    oyuncular[0] = new oyuncu(false, 'X', "PC 1");
                    oyuncular[1] = new oyuncu(false, 'O', "PC 2");
                }
            }
            else if (secim == 2) //KAYITLI OYUNU AC
            {
                if (!File.Exists(savePath))
                {
                    Console.WriteLine("Kayitli dosya bulunamadi. Cikis icin bir tusa basiniz.");
                    Console.ReadKey();
                    Environment.Exit(0);
                }
                using (StreamReader sr = new StreamReader(savePath))
                {
                    n = int.Parse(sr.ReadLine());
                    Console.WriteLine("Boyut alindi ({0}).", n);
                    char[][] geciciTahta = new char[n][];
                    for (int i = 0; i < n; i++)
                    {
                        geciciTahta[i] = sr.ReadLine().ToCharArray();
                        Console.WriteLine(geciciTahta[i]);
                    }
                    Console.WriteLine("Oyun tahtasi alindi.");
                    tahta = new oyunTahtasi(geciciTahta, n);
                    for (int i = 0; i < oyuncuSayisi; i++)
                    {
                        char   karakter  = char.Parse(sr.ReadLine());
                        bool   insanMi   = bool.Parse(sr.ReadLine());
                        string oyuncuAdi = sr.ReadLine();
                        oyuncular[i] = new oyuncu(insanMi, karakter, oyuncuAdi);
                        Console.WriteLine("Oyuncu {0} alindi.", oyuncuAdi);
                    }
                    sira = int.Parse(sr.ReadLine());
                    Console.WriteLine("Sira alindi ({0}).", sira);
                }
            }
            else
            {
                tahta = new oyunTahtasi(n);
                Environment.Exit(0);
            }
            Console.Clear();
            while (true) //Oyun ana dongusu
            {
                Console.WriteLine("Tahta: ");
                tahta.oyunTahtasiniYazdir();
                string hamle = oyuncular[sira].oyuncununHamlesiniAl(n);

                if (!tahta.hamleyiYaz(hamle, oyuncular[sira]))
                {
                    Console.Clear();
                    continue;
                }

                if (tahta.kazanan(oyuncular[sira]))
                {
                    Console.Clear();
                    Console.Write("Oyunu {0} kazandi!\n", oyuncular[sira].kullaniciAdiniAl());
                    tahta.oyunTahtasiniYazdir();
                    break;
                }
                else if (tahta.beraberlikKontrol())
                {
                    Console.Clear();
                    Console.Write("Oyun berabere bitti!\n");
                    tahta.oyunTahtasiniYazdir();
                    break;
                }

                sira = (sira + 1) % 2;
                Console.Clear();
                using (StreamWriter sw = new StreamWriter(savePath, false))
                {
                    otomatikKayit(n, tahta, oyuncular, oyuncuSayisi, sira, sw);
                }
            }
            Console.WriteLine("Kapatmak icin bir tusa basiniz...");
            Console.ReadKey();
        }