Jump to content

[Vb.net] Matrix Effect [Console]


Dir50

Recommended Posts

Create a console application and add this into the Module1

 

Module Module1

    Sub Main(ByVal args As String())
        Console.Title = "MatriX Console"
        Console.ForegroundColor = ConsoleColor.DarkGreen
        Console.WindowLeft = InlineAssignHelper(Console.WindowTop, 0)
        Console.WindowHeight = InlineAssignHelper(Console.BufferHeight, Console.LargestWindowHeight)
        Console.WindowWidth = InlineAssignHelper(Console.BufferWidth, Console.LargestWindowWidth)
        Console.WriteLine("Hello maxcheaters nabs , press any key to go on")
        Console.ReadKey()

        Dim width As Integer, height As Integer
        Dim y As Integer()
        Dim l As Integer()
        Initialize(width, height, y, l)
        Dim ms As Integer
        While True
            Dim t1 As DateTime = DateTime.Now
            MatrixStep(width, height, y, l)
            ms = 10 - CInt(DirectCast((DateTime.Now - t1), TimeSpan).TotalMilliseconds)
            If ms > 0 Then
                System.Threading.Thread.Sleep(ms)
            End If
            If Console.KeyAvailable Then
                If Console.ReadKey().Key = ConsoleKey.F5 Then
                    Initialize(width, height, y, l)
                End If
            End If
        End While
    End Sub

    Dim thistime As Boolean = False

    Sub MatrixStep(ByVal width As Integer, ByVal height As Integer, ByVal y As Integer(), ByVal l As Integer())
        Dim x As Integer
        thistime = Not thistime
        For x = 0 To width - 1
            If x Mod 11 = 10 Then
                If Not thistime Then
                    Continue For
                End If
                Console.ForegroundColor = ConsoleColor.Red
            Else
                Console.ForegroundColor = ConsoleColor.DarkGreen
                Console.SetCursorPosition(x, inBoxY(CInt(y(x) - 2 - (l(x) / 40 * 2)), height))
                Console.Write(R)
                Console.ForegroundColor = ConsoleColor.Green
            End If
            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(" "c)
        Next
    End Sub

    Private Sub Initialize(ByRef width As Integer, ByRef height As Integer, ByRef y As Integer(), ByRef l As Integer())
        Dim h1 As Integer
        Dim h2 As Integer = CInt((InlineAssignHelper(h1, CInt((InlineAssignHelper(height, Console.WindowHeight)) / 2))) / 2)
        width = Console.WindowWidth - 1
        y = New Integer(width - 1) {}
        l = New Integer(width - 1) {}
        Dim x As Integer
        Console.Clear()
        For x = 0 To width - 1
            y(x) = m_r.[Next](height)
            l(x) = m_r.[Next](h2 * (If((x Mod 11 <> 10), 2, 1)), h1 * (If((x Mod 11 <> 10), 2, 1)))
        Next
    End Sub
    Dim m_r As New Random()
    Private ReadOnly Property R() As Char
        Get
            Dim t As Integer = m_r.[Next](10)
            If t <= 2 Then
                Return CChar(("0"c & m_r.[Next](10)))
            ElseIf t <= 4 Then
                Return CChar(("a"c & m_r.[Next](27)))
            ElseIf t <= 6 Then
                Return CChar(("A"c & m_r.[Next](27)))
            Else
                Return CChar(CChar(CStr((m_r.[Next](32, 255)))))
            End If
        End Get
    End Property

    Public Function inBoxY(ByVal n As Integer, ByVal height As Integer) As Integer
        n = n Mod height
        If n < 0 Then
            Return n + height
        Else
            Return n
        End If
    End Function

    Private Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
        target = value
        Return value
    End Function
End Module

 

Preview : http://i.imgur.com/rPNrb.png

Link to comment
Share on other sites

vasika to problima einai edw Initialize(width, height, y, l)

Warning 1 Variable 'y' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. C:\Users\loghs\AppData\Local\Temporary Projects\ConsoleApplication1\Module1.vb 15 35 ConsoleApplication1

 

 

