示例#1
0
        //PictureBox picturebox2;

        #region constructors

        /// <summary>
        /// maak een pion en bepaal de kleur
        /// </summary>
        /// <param name="kleur">kleur die hij in het spel krijgt</param>
        public PionImage(Color kleur, MensErgerJeNietLogic.Pion logicPion)
        {
            this.lPion = logicPion;
            this.SetCollorImage(kleur);
            this.configPion();
            //this.SetSelectedPion();

            // Eventlisteners toevoegen
            this.animatedPion.DoWork += animatedPion_DoWork;
            this.animatedPion.WorkerReportsProgress = true;
            this.animatedPion.ProgressChanged      += animatedPion_ProgressChanged;
            this.animatedPion.RunWorkerCompleted   += animatedPion_RunWorkerCompleted;
            logicPion.OnVerplaatst        += logicPion_Verplaatst;
            logicPion.VerplaatsbaarChange += logicPion_Verplaatsbaar;
        }
示例#2
0
        void animatedPion_DoWork(object sender, DoWorkEventArgs e)
        {
            //blijf wachten toch hij niet meer bezig is
            while (PionImage.isAnimating)
            {
                System.Threading.Thread.Sleep(300);
            }
            PionImage.isAnimating = true;
            MensErgerJeNietLogic.Pion pion = e.Argument as MensErgerJeNietLogic.Pion;

            //er kan ondertussen nog een verandering zijn deze moet dus ook nog worden doorgevoerd
            int stoplocatie = 0;

            do
            {
                if (pion.LaatsteLocatie > 55 || pion.Locatie > 39)
                {
                    animatedPion.ReportProgress(pion.Locatie);
                    stoplocatie = pion.Locatie;
                }
                else if (pion.Locatie < pion.LaatsteLocatie)
                {
                    int stappen = 40 + pion.Locatie;
                    for (int i = pion.LaatsteLocatie; i <= stappen; i++)
                    {
                        animatedPion.ReportProgress(i % 40);
                        System.Threading.Thread.Sleep(250);
                        stoplocatie = i % 40;
                    }
                }
                else if (pion.LaatsteLocatie < 40)
                {
                    int eindlocatie = pion.Locatie;//expres hier gereseveerd omdat door het asynchrone karakter de value terwijl de loop nog wordt uitgevoerd kan wijzigen
                    for (int i = pion.LaatsteLocatie; i <= eindlocatie; i++)
                    {
                        animatedPion.ReportProgress(i);
                        System.Threading.Thread.Sleep(250);
                        stoplocatie = i;
                    }
                }
            }while(stoplocatie != pion.Locatie);
        }