Beispiel #1
0
        private void ok_btn_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(spieler1_tbx.Text.Trim()) || String.IsNullOrEmpty(spieler2_tbx.Text.Trim()))
            {
                return;
            }
            Logik.Player.Player p1 = new Logik.Player.Player(spieler1_tbx.Text[0]);
            Logik.Player.Player p2 = new Logik.Player.Player(spieler2_tbx.Text[0]);

            if (spieler2_ki_cbx.Checked)
            {
                p2 = new Logik.Player.AIPlayer((int)ki_nud.Value, 3, 3, p2.Symbol);
            }

            if (online_modus_cbx.Checked)
            {
                Logik.Network.Network client = null;
                if ((string)protokoll_lbx.SelectedItem == "TCP/IP")
                {
                    if (server_cbx.Checked)
                    {
                        client = new Logik.Network.TCPServer(host_tbx.Text, int.Parse(port_tbx.Text));
                    }
                    else
                    {
                        client = new Logik.Network.TCPClient(host_tbx.Text, int.Parse(port_tbx.Text));
                    }
                }
                else
                {
                    client = new Logik.Network.IRCClient(host_tbx.Text, int.Parse(port_tbx.Text), "#UniTTT-play");
                }
                p2        = new Logik.Player.NetworkPlayer(p2.Symbol, client);
                _gameMode = new NetworkGame(p1, p2, new BrettDarsteller(3, 3), new Logik.Fields.Brett(3, 3), client);
            }
            else
            {
                _gameMode = new Game(p1, p2, new BrettDarsteller(3, 3), new Logik.Fields.Brett(3, 3));
            }
            if (spieler2_anfang_cbx.Checked && !online_modus_cbx.Checked)
            {
                _gameMode.PlayerChange();
            }
            Logik.WinChecker.GewinnBedingung = (int)gewinnbedingung_nud.Value;
            DialogResult    = System.Windows.Forms.DialogResult.OK;
            _spieler1Anfang = spieler1_anfang_cbx.Checked && online_modus_cbx.Checked;
            _spieler2Anfang = spieler2_anfang_cbx.Checked && !online_modus_cbx.Checked;
            Close();
        }
Beispiel #2
0
        //ki:1 = Reinforcement
        //ki:2 = Recursion
        //ki:3 = Minimax
        //ki:4 = Like
        //ki:5 = Random7
        //ki:6 = Bot
        static void Main(string[] args)
        {
            Logik.Parameterdata        parameters  = Logik.ParameterInterpreter.InterpretCommandLine(args);
            Logik.Plugin.PluginManager plugManager = new Logik.Plugin.PluginManager();

            int width  = parameters.GetValue <int>("breite");
            int height = parameters.GetValue <int>("hoehe");

            if (!parameters.IsDefined("breite"))
            {
                width = 3;
            }
            if (!parameters.IsDefined("hoehe"))
            {
                height = 3;
            }

            Logik.Fields.Field field = new Logik.Fields.Brett(width, height);
            if (parameters.IsDefined("plugin"))
            {
                Logik.Plugin.IPlugin plugin = plugManager.Get(parameters.GetValue <string>("plugin"), Logik.Plugin.PluginTypes.Field);
                if (plugin is Logik.Fields.Field)
                {
                    field = (Logik.Fields.Field)plugin;
                    if (plugin is Logik.Plugin.IFieldPlugin)
                    {
                        if (((Logik.Plugin.IFieldPlugin)plugin).ForceFieldSize)
                        {
                            width  = field.Width;
                            height = field.Height;
                        }
                    }
                }
            }

            HumanPlayer hPlayer;
            char        aisymb;

            if (parameters.IsDefined("player"))
            {
                char symb = parameters.GetValue <char>("player");
                aisymb  = Logik.Player.Player.PlayerChange(symb);
                hPlayer = new HumanPlayer(symb);
            }
            else
            {
                hPlayer = new HumanPlayer('X');
                aisymb  = 'O';
            }

            Logik.Player.Player aiplayer = null;
            if (parameters.GetValue <int>("ki") != default(int))
            {
                aiplayer = new Logik.Player.AIPlayer(parameters.GetValue <int>("ki"), width, height, aisymb);
            }
            else if (parameters.GetValue <string>("ki") != default(string))
            {
                aiplayer = new Logik.Player.AIPlayer(parameters.GetValue <string>("ki"), width, height, aisymb);
            }

            if (parameters.IsDefined("help") && parameters.Count == 1)
            {
                Help();
            }
            else if (parameters.IsDefined("learn"))
            {
                if (parameters.IsDefined("human"))
                {
                    hPlayer.Learn();
                }
                else
                {
                    if (aiplayer == null)
                    {
                        throw new FormatException();
                    }
                    Console.Title = string.Format(CultureInfo.CurrentCulture, "UniTTT - {0} Lernmodus", aiplayer.ToString());
                    ((Logik.Player.AIPlayer)aiplayer).AI.ShowMessageEvent += Console.WriteLine;
                    ((Logik.Player.AIPlayer)aiplayer).AI.GetStringEvent   += Console.ReadLine;
                    ((Logik.Player.AIPlayer)aiplayer).AI.GetIntEvent      += GetInt;
                    aiplayer.Learn();
                }
            }
            else if (parameters.IsDefined("network"))
            {
                Logik.Network.Network client;
                string ip   = parameters.GetValue <string>("ip");
                int    port = parameters.GetValue <int>("port");
                if (parameters.GetValue <string>("protokoll") == "irc")
                {
                    client = new Logik.Network.IRCClient(ip, port, parameters.GetValue <string>("channel"));
                }
                else
                {
                    if (parameters.IsDefined("server"))
                    {
                        client = new Logik.Network.TCPServer(ip, port);
                    }
                    else
                    {
                        client = new Logik.Network.TCPClient(ip, port);
                    }
                }

                Logik.Game.Game gameMode = new Logik.Game.NetworkGame(hPlayer, new Logik.Player.NetworkPlayer(Logik.Player.Player.PlayerChange(hPlayer.Symbol), client), new BrettDarsteller(width, height), field, client);
                Game            g        = new Game(gameMode);
                g.Run();
            }
            else
            {
                Logik.Game.Game gameMode;
                BrettDarsteller bdar = new BrettDarsteller(width, height);
                if (parameters.IsDefined("kigame"))
                {
                    gameMode = new Logik.Game.Game(aiplayer, aiplayer, bdar, field);
                }
                else
                {
                    if (aiplayer != null)
                    {
                        gameMode = new Logik.Game.Game(hPlayer, aiplayer, bdar, field);
                    }
                    else
                    {
                        gameMode = new Logik.Game.Game(new HumanPlayer('X'), new HumanPlayer('O'), bdar, field);
                    }
                }
                Game g = new Game(gameMode);
                g.Run();
            }
        }
Beispiel #3
0
        private void ok_btn_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(spieler1_tbx.Text.Trim()) || String.IsNullOrEmpty(spieler2_tbx.Text.Trim()))
            {
                return;
            }
            Logik.Player.Player p1 = new Logik.Player.Player(spieler1_tbx.Text[0]);
            Logik.Player.Player p2 = new Logik.Player.Player(spieler2_tbx.Text[0]);

            if (spieler2_ki_cbx.Checked)
            {
                p2 = new Logik.Player.AIPlayer((int)ki_nud.Value, 3, 3, p2.Symbol);
            }

            if (online_modus_cbx.Checked)
            {
                Logik.Network.Network client = null;
                if ((string)protokoll_lbx.SelectedItem == "TCP/IP")
                {
                    if (server_cbx.Checked)
                    {
                        client = new Logik.Network.TCPServer(host_tbx.Text, int.Parse(port_tbx.Text));
                    }
                    else
                    {
                        client = new Logik.Network.TCPClient(host_tbx.Text, int.Parse(port_tbx.Text));
                    }
                }
                else
                {
                    client = new Logik.Network.IRCClient(host_tbx.Text, int.Parse(port_tbx.Text), "#UniTTT-play");
                }
                p2 = new Logik.Player.NetworkPlayer(p2.Symbol, client);
                _gameMode = new NetworkGame(p1, p2, new BrettDarsteller(3, 3), new Logik.Fields.Brett(3, 3), client);
            }
            else
            {
                _gameMode = new Game(p1, p2, new BrettDarsteller(3, 3), new Logik.Fields.Brett(3, 3));
            }
            if (spieler2_anfang_cbx.Checked && !online_modus_cbx.Checked)
            {
                _gameMode.PlayerChange();
            }
            Logik.WinChecker.GewinnBedingung = (int)gewinnbedingung_nud.Value;
            DialogResult = System.Windows.Forms.DialogResult.OK;
            _spieler1Anfang = spieler1_anfang_cbx.Checked && online_modus_cbx.Checked;
            _spieler2Anfang = spieler2_anfang_cbx.Checked && !online_modus_cbx.Checked;
            Close();
        }
