Beispiel #1
0
        /// <summary>
        /// SetMurCouleur
        /// </summary>
        private void SetMurCouleur()
        {
            for (int y = -2; y < 3; y++)
            {
                for (int x = -2; x < 3; x++)
                {
                    foreach (Labyrinthe labyrinthe in this.Where(l => l.X == X + x && l.Y == Y + y && l.Mur))
                    {
                        int xx = Math.Abs(x);
                        int yy = Math.Abs(y);

                        if (xx == 0)
                        {
                            xx = 1;
                        }

                        if (yy == 0)
                        {
                            yy = 1;
                        }

                        labyrinthe.Couleur = Couleur.Get(127 / (xx * yy), 127 / (xx * yy), 127 / (xx * yy));
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Spectrograph
        /// </summary>
        /// <param name="audioBuffer"></param>
        /// <param name="fft"></param>
        private static void Spectrograph(float[] fftData)
        {
            for (int y = 0; y < Util.Context.Hauteur; y++)
            {
                int volume = (int)Volume(fftData, y, 0.15);

                if (volume < 0)
                {
                    volume = 0;
                }

                byte bleu  = (byte)volume;
                byte vert  = 0;
                byte rouge = 0;

                if (volume > 127)
                {
                    bleu  = 127;
                    rouge = (byte)(volume - 127);
                }

                if (volume > 255)
                {
                    rouge = 127;
                    vert  = (byte)(volume - 255);
                }

                if (Util.Context.Pixels.GetCoordonnee(19, 19 - y) is Pixel pixel)
                {
                    pixel.SetColor(Couleur.Get(rouge, vert, bleu));
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// stroboscope
        /// </summary>
        public static void Demo5(Criteria criteria)
        {
            int i = 0;

            Util.Setup();
            int task = Util.StartTask();

            while (Util.TaskWork(task))
            {
                foreach (Pixel pixel in Util.Context.Pixels)
                {
                    if (i % 2 == 1)
                    {
                        pixel.SetColor();
                    }
                    else
                    {
                        pixel.SetColor(Couleur.Get(100, 100, 127));
                    }
                }

                i++;
                Util.SetLeds();

                using ManualResetEventSlim waitHandle = new ManualResetEventSlim(false);
                waitHandle.Wait(TimeSpan.FromMilliseconds(criteria.CmbStroboscope));
            }
        }
Beispiel #4
0
        /// <summary>
        /// Serpent
        /// </summary>
        public static void Serpent()
        {
            // Initialize the led strip
            Util.Setup();
            int        task       = Util.StartTask();
            int        cycle      = 0;
            Random     r          = new Random();
            JeuSerpent jeuSerpent = new JeuSerpent(Util.Context.Pixels.Largeur, Util.Context.Pixels.Hauteur);

            while (Util.TaskWork(task))
            {
                //Pointage
                Util.Context.Pixels.Print(jeuSerpent.Score.ToString(), 2, 13, Couleur.Get(127, 127, 127));

                //La balle
                Util.Context.Pixels.GetCoordonnee(jeuSerpent.X, jeuSerpent.Y).Set(r.Next(127), r.Next(127), r.Next(127));

                //Bordure
                for (int i = 0; i < Util.Context.Pixels.Largeur; i++)
                {
                    Util.Context.Pixels.GetCoordonnee(i, 0).Set(64, 64, 127);
                    Util.Context.Pixels.GetCoordonnee(i, 19).Set(64, 64, 127);
                }

                for (int i = 0; i < Util.Context.Pixels.Hauteur; i++)
                {
                    Util.Context.Pixels.GetCoordonnee(0, i).Set(64, 64, 127);
                    Util.Context.Pixels.GetCoordonnee(19, i).Set(64, 64, 127);
                }

                //Mouvement
                bool mort    = jeuSerpent.Mouvement(cycle++);
                int  degrade = 1;

                //Serpent
                foreach (Serpent serpent in jeuSerpent.Serpents)
                {
                    if (CouleurSerpent(degrade++) is Couleur couleurSerpent)
                    {
                        Util.Context.Pixels.GetCoordonnee(serpent.X, serpent.Y).SetColor(couleurSerpent);
                    }
                }

                //Le serpent mange une balle
                bool manger = jeuSerpent.Manger();

                //Background
                Util.Context.Pixels.BackGround(3);
                Util.SetLeds();
                Util.Context.Pixels.Reset();

                using ManualResetEventSlim waitHandle = new ManualResetEventSlim(false);
                waitHandle.Wait(TimeSpan.FromMilliseconds(jeuSerpent.Vitesse));

                if (manger || mort)
                {
                    waitHandle.Wait(TimeSpan.FromMilliseconds(1000));
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// SetBinaire
        /// </summary>
        /// <param name="caracteres"></param>
        public void SetBinaire(PoliceList caracteres)
        {
            Couleur couleur = Couleur.Get(31, 64, 127);
            Couleur noir    = Couleur.Get(1, 1, 1);

            string heure   = Convert.ToString(DateTime.Now.Hour, 2).PadLeft(6, '0');
            string minute  = Convert.ToString(DateTime.Now.Minute, 2).PadLeft(6, '0');
            string seconde = Convert.ToString(DateTime.Now.Second, 2).PadLeft(6, '0');

            for (int h = 0; h < 6; h++)
            {
                if (heure[h] == '1')
                {
                    GetCoordonnee(Coordonnee.Get(2, h * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                    GetCoordonnee(Coordonnee.Get(3, h * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                    GetCoordonnee(Coordonnee.Get(4, h * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                }
                else
                {
                    GetCoordonnee(Coordonnee.Get(2, h * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                    GetCoordonnee(Coordonnee.Get(3, h * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                    GetCoordonnee(Coordonnee.Get(4, h * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                }
            }

            for (int m = 0; m < 6; m++)
            {
                if (minute[m] == '1')
                {
                    GetCoordonnee(Coordonnee.Get(9, m * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                    GetCoordonnee(Coordonnee.Get(10, m * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                    GetCoordonnee(Coordonnee.Get(11, m * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                }
                else
                {
                    GetCoordonnee(Coordonnee.Get(9, m * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                    GetCoordonnee(Coordonnee.Get(10, m * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                    GetCoordonnee(Coordonnee.Get(11, m * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                }
            }

            for (int s = 0; s < 6; s++)
            {
                if (seconde[s] == '1')
                {
                    GetCoordonnee(Coordonnee.Get(16, s * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                    GetCoordonnee(Coordonnee.Get(17, s * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                    GetCoordonnee(Coordonnee.Get(18, s * 2 + 1, Largeur, Hauteur)).SetColor(couleur);
                }
                else
                {
                    GetCoordonnee(Coordonnee.Get(16, s * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                    GetCoordonnee(Coordonnee.Get(17, s * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                    GetCoordonnee(Coordonnee.Get(18, s * 2 + 1, Largeur, Hauteur)).SetColor(noir);
                }
            }

            Print(caracteres, 2, 14, couleur);
        }
Beispiel #6
0
        /// <summary>
        /// SetDate
        /// </summary>
        /// <param name="policeLists"></param>
        /// <param name="heure"></param>
        public void SetDate(PoliceList caracteres)
        {
            Couleur couleur = Couleur.Get(0, 0, 127);

            Print(DateTime.Now.ToString("yyyy"), 4, 1, couleur);
            Print(DateTime.Now.ToString("MM-dd"), 1, 7, couleur);
            Print(caracteres, 2, 13, couleur);
        }
Beispiel #7
0
        /// <summary>
        /// SetNouvelle
        /// </summary>
        public void SetNouvelle(PoliceList caracteres, string heure)
        {
            Couleur couleur = Couleur.Get(64, 0, 0);

            Print(caracteres, 0, 1, Couleur.Get(32, 32, 127));
            Print(DateTime.Now.ToString("MM-dd"), 1, 7, couleur);
            Print(heure, 2, 13, couleur);
            BackGround();
        }
Beispiel #8
0
        /// <summary>
        /// Couleur Serpent
        /// </summary>
        /// <param name="degrade"></param>
        /// <returns></returns>
        public static Couleur CouleurSerpent(int degrade)
        {
            if (degrade < 9)
            {
                return(Couleur.Get(31 / degrade, 127 / degrade, 31 / degrade));
            }

            return(Couleur.Get(31 / 9, 127 / 9, 31 / 9));
        }
Beispiel #9
0
        /// <summary>
        /// Musique
        /// </summary>
        public static void Musique()
        {
            Util.Setup();

            Task.Run(() =>
            {
                int largeur = 0;
                int debut   = -20;
                int task    = Util.StartTask();
                CaractereList caracteres = new CaractereList(Util.Context.Largeur);
                Util.GetMusiqueAsync();
                decimal cycle = 0;
                Random r      = new Random();
                int bg        = r.Next(1, Util.Context.Pixels.NbrBackground);
                bool reverse  = r.Next(0, 2) == 1;

                DateTime refresh = DateTime.Now;

                if (bg == 3 && reverse)
                {
                    reverse = false;
                }

                while (Util.TaskWork(task))
                {
                    //Reset après avoir défiler tout le texte
                    if (refresh >= DateTime.Now.AddSeconds(10) || largeur < debut++)
                    {
                        debut = -20;
                        Util.GetMusiqueAsync();
                        refresh = DateTime.Now;
                    }

                    largeur = caracteres.SetText(Util.Musique);

                    Couleur couleur = Couleur.Get(64, 0, 0);
                    Util.Context.Pixels.Print(caracteres.GetCaracteres(debut), 0, 1, Couleur.Get(32, 32, 127));
                    Util.Context.Pixels.Print(DateTime.Now.ToString("MM-dd"), 1, 7, couleur);
                    Util.Context.Pixels.Print(Heure, 2, 13, couleur);
                    cycle = Util.Context.Pixels.BackGround(bg, cycle, reverse);

                    Util.SetLeds();
                    Util.Context.Pixels.Reset();

                    using ManualResetEventSlim waitHandle = new ManualResetEventSlim(false);
                    waitHandle.Wait(TimeSpan.FromMilliseconds(50));
                }
            });
        }
Beispiel #10
0
        /// <summary>
        /// HSVtoRGB
        /// </summary>
        /// <param name="h"></param>
        /// <param name="s"></param>
        /// <param name="v"></param>
        /// <returns></returns>
        private Couleur HSVtoRGB(double h, int s, int v, int alpha)
        {
            int    i = (int)Math.Floor(h * 6);
            double f = h * 6 - i;
            int    p = v * (1 - s);
            double q = v * (1 - f * s);
            double t = v * (1 - (1 - f) * s);

            return((i % 6) switch
            {
                0 => Couleur.Get(v * alpha, (int)Math.Round(t * alpha), p * alpha),
                1 => Couleur.Get((int)Math.Round(q * alpha), v * alpha, p * alpha),
                2 => Couleur.Get(p * alpha, v * alpha, (int)Math.Round(t * alpha)),
                3 => Couleur.Get(p * alpha, (int)Math.Round(q * alpha), v * alpha),
                4 => Couleur.Get((int)Math.Round(t * alpha), p * alpha, v * alpha),
                _ => Couleur.Get(v * alpha, p * alpha, (int)Math.Round(q * alpha))
            });
Beispiel #11
0
        /// <summary>
        /// Coeur
        /// </summary>
        public static void Coeur(bool battement)
        {
            if (!battement)
            {
                Util.Context.Pixels.GetCoordonnee(13, 1).SetColor(Couleur.Get(15, 0, 0));
                Util.Context.Pixels.GetCoordonnee(17, 1).SetColor(Couleur.Get(15, 0, 0));

                Util.Context.Pixels.GetCoordonnee(12, 2).SetColor(Couleur.Get(15, 0, 0));
                Util.Context.Pixels.GetCoordonnee(18, 2).SetColor(Couleur.Get(15, 0, 0));

                Util.Context.Pixels.GetCoordonnee(12, 3).SetColor(Couleur.Get(15, 0, 0));
                Util.Context.Pixels.GetCoordonnee(18, 3).SetColor(Couleur.Get(15, 0, 0));

                Util.Context.Pixels.GetCoordonnee(13, 4).SetColor(Couleur.Get(15, 0, 0));
                Util.Context.Pixels.GetCoordonnee(17, 4).SetColor(Couleur.Get(15, 0, 0));

                Util.Context.Pixels.GetCoordonnee(14, 5).SetColor(Couleur.Get(15, 0, 0));
                Util.Context.Pixels.GetCoordonnee(16, 5).SetColor(Couleur.Get(15, 0, 0));

                Util.Context.Pixels.GetCoordonnee(15, 6).SetColor(Couleur.Get(15, 0, 0));
            }

            Util.Context.Pixels.GetCoordonnee(14, 1).SetColor(Couleur.Get(25, 0, 0));
            Util.Context.Pixels.GetCoordonnee(16, 1).SetColor(Couleur.Get(25, 0, 0));

            Util.Context.Pixels.GetCoordonnee(13, 2).SetColor(Couleur.Get(25, 0, 0));
            Util.Context.Pixels.GetCoordonnee(14, 2).SetColor(Couleur.Get(35, 0, 0));
            Util.Context.Pixels.GetCoordonnee(15, 2).SetColor(Couleur.Get(25, 0, 0));
            Util.Context.Pixels.GetCoordonnee(16, 2).SetColor(Couleur.Get(35, 0, 0));
            Util.Context.Pixels.GetCoordonnee(17, 2).SetColor(Couleur.Get(25, 0, 0));

            Util.Context.Pixels.GetCoordonnee(13, 3).SetColor(Couleur.Get(25, 0, 0));
            Util.Context.Pixels.GetCoordonnee(14, 3).SetColor(Couleur.Get(35, 0, 0));
            Util.Context.Pixels.GetCoordonnee(15, 3).SetColor(Couleur.Get(25, 0, 0));
            Util.Context.Pixels.GetCoordonnee(16, 3).SetColor(Couleur.Get(35, 0, 0));
            Util.Context.Pixels.GetCoordonnee(17, 3).SetColor(Couleur.Get(25, 0, 0));

            Util.Context.Pixels.GetCoordonnee(14, 4).SetColor(Couleur.Get(25, 0, 0));
            Util.Context.Pixels.GetCoordonnee(15, 4).SetColor(Couleur.Get(35, 0, 0));
            Util.Context.Pixels.GetCoordonnee(16, 4).SetColor(Couleur.Get(25, 0, 0));

            Util.Context.Pixels.GetCoordonnee(15, 5).SetColor(Couleur.Get(25, 0, 0));
        }
Beispiel #12
0
        /// <summary>
        /// Labyrinthe
        /// </summary>
        public static void Labyrinthe()
        {
            // Initialize the led strip
            Util.Setup();
            int            task        = Util.StartTask();
            LabyrintheList labyrinthes = SetLabyrinthe();
            decimal        cycle       = 0;

            using ManualResetEventSlim waitHandle = new ManualResetEventSlim(false);

            while (Util.TaskWork(task))
            {
                if (labyrinthes.Complet)
                {
                    labyrinthes = SetLabyrinthe();
                    waitHandle.Wait(TimeSpan.FromMilliseconds(500));
                }

                foreach (Labyrinthe labyrinthe in labyrinthes)
                {
                    if (labyrinthe.Mur && !labyrinthe.Couleur.Egal(new Couleur()))
                    {
                        labyrinthe.Couleur = Couleur.Get(127 - labyrinthe.X * 6, (labyrinthes.X + labyrinthes.Y) * 3, labyrinthe.Y * 6);
                    }

                    Util.Context.Pixels.GetCoordonnee(labyrinthe.X, labyrinthe.Y).SetColor(labyrinthe.Couleur);
                }

                cycle = Util.Context.Pixels.BackGround(4, cycle, true);
                Util.Context.Pixels.GetCoordonnee(labyrinthes.X, labyrinthes.Y).SetColor(Couleur.Get(127, 127, 127));

                if (cycle % 2 == 0)
                {
                    labyrinthes.Mouvement();
                }

                Util.SetLeds();
                Util.Context.Pixels.Reset();

                //waitHandle.Wait(TimeSpan.FromMilliseconds(25));
            }
        }
Beispiel #13
0
        /// <summary>
        /// VuMeter
        /// </summary>
        /// <param name="criteria"></param>
        public static void VuMeter()
        {
            // Initialize the led strip
            Util.Setup();
            int task = Util.StartTask();

            Couleur couleur      = Couleur.Get(0, 0, 8);
            Random  ra           = new Random();
            bool    whiteBgColor = true;

            if (ra.Next(1, 3) == 1)
            {
                couleur      = Couleur.Get(63, 63, 127);
                whiteBgColor = false;
            }

            double        max        = 0;
            CaractereList caracteres = new CaractereList(Util.Context.Largeur);

            byte[] audioBuffer = new byte[256];
            using AudioCapture audioCapture = new AudioCapture(AudioCapture.AvailableDevices[1], 22000, ALFormat.Mono8, audioBuffer.Length);
            audioCapture.Start();

            while (Util.TaskWork(task))
            {
                max -= 0.5;

                double[] fft = Capture(audioCapture, audioBuffer);

                if (fft.Max(a => Math.Abs(a)) > max)
                {
                    max = fft.Max(a => Math.Abs(a));
                }

                if (whiteBgColor)
                {
                    foreach (Pixel pixel in Util.Context.Pixels)
                    {
                        pixel.Set(127, 127, 127);
                    }
                }

                caracteres.SetText("VU");
                Util.Context.Pixels.Print(caracteres.GetCaracteres(), 5, 12, couleur);

                Couleur couleurMax = couleur;

                //lumiere max
                if (max > 75)
                {
                    couleurMax = Couleur.Get(127, 0, 0);
                }

                Util.Context.Pixels.GetCoordonnee(17, 13).SetColor(couleurMax);
                Util.Context.Pixels.GetCoordonnee(18, 13).SetColor(couleurMax);
                Util.Context.Pixels.GetCoordonnee(17, 14).SetColor(couleurMax);
                Util.Context.Pixels.GetCoordonnee(18, 14).SetColor(couleurMax);

                //dessin
                Util.Context.Pixels.GetCoordonnee(1, 10).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(2, 10).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(3, 10).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(4, 9).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(5, 9).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(6, 9).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(7, 9).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(8, 8).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(9, 8).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(10, 8).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(11, 8).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(12, 9).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(13, 9).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(14, 9).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(15, 9).SetColor(Couleur.Get(127, 0, 0));

                Util.Context.Pixels.GetCoordonnee(16, 10).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(17, 10).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(18, 10).SetColor(Couleur.Get(127, 0, 0));

                //Moins
                Util.Context.Pixels.GetCoordonnee(1, 4).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(2, 4).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(3, 4).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(2, 8).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(2, 9).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(6, 7).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(6, 8).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(9, 6).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(9, 7).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(11, 6).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(11, 7).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(13, 7).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(13, 8).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(15, 7).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(15, 8).SetColor(Couleur.Get(127, 0, 0));

                Util.Context.Pixels.GetCoordonnee(17, 8).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(17, 9).SetColor(Couleur.Get(127, 0, 0));

                //Plus
                Util.Context.Pixels.GetCoordonnee(17, 3).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(16, 4).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(17, 4).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(18, 4).SetColor(Couleur.Get(127, 0, 0));
                Util.Context.Pixels.GetCoordonnee(17, 5).SetColor(Couleur.Get(127, 0, 0));

                //base
                Util.Context.Pixels.GetCoordonnee(8, 18).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(9, 18).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(10, 18).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(11, 18).SetColor(couleur);

                Util.Context.Pixels.GetCoordonnee(7, 19).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(8, 19).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(9, 19).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(10, 19).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(11, 19).SetColor(couleur);
                Util.Context.Pixels.GetCoordonnee(12, 19).SetColor(couleur);

                //aiguille
                for (int r = 2; r < 18; r++)
                {
                    Util.Context.Pixels.GetCoordonnee(GetCercleCoord(max + 315, r)).SetColor(couleur);
                }

                Util.SetLeds();
                Util.Context.Pixels.Reset();
            }
        }
Beispiel #14
0
        /// <summary>
        /// Next
        /// </summary>
        public bool Next(int rythm)
        {
            bool battement = false;

            if (rythm < 9)
            {
                rythm = 9;
            }

            if (this.FirstOrDefault() is EGC premier)
            {
                int saut = 0;

                if (premier.Compteur % rythm == 2)
                {
                    saut = 1;
                }

                if (premier.Compteur % rythm == 3)
                {
                    saut = -1;
                }

                if (premier.Compteur % rythm == 6)
                {
                    battement = true;
                    saut      = 8;
                }

                if (premier.Compteur % rythm == 7)
                {
                    battement = true;
                    saut      = -11;
                }

                if (premier.Compteur % rythm == 8)
                {
                    saut = 2;
                }

                for (int i = 0; i <= Math.Abs(saut); i++)
                {
                    EGC tmpEgc = new EGC(premier);

                    premier.NextX(saut, i < Math.Abs(saut));

                    foreach (EGC egc in this.Where(e => !e.Premier))
                    {
                        EGC dernierEgc = new EGC(egc);

                        if (egc.X == premier.X - 1)
                        {
                            egc.Couleur = Couleur.Get(32, 127, 32);
                        }
                        else
                        {
                            int fade     = 0;
                            int distance = premier.Compteur - egc.Compteur;

                            if (distance <= 5)
                            {
                                fade = 3;
                            }

                            if (distance > 5 && distance <= 10)
                            {
                                fade = 2;
                            }

                            if (distance > 10 && distance <= 15)
                            {
                                fade = 1;
                            }

                            egc.Couleur = Couleur.Get(fade, fade * 3, fade);
                        }

                        egc.X        = tmpEgc.X;
                        egc.Y        = tmpEgc.Y;
                        egc.Compteur = tmpEgc.Compteur;

                        tmpEgc = new EGC(dernierEgc);
                    }
                }
            }

            return(battement);
        }
Beispiel #15
0
        /// <summary>
        /// BackGround
        /// </summary>
        public decimal BackGround(int bg = 2, decimal cycle = 0, bool reverse = false)
        {
            switch (bg)
            {
            case 1:
                int max = 20;

                if (reverse)
                {
                    max = 127;
                }

                Random r = new Random();

                foreach (Pixel pixel in this)
                {
                    if (pixel.Couleur.IsNoir != reverse)
                    {
                        pixel.SetColor(new Couleur {
                            B = (byte)r.Next(5, max)
                        });
                    }
                }
                break;

            case 2:
                List <int> b = new List <int>
                {
                    2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
                    11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
                    2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
                    11, 10, 9, 8, 7, 6, 5, 4, 3, 2
                };

                int sec   = DateTime.Now.Millisecond / 50;
                int multi = 1;

                if (reverse)
                {
                    multi = 3;
                }

                foreach (Pixel pixel in this)
                {
                    if (pixel.Couleur.IsNoir != reverse)
                    {
                        //pixel.SetColor(new Couleur { B = (byte)(b[sec + pixel.Coord.Y] * multi) });
                        pixel.SetColor(Couleur.Get(0, 0, b[sec + pixel.Coord.Y] * multi));
                    }
                }

                break;

            case 3:
                List <int> g = new List <int>
                {
                    3, 0, 0, 0, 0, 1, 0, 0, 0, 6,
                    0, 0, 0, 3, 0, 0, 0, 0, 0, 1,
                    0, 0, 0, 1, 0, 0, 0, 0, 0, 6,
                    0, 3, 0, 0, 0, 0, 0, 6, 0, 0
                };

                int milli = DateTime.Now.Millisecond % 20;

                foreach (Pixel pixel in this)
                {
                    if (pixel.Couleur.IsNoir != reverse)
                    {
                        pixel.SetColor(new Couleur {
                            G = (byte)g[milli + pixel.Coord.Y]
                        });
                    }
                }
                break;

            case 4:
                int alpha = 32;

                if (reverse)
                {
                    alpha = 127;
                }

                cycle = Plasma(alpha, cycle, reverse);
                break;

            default:
                foreach (Pixel pixel in this)
                {
                    if (pixel.Couleur.IsNoir != reverse)
                    {
                        pixel.SetColor(new Couleur {
                            B = (byte)(5 + pixel.Coord.Y * 2)
                        });
                    }
                }
                break;
            }

            return(cycle);
        }
Beispiel #16
0
        /// <summary>
        /// Tetris
        /// </summary>
        public static void Tetris()
        {
            // Initialize the led strip
            Util.Setup();
            int    task     = Util.StartTask();
            int    cycle    = 0;
            int    topScore = 0;
            Tetris tetris   = new Tetris();

            while (Util.TaskWork(task))
            {
                //Pointage
                Util.Context.Pixels.Print(tetris.ScoreUn, 15, 8, Couleur.Get(127, 127, 127));
                Util.Context.Pixels.Print(tetris.ScoreDeux, 15, 14, Couleur.Get(127, 127, 127));

                foreach (TetrisPiece centaine in tetris.Centaines)
                {
                    Util.Context.Pixels.GetCoordonnee(centaine.X, centaine.Y).Set(127, 127, 127);
                }

                foreach (TetrisPiece millier in tetris.Milliers)
                {
                    Util.Context.Pixels.GetCoordonnee(millier.X, millier.Y).Set(127, 127, 0);
                }

                //Bordure
                for (int i = 1; i < 12; i++)
                {
                    Util.Context.Pixels.GetCoordonnee(i, 19).Set(64, 64, 127);
                }

                for (int i = 0; i < Util.Context.Pixels.Hauteur; i++)
                {
                    Util.Context.Pixels.GetCoordonnee(1, i).Set(64, 64, 127);
                    Util.Context.Pixels.GetCoordonnee(12, i).Set(64, 64, 127);
                }

                for (int i = 13; i < 20; i++)
                {
                    Util.Context.Pixels.GetCoordonnee(i, 6).Set(64, 64, 127);
                }

                //Next
                foreach (TetrisPiece next in tetris.Nexts)
                {
                    Util.Context.Pixels.GetCoordonnee(next.X + 16, next.Y + 1).SetColor(next.Couleur);
                }

                //Piece tombé
                foreach (TetrisPiece pieceTombe in tetris.PieceTombes)
                {
                    if (Util.Context.Pixels.GetCoordonnee(pieceTombe.X, pieceTombe.Y) is Pixel pixel)
                    {
                        pixel.SetColor(pieceTombe.Couleur);
                    }
                }

                //Mouvement
                tetris.Mouvement(cycle++);

                //Piece
                foreach (TetrisPiece piece in tetris.Pieces)
                {
                    if (Util.Context.Pixels.GetCoordonnee(piece.X + tetris.X, piece.Y + tetris.Y) is Pixel pixel)
                    {
                        pixel.SetColor(piece.Couleur);
                    }
                }

                //Rendu en bas on travail
                bool nouvellePiece = tetris.Bottom();

                //Enlever les lignes pleine, avec une animation
                if (tetris.EffacerLigne() is TetrisPieceList tetrisPieces)
                {
                    TetrisAnimation(Util.Context.Pixels, tetrisPieces);
                }

                //Background
                Util.Context.Pixels.BackGround(1);
                Util.SetLeds();

                if (nouvellePiece)
                {
                    if (tetris.Mort)
                    {
                        if (tetris.Score > topScore)
                        {
                            topScore = tetris.Score;
                        }

                        foreach (Pixel pixel in Util.Context.Pixels)
                        {
                            pixel.Fade(4);
                        }

                        Util.Context.Pixels.Print("TOP", 4, 2, Couleur.Get(127, 127, 127));
                        Util.Context.Pixels.Print(topScore.ToString(), 3, 12, Couleur.Get(127, 127, 127));
                        Util.SetLeds();

                        using ManualResetEventSlim waitHandle = new ManualResetEventSlim(false);
                        waitHandle.Wait(TimeSpan.FromMilliseconds(10000));

                        tetris = new Tetris();
                    }
                    else
                    {
                        tetris.NouvellePiece();
                    }
                }

                Util.Context.Pixels.Reset();
            }
        }