Warning 2 Variable 'l' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. C:\Users\loghs\AppData\Local\Temporary Projects\ConsoleApplication1\Module1.vb 15 38 ConsoleApplication1

 

Link to comment
Share on other sites

vasika to problima einai edw Initialize(width, height, y, l)

Warning 1 Variable 'y' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. C:\Users\loghs\AppData\Local\Temporary Projects\ConsoleApplication1\Module1.vb 15 35 ConsoleApplication1

 

 

Warning 2 Variable 'l' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. C:\Users\loghs\AppData\Local\Temporary Projects\ConsoleApplication1\Module1.vb 15 38 ConsoleApplication1

 

oute ena copy paste den niw8eis n akaneis , kane me add sto msn , na sto codarw egw mesw teamviewer
Link to comment
Share on other sites

  • 1 month later...

here is the C# version

 

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
static class Module1
{

public static void Main(string[] args)
{
	Console.Title = "MatriX Console";
	Console.ForegroundColor = ConsoleColor.DarkGreen;
	Console.WindowLeft = InlineAssignHelper(ref Console.WindowTop, 0);
	Console.WindowHeight = InlineAssignHelper(ref Console.BufferHeight, Console.LargestWindowHeight);
	Console.WindowWidth = InlineAssignHelper(ref Console.BufferWidth, Console.LargestWindowWidth);
	Console.WriteLine("Hello maxcheaters nabs , press any key to go on");
	Console.ReadKey();

	int width = 0;
	int height = 0;
	int[] y = null;
	int[] l = null;
	Initialize(ref width, ref height, ref y, ref l);
	int ms = 0;
	while (true) {
		DateTime t1 = DateTime.Now;
		MatrixStep(width, height, y, l);
		ms = 10 - Convert.ToInt32(((TimeSpan)(DateTime.Now - t1)).TotalMilliseconds);
		if (ms > 0) {
			System.Threading.Thread.Sleep(ms);
		}
		if (Console.KeyAvailable) {
			if (Console.ReadKey().Key == ConsoleKey.F5) {
				Initialize(ref width, ref height, ref y, ref l);
			}
		}
	}
}


static bool thistime = false;
public static void MatrixStep(int width, int height, int[] y, int[] l)
{
	int x = 0;
	thistime = !thistime;
	for (x = 0; x <= width - 1; x++) {
		if (x % 11 == 10) {
			if (!thistime) {
				continue;
			}
			Console.ForegroundColor = ConsoleColor.Red;
		} else {
			Console.ForegroundColor = ConsoleColor.DarkGreen;
			Console.SetCursorPosition(x, inBoxY(Convert.ToInt32(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(ref int width, ref int height, ref int[] y, ref int[] l)
{
	int h1 = 0;
	int h2 = Convert.ToInt32((InlineAssignHelper(ref h1, Convert.ToInt32((InlineAssignHelper(ref height, Console.WindowHeight)) / 2))) / 2);
	width = Console.WindowWidth - 1;
	y = new int[width];
	l = new int[width];
	int x = 0;
	Console.Clear();
	for (x = 0; x <= width - 1; x++) {
		y[x] = m_r.Next(height);
		l[x] = m_r.Next(h2 * ((x % 11 != 10) ? 2 : 1), h1 * ((x % 11 != 10) ? 2 : 1));
	}
}
static Random m_r = new Random();
private static char R {
	get {
		int t = m_r.Next(10);
		if (t <= 2) {
			return Convert.ToChar(('0' + m_r.Next(10)));
		} else if (t <= 4) {
			return Convert.ToChar(('a' + m_r.Next(27)));
		} else if (t <= 6) {
			return Convert.ToChar(('A' + m_r.Next(27)));
		} else {
			return Convert.ToChar(Convert.ToChar(Convert.ToString((m_r.Next(32, 255)))));
		}
	}
}

public static int inBoxY(int n, int height)
{
	n = n % height;
	if (n < 0) {
		return n + height;
	} else {
		return n;
	}
}

private static T InlineAssignHelper<T>(ref T target, T value)
{
	target = value;
	return value;
}
}

Link to comment
Share on other sites

  • 3 months later...
  • 2 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...