/// <summary>
        /// Wacht op een klikkaart packet van de andere speler
        /// Als die gekregen is voert hij de logica uit die nodig is
        /// </summary>
        public static void KlaarVoorVolgendeKlikkaart()
        {
            //Als deze speler niet aan de beurt is
            if ((Host ? 1 : 2) != BaseGame.SpelerAanBeurt)    // ((Host ? 1 : 2) als de host true is dan 1 zo niet dan 2
            //Wacht op klik kaart packets van andere kant
            {
                BackgroundWorker b = new BackgroundWorker();

                //Wordt op tweede thread gerunned
                b.DoWork += delegate(object o, DoWorkEventArgs args) {   //doe dit op achtergrond  (delegate is mini method in method)
                    BackgroundWorker bw = o as BackgroundWorker;
                    object[]         packet;
                    if (Host)
                    {
                        packet = Utils.StringToArray(NetServer.ReceiveMessage()) as object[];
                    }
                    else
                    {
                        packet = Utils.StringToArray(NetClient.ReceiveMessage()) as object[];
                    }
                    args.Result = packet;
                };

                //Als er een bericht is binnen gekomen
                b.RunWorkerCompleted += delegate(object o, RunWorkerCompletedEventArgs args) {  //achtergrond shit is klaar
                    object[] packet = (object[])args.Result;
                    //Is het een klik kaart, of een volgende beurt packet?
                    if (((string)packet[0]) == "klikkaart")
                    {
                        //Update speelveld
                        BaseGame.KaartKlik((int)packet[1], (int)packet[2], false);
                    }
                    else if (((string)packet[0]) == "volgendebeurt")
                    {
                        //Zet speler aan beurt goed
                        BaseGame.SpelerAanBeurt = (int)packet[1];
                    }

                    //Klaar voor volgende beurt
                    if (BaseGame.Gamestate == 1)
                    {
                        KlaarVoorVolgendeKlikkaart();
                    }
                };
                b.RunWorkerAsync();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// load het dynamisch speelveld met de opgegeven grootte. afhankelijk van hoeveel kaarten moeten afgebeeld worden, worden de picture boxes groter gemaakt.
        /// ook de settings van de pictureboxes worden hier geset.
        /// </summary>
        public FormSpeelveld()
        {
            double yTussenruimte = 10;
            double xTussenruimte = 60;
            double xSizeTemp     = 150;
            double ySizeTemp     = 225;

            InitializeComponent();
            PictureBox[,] Kaart = new PictureBox[BaseGame.Width, BaseGame.Height];
            if (BaseGame.Width == 2 && BaseGame.Height == 2) //speelveld 2x2 vergroot de kaarten met factor 2
            {
                xSizeTemp *= 2;
                ySizeTemp *= 2;
            }
            else if (BaseGame.Width == 3 && BaseGame.Height == 2) //speelveld 2x3 vergroot de kaarten met 1.5
            {
                xSizeTemp *= 1.5;
                ySizeTemp *= 1.5;
            }
            else if (BaseGame.Width == 4 && BaseGame.Height == 2) //speelveld 2x4 vergroot de kaarten met 1.15
            {
                yTussenruimte = 10;
                xSizeTemp    *= 1.15;
                ySizeTemp    *= 1.15;
            }
            else if (BaseGame.Width == 4 && BaseGame.Height == 3) //speelveld 3x4 vergroot de kaarten met 1.15
            {
                yTussenruimte = 10;
                xSizeTemp    *= 1.15;
                ySizeTemp    *= 1.15;
            }
            else if (BaseGame.Width == 4 && BaseGame.Height == 4) //speelveld 4x4 geen vergroting
            {
                yTussenruimte = 10;
                xSizeTemp    *= 1;
                ySizeTemp    *= 1;
            }
            int yLocation = 25;

            for (int y = 0; y < BaseGame.Height; y++) //voert alle kaarten in met goede tussenruimtes en juiste locatie
            {
                int xLocation = 366;                  //begin locatie
                for (int x = 0; x < BaseGame.Width; x++)
                {
                    string Kaartnaam = "Kaart" + x + "" + y;                                              //juiste naam geven
                    Kaart[x, y]       = new PictureBox();                                                 //maakt nieuwe picturebox
                    Kaart[x, y].Name  = Kaartnaam;
                    Kaart[x, y].Size  = new Size(Convert.ToInt32(xSizeTemp), Convert.ToInt32(ySizeTemp)); //juiste size per speelveld
                    Kaart[x, y].Image = (Bitmap)Properties.Resources.ResourceManager.GetObject(ManagerThema.Themaprefix + "Voorkant");
                    Kaart[x, y].BackgroundImageLayout = ImageLayout.Stretch;
                    Kaart[x, y].BackColor             = Color.Transparent;
                    Kaart[x, y].Visible  = true;
                    Kaart[x, y].Anchor   = AnchorStyles.Left;
                    Kaart[x, y].SizeMode = PictureBoxSizeMode.Zoom;
                    Kaart[x, y].Location = new Point(xLocation, yLocation); //nieuwe locatie
                    Kaart[x, y].BringToFront();
                    string eventnaam = Kaartnaam + "_Click";
                    int    x2        = x;
                    int    y2        = y;
                    Kaart[x, y].Click += new EventHandler((sender, e) => {
                        BaseGame.KaartKlik(x2, y2);
                    });
                    this.Controls.Add(Kaart[x, y]);
                    xLocation += Convert.ToInt32(xSizeTemp) + Convert.ToInt32(xTussenruimte); //nieuw x coördinaat
                }
                yLocation += Convert.ToInt32(ySizeTemp) + Convert.ToInt32(yTussenruimte);     //nieuw y coördinaat
            }
        }