/// <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)); } } } }
/// <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)); } } }
/// <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)); } }
/// <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)); } } }
/// <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); }
/// <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); }
/// <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(); }
/// <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)); }
/// <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)); } }); }
/// <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)) });
/// <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)); }
/// <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)); } }
/// <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(); } }
/// <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); }
/// <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); }
/// <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(); } }