public static void Main()
int pointsPerGame = 5000;
int daysRemaining = (new DateTime(2020,8,2) - DateTime.Now).Days;
Console.WriteLine("Average points per game: " + pointsPerGame + ".");
Console.WriteLine("Average minutes per game: " + minutesPerGame + ".");
Console.WriteLine("Days remaining: " + daysRemaining + ".\n");
WriteCalculate(pointsPerGame, minutesPerGame, daysRemaining, currentLevel, new int[] {5, 10, 15, 20, 25, 30, 35, 40, 45, 50});
private static void WriteCalculate(int pointsPerGame, int minutesPerGame, int daysRemaining, int currentLevel, int[] destinationLevels) {
Console.WriteLine("From level " + currentLevel + ":\n");
decimal hours, hoursPerDay, matchesPerDay;
foreach (int level in destinationLevels) {
if (currentLevel < level) {
total = Calculate(level, currentLevel);
matches = (int)Math.Ceiling((decimal)total/pointsPerGame);
hours = matches * minutesPerGame/60;
matchesPerDay = Math.Round(Decimal.Divide((decimal)matches, (decimal)daysRemaining),2);
hoursPerDay = Math.Round(matchesPerDay * minutesPerGame/60,2);
Console.WriteLine(level.ToString() + " = " + total + " xp. Games needed: " + matches + ". Time needed: " + hours + "h. Matches per day: " + matchesPerDay + ". Time per day: " + hoursPerDay + "h.");
private static int Calculate(int level, int currentLevel = 0, int total = 0) {
if (level == currentLevel) return total;
return Calculate(--level, currentLevel, total + 2000 + level * 1000);