using System; /* 21_Calendar in C# for basic-computer-games Converted by luminoso-256 */ namespace _21_calendar { class Program { //basic has a TAB function. We do not by default, so we make our own! static string Tab(int numspaces) { string space = ""; //loop as many times as there are spaces specified, and add a space each time while (numspaces > 0) { //add the space space += " "; //decrement the loop variable so we don't keep going forever! numspaces--; } return space; } static void Main(string[] args) { // print the "title" of our program // the usage of Write*Line* means we do not have to specify a newline (\n) Console.WriteLine(Tab(32) + "CALENDAR"); Console.WriteLine(Tab(15) + "CREATE COMPUTING MORRISTOWN, NEW JERSEY"); //give us some space. Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine(""); //establish some variables needed to print out a calculator //the length of each month in days. On a leap year, the start of this would be // 0, 31, 29 to account for Feb. the 0 at the start is for days elapsed to work right in Jan. int[] monthLengths = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // m in original source //the starting day of the month. in 1979 this was monday // 0 = sun, -1 = mon, -2 = tue, -3 = wed, etc. int day = -1; // called d in original source //how much time in the year has gone by? int elapsed = 0; // called s in original source //loop through printing all the months. for (int month = 1; month <= 12; month++) //month is called n in original source { //pad some space Console.WriteLine(""); Console.WriteLine(""); //increment days elapsed elapsed += monthLengths[month - 1]; //build our header for this month of the calendar string header = "** " + elapsed; //add padding as needed while (header.Length < 7) { header += " "; } for (int i = 1; i <= 18; i++) { header += "*"; } //determine what month it is, add text accordingly switch (month) { case 1: header += " JANUARY "; break; case 2: header += " FEBRUARY"; break; case 3: header += " MARCH "; break; case 4: header += " APRIL "; break; case 5: header += " MAY "; break; case 6: header += " JUNE "; break; case 7: header += " JULY "; break; case 8: header += " AUGUST "; break; case 9: header += "SEPTEMBER"; break; case 10: header += " OCTOBER "; break; case 11: header += " NOVEMBER"; break; case 12: header += " DECEMBER"; break; } //more padding for (int i = 1; i <= 18; i++) { header += "*"; } header += " "; // how many days left till the year's over? header += (365 - elapsed) + " **"; // on leap years 366 Console.WriteLine(header); //dates Console.WriteLine(" S M T W T F S"); Console.WriteLine(" "); string weekOutput = ""; for (int i = 1; i <= 59; i++) { weekOutput += "*"; } //init some vars ahead of time int g = 0; int d2 = 0; //go through the weeks and days for (int week = 1; week <= 6; week++) { Console.WriteLine(weekOutput); weekOutput = " "; for (g = 1; g <= 7; g++) { //add one to the day day++; d2 = day - elapsed; //check if we're done with this month if (d2 > monthLengths[month]) { week = 6; break; } //should we print this day? if (d2 > 0) { weekOutput += d2; } //padding while (weekOutput.Length < 4 + 8 * g) { weekOutput += " "; } } if (d2 == monthLengths[month]) { day += g; break; } } day -= g; Console.WriteLine(weekOutput); } } } }