Example #1
0
        static void Main(string[] args)
        {
            //UI -- menetapkan ukuran window
            Console.SetWindowSize(1, 1);
            Console.SetBufferSize(90, 30);
            Console.SetWindowSize(90, 30);

            // Variabel yang merepresentatifkan papan permainan
            String[] Kotak = { "#", "#", "#", "#", "#", "#", "#", "#", "#" };

            // Randomizer dan variabelnya
            var rng       = new Random();
            int nomorAcak = rng.Next(1, 3);

            /*
             * Membuat variabel apa game masih layak untuk dilanjutkan atau tidak
             * Jika salah satu pihak menang atau semua kotak terisi, nantinya nilai
             * apaGameBerjalan = false
             */
            bool apaGameBerjalan = true;

            //Panduan bagi program untuk parameter di method AI nanti
            string playerSymbol   = "O";
            string computerSymbol = "X";

            /*
             * Variabel untuk memberitahu jumlah kotak yang sudah diisi
             * Agar mempermudah penentuan gerakan AI
             */
            int kotakTerisi = 0;

            /*
             *  Variabel sebagai pengenal, fungsi kurang lebih seperti tanda nama
             *  yaitu untuk mengetahui anda siapa. Dalam hal ini untuk mengetahui apakah
             *  anda manusia / bot. Kenapa harus begini ?. jawabannya adalah saya tidak tahu
             *  cara lain, kalau punya solusi lain, kontak saya.
             */
            string pengenal = "N"; // "N" singkatan dari null

            // Loop permainannya
            while (apaGameBerjalan)
            {
                // UI
                UI.Board(Kotak);

                // Apabila bot jalan duluan
                if (nomorAcak == 1)
                {
                    // Memanggil function Komputer
                    Kotak = Komputer(Kotak, playerSymbol, computerSymbol, kotakTerisi, pengenal);

                    // UI
                    UI.Board(Kotak);

                    /* Catatan :
                     * "Bagian Menang / kalah mungkin kurang efisien. Tetapi ini 'get the job done'.
                     * Suatu saat mungkin akan dibuat kode jauh lebih efisien." - Qois */

                    // Menang / Kalah
                    apaGameBerjalan = Game.MenangKalah(apaGameBerjalan, Kotak, computerSymbol);
                    if (apaGameBerjalan == false)
                    {
                        Console.SetCursorPosition((Console.WindowWidth - 17) / 2, ((Console.WindowHeight) / 2) + 10);
                        Console.WriteLine("Permainan selesai");
                        Console.SetCursorPosition((Console.WindowWidth - 28) / 2, ((Console.WindowHeight) / 2) + 11);
                        Console.Write("Press any key to continue...");
                        Console.ReadLine();

                        // Reset permainan
                        Main(null);
                        return;
                    }

                    //Memberitahu program kalau kotak yang terisi + 1
                    kotakTerisi++;

                    // Memanggil function Player, benar sama sekali tidak hubungan dengan AI
                    Kotak = Player(Kotak, pengenal);

                    // UI
                    UI.Board(Kotak);

                    // Menang / Kalah
                    apaGameBerjalan = Game.MenangKalah(apaGameBerjalan, Kotak, playerSymbol);
                    if (apaGameBerjalan == false)
                    {
                        Console.SetCursorPosition((Console.WindowWidth - 17) / 2, ((Console.WindowHeight) / 2) + 10);
                        Console.WriteLine("Permainan selesai");
                        Console.SetCursorPosition((Console.WindowWidth - 28) / 2, ((Console.WindowHeight) / 2) + 11);
                        Console.Write("Press any key to continue...");
                        Console.ReadLine();

                        Main(null);
                        return;
                    }

                    //Memberitahu program kalau kotak yang terisi + 1
                    kotakTerisi++;
                }

                // Apabila bot jalan kedua setelah pemain jalan
                else if (nomorAcak == 2)
                {
                    // Memanggil function Player, benar sama sekali tidak hubungan dengan AI
                    Kotak = Player(Kotak, pengenal);

                    // UI
                    UI.Board(Kotak);

                    // Menang / Kalah
                    apaGameBerjalan = Game.MenangKalah(apaGameBerjalan, Kotak, playerSymbol);
                    if (apaGameBerjalan == false)
                    {
                        Console.SetCursorPosition((Console.WindowWidth - 17) / 2, ((Console.WindowHeight) / 2) + 10);
                        Console.WriteLine("Permainan selesai");
                        Console.SetCursorPosition((Console.WindowWidth - 28) / 2, ((Console.WindowHeight) / 2) + 11);
                        Console.Write("Press any key to continue...");
                        Console.ReadLine();

                        Main(null);
                        return;
                    }

                    //Memberitahu program kalau kotak yang terisi + 1
                    kotakTerisi++;

                    // Memanggil function Komputer, tidak ada hubungannya dengan AI (mungkin)
                    Kotak = Komputer(Kotak, playerSymbol, computerSymbol, kotakTerisi, pengenal);

                    // UI
                    UI.Board(Kotak);

                    // Menang / Kalah
                    apaGameBerjalan = Game.MenangKalah(apaGameBerjalan, Kotak, computerSymbol);
                    if (apaGameBerjalan == false)
                    {
                        Console.SetCursorPosition((Console.WindowWidth - 17) / 2, ((Console.WindowHeight) / 2) + 10);
                        Console.WriteLine("Permainan selesai");
                        Console.SetCursorPosition((Console.WindowWidth - 28) / 2, ((Console.WindowHeight) / 2) + 11);
                        Console.Write("Press any key to continue...");
                        Console.ReadLine();

                        Main(null);
                        return;
                    }

                    //Memberitahu program kalau kotak yang terisi + 1
                    kotakTerisi++;
                }
            }

            //Mereset jumlah kotak terisi setelah sesi permainan selesai
            // kotakTerisi = 0;
        }