Beispiel #4
0
        //ki:1 = Reinforcement
        //ki:2 = Recursion
        //ki:3 = Minimax
        //ki:4 = Like
        //ki:5 = Random7
        //ki:6 = Bot
        static void Main(string[] args)
        {
            Logik.Parameterdata parameters = Logik.ParameterInterpreter.InterpretCommandLine(args);
            Logik.Plugin.PluginManager plugManager = new Logik.Plugin.PluginManager();

            int width = parameters.GetValue<int>("breite");
            int height = parameters.GetValue<int>("hoehe");

            if (!parameters.IsDefined("breite"))
            {
                width = 3;
            }
            if (!parameters.IsDefined("hoehe"))
            {
                height = 3;
            }

            Logik.Fields.Field field = new Logik.Fields.Brett(width, height);
            if (parameters.IsDefined("plugin"))
            {
                Logik.Plugin.IPlugin plugin = plugManager.Get(parameters.GetValue<string>("plugin"), Logik.Plugin.PluginTypes.Field);
                if (plugin is Logik.Fields.Field)
                {
                    field = (Logik.Fields.Field)plugin;
                    if (plugin is Logik.Plugin.IFieldPlugin)
                    {
                        if (((Logik.Plugin.IFieldPlugin)plugin).ForceFieldSize)
                        {
                            width = field.Width;
                            height = field.Height;
                        }
                    }
                }
            }

            HumanPlayer hPlayer;
            char aisymb;
            if (parameters.IsDefined("player"))
            {
                char symb = parameters.GetValue<char>("player");
                aisymb = Logik.Player.Player.PlayerChange(symb);
                hPlayer = new HumanPlayer(symb);
            }
            else
            {
                hPlayer = new HumanPlayer('X');
                aisymb = 'O';
            }

            Logik.Player.Player aiplayer = null;
            if (parameters.GetValue<int>("ki") != default(int))
            {
                aiplayer = new Logik.Player.AIPlayer(parameters.GetValue<int>("ki"), width, height, aisymb);
            }
            else if (parameters.GetValue<string>("ki") != default(string))
            {
                aiplayer = new Logik.Player.AIPlayer(parameters.GetValue<string>("ki"), width, height, aisymb);
            }

            if (parameters.IsDefined("help") && parameters.Count == 1)
            {
                Help();
            }
            else if (parameters.IsDefined("learn"))
            {
                if (parameters.IsDefined("human"))
                {
                    hPlayer.Learn();
                }
                else
                {
                    if (aiplayer == null) throw new FormatException();
                    Console.Title = string.Format(CultureInfo.CurrentCulture, "UniTTT - {0} Lernmodus", aiplayer.ToString());
                    ((Logik.Player.AIPlayer)aiplayer).AI.ShowMessageEvent += Console.WriteLine;
                    ((Logik.Player.AIPlayer)aiplayer).AI.GetStringEvent += Console.ReadLine;
                    ((Logik.Player.AIPlayer)aiplayer).AI.GetIntEvent += GetInt;
                    aiplayer.Learn();
                }
            }
            else if (parameters.IsDefined("network"))
            {
                Logik.Network.Network client;
                string ip = parameters.GetValue<string>("ip");
                int port = parameters.GetValue<int>("port");
                if (parameters.GetValue<string>("protokoll") == "irc")
                {
                    client = new Logik.Network.IRCClient(ip, port, parameters.GetValue<string>("channel"));
                }
                else
                {
                    if (parameters.IsDefined("server"))
                    {
                        client = new Logik.Network.TCPServer(ip, port);
                    }
                    else
                    {
                        client = new Logik.Network.TCPClient(ip, port);
                    }
                }

                Logik.Game.Game gameMode = new Logik.Game.NetworkGame(hPlayer, new Logik.Player.NetworkPlayer(Logik.Player.Player.PlayerChange(hPlayer.Symbol), client), new BrettDarsteller(width, height), field, client);
                Game g = new Game(gameMode);
                g.Run();
            }
            else
            {
                Logik.Game.Game gameMode;
                BrettDarsteller bdar = new BrettDarsteller(width, height);
                if (parameters.IsDefined("kigame"))
                {
                    gameMode = new Logik.Game.Game(aiplayer, aiplayer, bdar, field);
                }
                else
                {
                    if (aiplayer != null)
                    {
                        gameMode = new Logik.Game.Game(hPlayer, aiplayer, bdar, field);
                    }
                    else
                    {
                        gameMode = new Logik.Game.Game(new HumanPlayer('X'), new HumanPlayer('O'), bdar, field);
                    }
                }
                Game g = new Game(gameMode);
                g.Run();
            }
        }