Este código me pareció interesante de compartir, una modesta recreación del efecto matrix, escrita en C#.
using System;
namespace m7tr1x
{
class Program
{
static void Main(string[] args)
{
Console.Title = "tH3 M7tr1x 3ff3<t";
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WindowLeft = Console.WindowTop = 0;
Console.WindowHeight = Console.BufferHeight = Console.LargestWindowHeight;
Console.WindowWidth = Console.BufferWidth = Console.LargestWindowWidth;
#if readkey
Console.WriteLine("H1T 7NY K3Y T0 C0NT1NU3 =/");
Console.ReadKey();
#endif
Console.CursorVisible = false;
int width, height;
int[] y;
int[] l;
Initialize(out width, out height, out y, out l);
int ms;
while (true)
{
DateTime t1 = DateTime.Now;
MatrixStep(width, height, y, l);
ms = 10 - (int)((TimeSpan)(DateTime.Now - t1)).TotalMilliseconds;
if (ms> 0)
System.Threading.Thread.Sleep(ms);
if (Console.KeyAvailable)
if (Console.ReadKey().Key == ConsoleKey.F5)
Initialize(out width, out height, out y, out l);
}
}
static bool thistime = false;
private static void MatrixStep(int width, int height, int[] y, int[] l)
{
int x;
thistime = !thistime;
for (x = 0; x <width; ++x)
{
if (x % 11 == 10)
{
if (!thistime)
continue;
Console.ForegroundColor = ConsoleColor.White;
}
else
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.SetCursorPosition(x, inBoxY(y[x] - 2 - (l[x] / 40 * 2), height));
Console.Write(R);
Console.ForegroundColor = ConsoleColor.Green;
}
Console.SetCursorPosition(x, y[x]);
Console.Write(R);
y[x] = inBoxY(y[x] + 1, height);
Console.SetCursorPosition(x, inBoxY(y[x] - l[x], height));
Console.Write(' ');
}
}
private static void Initialize(out int width, out int height, out int[] y, out int[] l)
{
int h1;
int h2 = (h1 = (height = Console.WindowHeight) / 2) / 2;
width = Console.WindowWidth - 1;
y = new int[width];
l = new int[width];
int x;
Console.Clear();
for (x = 0; x <width; ++x)
{
y[x] = r.Next(height);
l[x] = r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1));
}
}
static Random r = new Random();
static char R
{
get
{
int t = r.Next(10);
if (t <= 2)
return (char)('0' + r.Next(10));
else if (t <= 4)
return (char)('a' + r.Next(27));
else if (t <= 6)
return (char)('A' + r.Next(27));
else
return (char)(r.Next(32, 255));
}
}
public static int inBoxY(int n, int height)
{
n = n % height;
if (n <0)
return n + height;
else
return n;
}
}
}
Vía: pastebin
13 Respuestas para "Efecto Matrix en C#"
Me gustaria poder tener ese codigo en c/c++ para poder compilarlo, ya que no se c#
¡WOW! ¡Excelente!
muy interesante seria weno k pongas mas aportes
idea mia o tu codigo esta incompleto?? = wen aporte
mira deberiamos hacerlo en c char con los caracteres japoneses eso en verdad si seria muy bueno
esta buenisimo me podrias dar cursos para aprender a programar en c shrp 2008 porfa desde el inicio
Excelente, funciona muy bien.
Hey muy bueno, Por cierto si esta completo y lo mejor de todo es que “Si funciona”, thanks nigga, I Guess you’re good at this, dejo mi correo para comentarios, bye…
hola amigos me gusta mucho esta matrix pero me podriana ayudar amigos quiero cambiarles las letras q se muestran en esta matrix lo siento soy nuevo y me gustaria q me ayudan si un favor gracias amigos
Man te falta las librerias pero probare poniendo las declaraciones thanks…..
nada mas por eso te pondre en favoritos sin saber el contenido
gracias
arriba C# =D
Me encanto locoooo!!
Esta de lujooo jaja pero am soy muy nuevo en esto de la programacion en c y bueno lo k hize fue guardar el codigo en un archivo .c y ejecutarlo con gcc en terminal de fedora, y me lanzo errores como estos:
matrix1.c:2:1: error: nombre de tipo ‘using’ desconocido
matrix1.c:4:1: error: nombre de tipo ‘namespace’ desconocido
matrix1.c:5:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
matrix1.c:15:12: error: #if sin expresión
seria muy feliz si me dicen k hize mal
muchas gracias
Comentarios: