Распечатка частей тела для игры палач на консоль

В настоящее время я делаю игру в палач на Java как учебный опыт, потому что я довольно плохо знаком с языком Java. Я делал этот проект раньше в Python, когда я впервые изучал это, и теперь я в основном отражаю его в Java. Кажется, что большинство игр в палач, которые делают люди, на самом деле не показывают тело, подвешенное на виселице, каждый раз, когда вы делаете предположение; это самый практичный способ сделать это, так как это консольная игра. Однако, когда я сделал игру на Python, и планирую сделать на Java, я фактически распечатал тело на консоли. Я очень хорошо понимаю, что это немного глупо, потому что у вас есть только персонажи для работы.

Теперь я перехожу к реальному вопросу: как лучше всего это сделать? В Python у меня было - и я не преувеличиваю - более 1000 строк кода с тоннами if-elif заявления с бесконечным количеством print заявления для распечатки различных способов представления тела. Это был полный беспорядок, я знаю. Причина была в том, что у меня было меню настроек в игре, где вы могли изменить количество неверных догадок. В результате было необходимо добавить больше частей тела с более постепенной скоростью. То есть вместо стандартной головы, туловища, рук (2) и ног (2) - всего 6 частей тела - у меня были, например, голова, глаза (2), нос, рот, туловище, руки (2), ноги (2) - всего 10 частей тела - как вариант.

Просто чтобы превзойти себя, я бы хотел, чтобы игрок моей игры мог выбирать число от 0 до 18 для максимального количества ошибочных догадок. Теперь, как бы мне хотелось сделать сотни звонков println() в глубоко вложенных switch или же if блоки (сарказм), мне интересно, есть ли лучший способ сделать это. То есть более элегантный способ подсчитать, какие части тела нужно распечатать, и распечатать их.

Заранее спасибо.

1 ответ

Решение

Я включил часть кода из моей игры палач, который использует переключатель, чтобы определить, что печатать. Палач просто состоит из нескольких разрывов строк и нескольких других простых символов. Вот скриншот:

switch (numberOfIncorrectGuesses)
        {
            case 1:
                hangman = "\n" + "\n|" + "\n|" + "\n|" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 2:
                hangman = "\n_________" + "\n|" + "\n|" + "\n|" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 3:
                hangman =  "\n_________" + "\n|                   |" + "\n|" + "\n|" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 4:
                hangman =  "\n_________" + "\n|                   |" + "\n|                  O" + "\n|" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 5:
                hangman =  "\n_________" + "\n|                   |" + "\n|                  O" + "\n|                   |" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 6:
                hangman =  "\n_________" + "\n|                   |" + "\n|                  O" + "\n|               ---|" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 7:
                hangman =  "\n_________" + "\n|                   |" + "\n|                  O" + "\n|               ---|---" + "\n|" + "\n|" + "\n|_______________________\n";
                break;
            case 8:
                hangman = "\n_________" + "\n|                   |" + "\n|                  O" + "\n|               ---|---" + "\n|                  /" + "\n|                /" + "\n|_______________________\n";
                break;
            case 9:
                JOptionPane.showMessageDialog(null, author + "Incorrect" + "\n_________" + "\n|                   |" + "\n|                  O" + "\n|               ---|---" + "\n|                  /\\" + "\n|                /    \\" + "\n|_______________________" + "\nSorry, you lost.\nThe stick man is Dead!\nThe secret word was: \"" + secretWord + "\"");
Другие вопросы по тегам