Console-filmpjes maken
Volgende tutorial toont hoe je een eenvoudig filmpje kan maken dat je, mits wat fantasie, vlot kan uitbreiden over enkele weken met interactieve aspecten.
Basisloop voor het filmpje
Volgende voorbeeld toont wat je bijvoorbeeld kan doen. Kopieer dit alles naar een eigen project tussen de accolades van de main:
int framenummer = 0;
int sleeptime = 1000; // in milliseconden
while (true)
{
framenummer = framenummer + 1;
if (framenummer == 1)
{
Console.WriteLine("Het begin");
}
else if (framenummer == 2)
{
Console.WriteLine("Tweede frame");
}
else if (framenummer == 3)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Derde frame Andere kleur");
}
else if (framenummer == 4)
{
sleeptime = 4000; //vergeet niet terug te zetten in latere frames indien je dit maar eenmalig wil
Console.WriteLine("Frame dat langer blijft staan");
}
else if (framenummer == 5)
{
sleeptime = 500;
Console.WriteLine("Moving ball: *");
}
else if (framenummer == 6)
{
Console.WriteLine("Moving ball: *");
}
else if (framenummer == 7)
{
Console.WriteLine("Moving ball: *");
}
else if (framenummer == 8)
{
Console.WriteLine("Moving ball: *");
}
//Voeg hier frames tussen
else
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("\n\n\n\nThe End");
}
System.Threading.Thread.Sleep(sleeptime); //Pauzeer programma
Console.Clear();
Deze code zal een teller (framenummer) per seconde (instelbaar via sleeptime) met 1 verhogen. Vervolgens zal de code uitgevoerd worden binnen de else-if clausule die overeenkomt met de huidige framenummer. De eerste keer staat de teller op 1 en wordt dus de code tussen volgende if uitgevoerd.
if (framenummer == 1)
{
Console.WriteLine("Het begin");
}
Vervolgens wordt deze met 1 verhoogd en wordt deze code uitgevoerd:
else if (framenummer == 2)
{
Console.WriteLine("Tweede frame");
}
En zo voort. Je kan dus zelf frames toevoegen door steeds een constructie als de volgende toevoegen waar de commentaar //Code om uit te voeren in dit frame
staat:
else if (framenummer == x)
{
//Code om uit te voeren in dit frame
}
(vervang X door het framenummer dat dit moet zijn)
Inspiratie nodig
Mogelijke uitbreidingen kunnen zijn:
- Kleuren aanpassen om zo mooiere zaken te tonen (zie voorbeeldframe 3)
- Timing aanpassen wanneer volgende frame moet getoond worden (zie voorbeeldframe 4)
- Bijgevolg kan je ook animaties doen, verlaag gewoon de tijd tussen frame en zet zaken op andere plekken (zie voorbeeldframes 5 t.e.m. 8)
- Ipv tekst zou je heeldere ASCII-art afbeeldingen kunnen tonen (én animeren)
Geavanceerde uitbreidingen
Niet-sequentiële flow
Je kan ook bepalen wat het volgende frame moet zijn door de variabele framenummer aan te passen naar het framenummer dat je nodig hebt -1 . Stel dat je bijvoorbeeld in frame 8 wenst dat na dit frame frame 3 wordt uitgevoerd, dan schrijf je:
else if (framenummer == 8)
{
framenummer = 2;
Console.WriteLine("Moving ball: *");
}
Cursor verzetten
Via de methode ConsoleSetCursorPosition
kan je instellen waar de cursor moet gezet worden. Je geeft tussen de haakjes van deze methode de x,y coördinaten (integers) mee waar de cursor moet gezet worden.
Als je vervolgens tekst schrijft dan wordt die weggeschreven vanaf dat punt. De coördinaten zijn x,y coördinaten, waarbij het punt (1,1) het eerste karakter linksboven in de console is.
Volgende frame zet bijvoorbeeld een "X" 10 letters naar rechts, 20 lijnen naar beneden
else if (framenummer == 9)
{
Console.SetCursorPosition(10, 20);
Console.WriteLine("X");
}