public void Run()
    {
        while (!dungeonMaster.IsGameOver())
        {
            string input = Console.ReadLine();

            if (string.IsNullOrEmpty(input))
            {
                break;
            }

            ExecuteCommand(input);
        }

        Console.WriteLine("Final stats:" + Environment.NewLine + dungeonMaster.GetStats());
    }
Beispiel #2
0
    public void ProcessCommand(string input)
    {
        if (string.IsNullOrEmpty(input))
        {
            IsRunning = false;
            return;
        }
        string[] args    = input.Split();
        string   command = args[0];

        args = args.Skip(1).ToArray();
        switch (command)
        {
        case "JoinParty":
            writer.WriteLine(dungeonMaster.JoinParty(args));
            break;

        case "AddItemToPool":
            writer.WriteLine(dungeonMaster.AddItemToPool(args));
            break;

        case "PickUpItem":
            writer.WriteLine(dungeonMaster.PickUpItem(args));
            break;

        case "UseItem":
            writer.WriteLine(dungeonMaster.UseItem(args));
            break;

        case "UseItemOn":
            writer.WriteLine(dungeonMaster.UseItemOn(args));
            break;

        case "GiveCharacterItem":
            writer.WriteLine(dungeonMaster.GiveCharacterItem(args));
            break;

        case "GetStats":
            writer.WriteLine(dungeonMaster.GetStats());
            break;

        case "Attack":
            writer.WriteLine(dungeonMaster.Attack(args));
            break;

        case "Heal":
            writer.WriteLine(dungeonMaster.Heal(args));
            break;

        case "EndTurn":
            writer.WriteLine(dungeonMaster.EndTurn());
            break;

        case "IsGameOver":
            writer.WriteLine(dungeonMaster.IsGameOver().ToString());
            break;
        }
    }
Beispiel #3
0
    public void Run()
    {
        string input = Console.ReadLine();

        while (!string.IsNullOrEmpty(input))
        {
            string[] tokens  = input.Split(' ');
            string   command = tokens[0];

            tokens = tokens.Skip(1).ToArray();

            string result = string.Empty;

            try
            {
                result = ReadAndExecuteCommand(tokens, command, result);
                if (result != string.Empty)
                {
                    Console.WriteLine(result);
                }
            }
            catch (InvalidOperationException invalidOperation)
            {
                Console.WriteLine("Invalid Operation: " + invalidOperation.Message);
            }
            catch (ArgumentException argumentException)
            {
                Console.WriteLine("Parameter Error: " + argumentException.Message);
            }

            if (dungeonMaster.IsGameOver())
            {
                break;
            }

            input = Console.ReadLine();
        }

        Console.WriteLine("Final stats:");
        Console.WriteLine(dungeonMaster.GetStats());
    }
Beispiel #4
0
    public void Run()
    {
        var    operations = new List <string>();
        string input      = Console.ReadLine();

        while (true)
        {
            if (string.IsNullOrEmpty(input))
            {
                break;
            }

            operations.Add(input);
            input = Console.ReadLine();
        }

        var isItOver = true;

        foreach (var operation in operations)
        {
            if (dm.IsGameOver())
            {
                Console.WriteLine(OutputMessage.FinalStats);
                Console.WriteLine(dm.GetStats());
                isItOver = false;
                break;
            }

            var inputArgs = operation.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToArray();
            var command   = inputArgs[0];
            var args      = inputArgs.Skip(1).ToArray();

            try
            {
                switch (command)
                {
                case "JoinParty":
                    Console.WriteLine(dm.JoinParty(args));
                    break;

                case "AddItemToPool":
                    Console.WriteLine(dm.AddItemToPool(args));
                    break;

                case "PickUpItem":
                    Console.WriteLine(dm.PickUpItem(args));
                    break;

                case "UseItem":
                    Console.WriteLine(dm.UseItem(args));
                    break;

                case "UseItemOn":
                    Console.WriteLine(dm.UseItemOn(args));
                    break;

                case "GiveCharacterItem":
                    Console.WriteLine(dm.GiveCharacterItem(args));
                    break;

                case "GetStats":
                    Console.WriteLine(dm.GetStats());
                    break;

                case "Attack":
                    Console.WriteLine(dm.Attack(args));
                    break;

                case "Heal":
                    Console.WriteLine(dm.Heal(args));
                    break;

                case "EndTurn":
                    Console.WriteLine(dm.EndTurn(args));
                    break;

                default:
                    throw new InvalidOperationException("Wrong command!");
                }
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine("Parameter Error: " + ex.Message);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine("Invalid Operation: " + ex.Message);
            }
        }

        if (isItOver)
        {
            Console.WriteLine(OutputMessage.FinalStats);
            Console.WriteLine(dm.GetStats());
        }
    }
Beispiel #5
0
    static void Main(string[] args)
    {
        var master = new DungeonMaster();

        while (true)
        {
            var input = Console.ReadLine();
            if (String.IsNullOrEmpty(input))
            {
                var builder = new StringBuilder();
                builder.AppendLine("Final stats:");
                builder.Append(master.GetStats());
                Console.WriteLine(builder.ToString().Trim());
                return;
            }

            string[] command   = input.Split();
            var      arguments = command.Skip(1).ToArray();

            try
            {
                switch (command[0])
                {
                case "JoinParty":
                    Console.WriteLine(master.JoinParty(arguments));
                    break;

                case "AddItemToPool":
                    Console.WriteLine(master.AddItemToPool(arguments));
                    break;

                case "PickUpItem":
                    Console.WriteLine(master.PickUpItem(arguments));
                    break;

                case "UseItem":
                    Console.WriteLine(master.UseItem(arguments));
                    break;

                case "UseItemOn":
                    Console.WriteLine(master.UseItemOn(arguments));
                    break;

                case "GiveCharacterItem":
                    Console.WriteLine(master.GiveCharacterItem(arguments));
                    break;

                case "GetStats":
                    Console.WriteLine(master.GetStats());
                    break;

                case "Attack":
                    Console.WriteLine(master.Attack(arguments));
                    break;

                case "Heal":
                    Console.WriteLine(master.Heal(arguments));
                    break;

                case "EndTurn":
                    Console.WriteLine(master.EndTurn(arguments));
                    if (master.IsGameOver())
                    {
                        var builder = new StringBuilder();
                        builder.AppendLine("Final stats:");
                        builder.Append((master.GetStats()));
                        Console.WriteLine(builder.ToString().Trim());
                        return;
                    }
                    break;

                case "IsGameOver":
                    Console.WriteLine(master.IsGameOver());
                    break;
                }
            }
            catch (ArgumentException ae)
            {
                Console.WriteLine($"Parameter Error: {ae.Message}");
            }
            catch (InvalidOperationException ioe)
            {
                Console.WriteLine($"Invalid Operation: {ioe.Message}");
            }
        }
    }
Beispiel #6
0
    public void Run()
    {
        while (!dungeonMaster.IsGameOver())
        {
            string input = Console.ReadLine();
            if (string.IsNullOrEmpty(input))
            {
                break;
            }
            string[] tokens  = input.Split();
            string   command = tokens[0];
            tokens = tokens.Skip(1).ToArray();

            try
            {
                switch (command)
                {
                case "JoinParty":
                    sb.AppendLine(dungeonMaster.JoinParty(tokens));
                    break;

                case "AddItemToPool":
                    sb.AppendLine(dungeonMaster.AddItemToPool(tokens));
                    break;

                case "PickUpItem":
                    sb.AppendLine(dungeonMaster.PickUpItem(tokens));
                    break;

                case "UseItem":
                    sb.AppendLine(dungeonMaster.UseItem(tokens));
                    break;

                case "UseItemOn":
                    sb.AppendLine(dungeonMaster.UseItemOn(tokens));
                    break;

                case "GiveCharacterItem":
                    sb.AppendLine(dungeonMaster.GiveCharacterItem(tokens));
                    break;

                case "GetStats":
                    sb.AppendLine(dungeonMaster.GetStats());
                    break;

                case "Attack":
                    sb.AppendLine(dungeonMaster.Attack(tokens));
                    break;

                case "Heal":
                    sb.AppendLine(dungeonMaster.Heal(tokens));
                    break;

                case "EndTurn":
                    sb.AppendLine(dungeonMaster.EndTurn(tokens));
                    break;

                default:
                    break;
                }
            }
            catch (ArgumentException ae)
            {
                sb.AppendLine($"Parameter Error: {ae.Message}");
            }
            catch (InvalidOperationException ioe)
            {
                sb.AppendLine($"Invalid Operation: {ioe.Message}");
            }
        }
        sb.AppendLine("Final stats:")
        .AppendLine(dungeonMaster.GetStats());
        Console.WriteLine(sb.ToString().Trim());
    }
Beispiel #7
0
    public void Run()
    {
        while (!dungeonMaster.IsGameOver())
        {
            try
            {
                string command = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(command))
                {
                    break;
                }

                string[] commTokens = command.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToArray();

                string currentCommand = commTokens[0];

                switch (currentCommand)
                {
                case "JoinParty":
                    Console.WriteLine(this.dungeonMaster.JoinParty(commTokens.Skip(1).ToArray()));
                    break;

                case "AddItemToPool":
                    Console.WriteLine(this.dungeonMaster.AddItemToPool(commTokens.Skip(1).ToArray()));
                    break;

                case "PickUpItem":
                    Console.WriteLine(this.dungeonMaster.PickUpItem(commTokens.Skip(1).ToArray()));
                    break;

                case "UseItem":
                    Console.WriteLine(this.dungeonMaster.UseItem(commTokens.Skip(1).ToArray()));
                    break;

                case "UseItemOn":
                    Console.WriteLine(this.dungeonMaster.UseItemOn(commTokens.Skip(1).ToArray()));
                    break;

                case "GiveCharacterItem":
                    Console.WriteLine(this.dungeonMaster.GiveCharacterItem(commTokens.Skip(1).ToArray()));
                    break;

                case "GetStats":
                    Console.WriteLine(this.dungeonMaster.GetStats());
                    break;

                case "Attack":
                    Console.WriteLine(this.dungeonMaster.Attack(commTokens.Skip(1).ToArray()));
                    break;

                case "Heal":
                    Console.WriteLine(this.dungeonMaster.Heal(commTokens.Skip(1).ToArray()));
                    break;

                case "EndTurn":
                    Console.WriteLine(this.dungeonMaster.EndTurn(commTokens.Skip(1).ToArray()));
                    break;

                case "IsGameOver":
                    this.dungeonMaster.IsGameOver();
                    break;

                default:
                    break;
                }
            }
            catch (Exception e)
            {
                if (e is ArgumentException)
                {
                    Console.WriteLine($"Parameter Error: {e.Message}");
                }
                else if (e is InvalidOperationException)
                {
                    Console.WriteLine($"Invalid Operation: {e.Message}");
                }
            }
        }
        Console.WriteLine($"Final stats:");
        Console.WriteLine(dungeonMaster.GetStats());
    }