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.
Note: Your post will require moderator approval before it will be visible.

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...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock