public void Draw() { Console.CursorLeft = colStart; Console.CursorTop = rowStart; foreach (var address in MemoryAddresses) { var indexColor = address.AddressIndex >= (MemoryAddresses.Length / 2) - 1 ? ConsoleColor.DarkYellow : ConsoleColor.Blue; string variableTypeName = string.Empty; string variableValue = string.Empty; bool lastVariableChanged = false; if (address.Variable != null) { variableTypeName = $"({address.Variable.Type.Name}) {address.Variable.Name}"; variableValue = address.Variable.Type == DataTypes.String ? $"\"{address.Variable.Value}\"" : address.Variable.Value; variableValue += $"{(address.Variable.Type is RefType ? " (ref)" : string.Empty)}"; lastVariableChanged = address.Variable.LastChanged; } Console.ForegroundColor = lineColor; ConsoleAid.Print(typeAndNameVarialbeLineLength); ConsoleAid.PrintLine(valueLineLength, '-'); Console.CursorLeft = colStart; if (lastVariableChanged) { Console.BackgroundColor = ConsoleColor.Cyan; } Console.ForegroundColor = ConsoleColor.Green; ConsoleAid.PrintText(typeAndNameVarialbeLineLength, variableTypeName); Console.ForegroundColor = lineColor; Console.Write("|"); Console.ForegroundColor = indexColor; ConsoleAid.PrintText(addressIndexLineLength, address.AddressIndex.ToString()); Console.ForegroundColor = lineColor; Console.Write("|"); Console.ForegroundColor = ConsoleColor.Green; ConsoleAid.PrintText(valueLineLength - addressIndexLineLength - 3, variableValue); Console.ForegroundColor = lineColor; Console.WriteLine("|"); Console.CursorLeft = colStart; Console.BackgroundColor = ConsoleColor.White; } ConsoleAid.Print(typeAndNameVarialbeLineLength); ConsoleAid.PrintLine(valueLineLength, '-'); }
public void DrawSourceCode() { Console.CursorTop = rowStart; Console.BackgroundColor = ConsoleColor.Gray; foreach (var statement in SourceCode) { Console.CursorLeft = colStart; ConsoleAid.PrintLineText(50, statement); } Console.BackgroundColor = ConsoleColor.White; }
static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.WindowWidth = Console.LargestWindowWidth; Console.WindowHeight = Console.LargestWindowHeight; Console.Clear(); int choice = 0; string choiceString = string.Empty; string name = string.Empty; string value = string.Empty; int lengte = 0; while ((choice = ConsoleAid.GetChoice("Maak een keuze", MainMenu.ToArray(), "Stop", Draw)) != 0) { Console.Clear(); if (computer.LastVariableChanged != null) { computer.LastVariableChanged.LastChanged = false; computer.LastVariableChanged = null; } try { switch (choice) { case 1: // ValueType choiceString = ConsoleAid.GetChoicePossibility("Welk dataType wil je aanmaken", DataTypes.Types[DataTypes.valueTypes].Select(x => x.Name).ToArray(), "Terug Naar Main Menu", out choice, Draw); switch (choice) { case 1: // int name = ConsoleAid.ReadText("Hoe wil je je int variable noemen ?"); value = ConsoleAid.ReadInteger($"Geef een integere waarde voor {name}.", "Dit is geen integer waarde.").ToString(); computer.InitializeValueVariable(DataTypes.Int, name, value); break; case 2: // string name = ConsoleAid.ReadText("Hoe wil je je string variable noemen?"); value = ConsoleAid.ReadText($"Geef een string waarde voor {name}.", true, true, true); computer.InitializeValueVariable(DataTypes.String, name, value); break; case 3: // bool name = ConsoleAid.ReadText("Hoe wil je je bool variable noemen?"); value = ConsoleAid.ReadInteger($"Geef een bool waarde voor {name}. kies tussen 0 of 1", "Dit is geen bool waarde", 0, 1).ToString(); computer.InitializeValueVariable(DataTypes.Bool, name, value); break; } break; case 2: // RefType choiceString = ConsoleAid.GetChoicePossibility("Welk dataType wil je aanmaken", computer.Types.Where(x => x.GetType() == typeof(RefType)).Select(x => x.Name).ToArray(), "Terug Naar Main Menu", out choice, Draw); if (choice == 0) //back to main menu { break; } if (DataTypes.Types[DataTypes.arrayTypes].Any(x => x.Name == choiceString)) // array type { name = ConsoleAid.ReadText($"Hoe wil je je {choiceString} variable noemen?"); lengte = ConsoleAid.ReadInteger($"Geef een de lengte voor {name}, kies tussen 1 en 5.", "Dit is geen integer waarde.", 1, 5); computer.InitializeArrayVariable(computer.Types.First(x => x.Name == choiceString), name, lengte); } else // custom type { var type = (RefType)DataTypes.CustomTypes.FirstOrDefault(x => x.Name == choiceString); name = ConsoleAid.ReadText($"Hoe wil je je {choiceString} variable noemen?"); computer.InitializeCustumTypeVariable(type, name); } break; case 3: name = ConsoleAid.ReadText("Hoe heet je nieuw custom data type?"); var properties = new List <Property>(); var maxProperties = 5; var propertyCounter = 1; do { Console.WriteLine($"Property {propertyCounter++}/{maxProperties}."); choiceString = ConsoleAid.GetChoicePossibility("Van welk dataType is je property?", computer.Types.Where(x => x.GetType() == typeof(ValueType)).Select(x => x.Name).ToArray(), "Stop met properties aanmaken", out choice, Draw); if (choice == 0) { break; } var propertyName = ConsoleAid.ReadText("Hoe heet je property?"); properties.Add(new Property { Name = propertyName, Type = computer.Types.First(x => x.GetType() == typeof(ValueType) && x.Name == choiceString) }); Console.Clear(); }while (propertyCounter <= maxProperties); computer.CreateCustomType(name, properties); break; case 4: if (!computer.Variables.Any()) { throw new Exception("Nog geen variabelen aangemaakt"); } var variableNames = computer.Variables.Select(x => x.Name).ToArray(); choiceString = ConsoleAid.GetChoicePossibility("Van welke variable wil je de waarde wijzigen", variableNames, "Stop", out choice, Draw); if (choice == 0) { break; } choice--; var variable = computer.Variables[choice]; if (variable.Type is ValueType) { switch (variable.Type.Name) { case "int": // int value = ConsoleAid.ReadInteger($"Geef een integere waarde voor {name}.", "Dit is geen integer waarde.").ToString(); break; case "string": // string value = ConsoleAid.ReadText($"Geef een string waarde voor {name}.", true, true, true); break; case "bool": // bool value = ConsoleAid.ReadInteger($"Geef een bool waarde voor {name}. kies tussen 0 of 1", "Dit is geen bool waarde", 0, 1).ToString(); break; } } else if (variable.Type is RefType) { Console.Clear(); Console.WriteLine($"Je hebt gekozen om '{variable.Name}' te wijzigen."); variableNames = variable.Variables.Select(x => x.Name).ToArray(); choiceString = ConsoleAid.GetChoicePossibility("Van welke variable wil je de waarde wijzigen", variableNames, "Stop", out choice, Draw); if (choice == 0) { break; } choice--; variable = variable.Variables[choice]; switch (variable.Type.Name) { case "int": // int value = ConsoleAid.ReadInteger($"Geef een integere waarde voor {name}.", "Dit is geen integer waarde.").ToString(); break; case "string": // string value = ConsoleAid.ReadText($"Geef een string waarde voor {name}.", true, true, true); break; case "bool": // bool value = ConsoleAid.ReadInteger($"Geef een bool waarde voor {name}. kies tussen 0 of 1", "Dit is geen bool waarde", 0, 1).ToString(); break; } } computer.SetValueOfVariable(variable, value); break; } } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine("Druk op ENTER om verder te gaan."); Console.ReadLine(); } Console.Clear(); } }