using System;
using System.IO;

namespace Hangman {
  public class Hangman {
    public static void Main(string[] args) {
      var game = new Game("HANG THE MAN");

      string titleText = File.ReadAllText("title.txt");

      object[] titleCell = {titleText, Cell.CentreAlign};
      object[] titleRow = {titleCell}; 

      while (true) {
        string shownWord = game.ShownWord();

        object[] wordCell = {shownWord, Cell.CentreAlign};
        object[] wordRow = {wordCell};

        object[] lettersCell = {"Incorrect letters:\n A B I U", Cell.LeftAlign};
        object[] livesCell   = {"Lives remaining:\n 11/15",     Cell.RightAlign};
        object[] statsRow = {lettersCell, livesCell};

        object[] statusCell = {"Press any letter to guess!", Cell.CentreAlign};
        object[] statusRow = {statusCell};

        object[] tableConfig = {
          titleRow,
          wordRow,
          statsRow,
          statusRow
        };

        // var table = new Table(                 // Broken
        //   Math.Min(81, Console.WindowWidth),
        //   2,
        //   rows
        // );

        var table = TableFactory.Build(tableConfig);

        // var tableOutput = table.Draw();

        // Console.WriteLine(tableOutput);

        Console.WriteLine("Still Alive");

        char key = Console.ReadKey(true).KeyChar;
        bool wasCorrect = game.GuessLetter(Char.ToUpper(key));
        Console.Clear();
      }
    }
  }
}

using System;
using System.IO;

namespace Hangman {
  public class Hangman {
    public static void Main(string[] args) {
      var game = new Game("HANG THE MAN");

      string titleText = File.ReadAllText("title.txt");

      object[] titleCell = {titleText, Cell.CentreAlign};
      object[] titleRow = {titleCell}; 

      while (true) {
        string shownWord = game.ShownWord();

        object[] wordCell = {shownWord, Cell.CentreAlign};
        object[] wordRow = {wordCell};

        object[] lettersCell = {"Incorrect letters:\n A B I U", Cell.LeftAlign};
        object[] livesCell   = {"Lives remaining:\n 11/15",     Cell.RightAlign};
        object[] statsRow = {lettersCell, livesCell};

        object[] statusCell = {"Press any letter to guess!", Cell.CentreAlign};
        object[] statusRow = {statusCell};

        object[] tableConfig = {
          titleRow,
          wordRow,
          statsRow,
          statusRow
        };

        var table = TableFactory.Build(tableConfig);
        var tableOutput = table.Draw();
        Console.WriteLine(tableOutput);

        Console.WriteLine("Still Alive");

        char key = Console.ReadKey(true).KeyChar;
        bool wasCorrect = game.GuessLetter(Char.ToUpper(key));
        Console.Clear();
      }
    }
  }
}

Call Draw on the output of Build
Call Draw on the output of Build
