Распечатка частей тела для игры палач на консоль
В настоящее время я делаю игру в палач на 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 + "\"");