added console application
This commit is contained in:
94
Memory.Cmd/Renderer.cs
Normal file
94
Memory.Cmd/Renderer.cs
Normal file
@ -0,0 +1,94 @@
|
||||
using Memory.Logic;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Memory.Cmd
|
||||
{
|
||||
internal class Renderer(Game game)
|
||||
{
|
||||
private readonly Game game = game;
|
||||
|
||||
private static string FormatNumber(int number)
|
||||
{
|
||||
string num = "";
|
||||
int padding = Game.DECKSIZE.ToString().Length - number.ToString().Length;
|
||||
for (int i = 0; i < padding; i++)
|
||||
{
|
||||
num += '0';
|
||||
}
|
||||
num += number;
|
||||
return num;
|
||||
}
|
||||
|
||||
private static void DrawCard(Card card, int index, int column, int row)
|
||||
{
|
||||
string num = FormatNumber(card.ID);
|
||||
string cardNr = FormatNumber(index);
|
||||
int cardWidth = Game.DECKSIZE.ToString().Length + 4;
|
||||
for (int i = 0; i < Game.GRIDSIZE; i++)
|
||||
{
|
||||
Console.CursorLeft += (cardWidth + 1) * column;
|
||||
Console.CursorTop = i + ((Game.GRIDSIZE + 1) * row);
|
||||
for (int j = 0; j < cardWidth; j++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
Console.Write('#');
|
||||
}
|
||||
else if (i == Game.GRIDSIZE - 1)
|
||||
{
|
||||
if (j > 1 && j < cardWidth - 2)
|
||||
{
|
||||
Console.Write(cardNr[j - 2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Write('#');
|
||||
}
|
||||
}
|
||||
else if (j == 0 || j == cardWidth - 1)
|
||||
{
|
||||
Console.Write('#');
|
||||
}
|
||||
else if (i == Game.GRIDSIZE / 2 && j > 1 && j < cardWidth - 2)
|
||||
{
|
||||
if (card.Selected())
|
||||
{
|
||||
Console.Write(num[j - 2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Write('*');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Write(' ');
|
||||
}
|
||||
}
|
||||
Console.Write('\n');
|
||||
}
|
||||
}
|
||||
|
||||
public void Render()
|
||||
{
|
||||
for (int i = 0; i < game.Cards.Count; i++)
|
||||
{
|
||||
Card card = game.Cards[i];
|
||||
if (!card.Completed)
|
||||
{
|
||||
if (card.Selected())
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Green;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor= ConsoleColor.Red;
|
||||
}
|
||||
DrawCard(game.Cards[i], i + 1, i % Game.GRIDSIZE, i / Game.GRIDSIZE);
|
||||
Console.ForegroundColor = ConsoleColor.White;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user