X

21 ( аналог BlackJack ) в консоле на Java

Вчера разбирался с классом Scanner, он был довольно скучным и я особо не придумал, что можно с ним сделать, поэтому, увлекшись я написал игру `21` - консольную версию. Под катом: описание, видео и исходники.

Начну с видео (консоль eclipse):

Немного прыгает, но воспользовавшись паузой я думаю вы поймете что происходит или как минимум поймете стоит ли Вам смотреть исходники 🙂

Правила игры:

Играют одной колодой в 36 карт.  Старшинство карт не стандартно:
Валет — 2 очка;  Дама — 3 очка;  Король — 4 очка;  Туз — 11 очков
Остальные карты при подсчете очков оцениваются по номиналу. Цель игры набрать в сумме 21 очко.

К сожалению, я не смог побороть проблему с кодировками в Windows (chcp 65001 помог не полностью), поэтому я символы для рисования карт заменил в исходниках на другие и выглядит это теперь не так красиво, как на видео:

В любом случае старые символы для рисования карт остались в исходнике, поэтому вы без проблем сможете к ним вернуться.

Если у Вас будут проблемы с символами в консоле Eclipse-а, то тогда вам нужно сделать следующее:

  1. В верхнем меню (которое над панелью инструментов), выбрать Project->Properties
  2. В меню слева: Run/Debug Settings
  3. Дальше в окошке справа, выбираем нашу Launch configuration: Main и нажимаем кнопку [Edit]
  4. В открывшемся окне идем на вкладку Common, и там в разделе Encoding выбираем Other->UTF-8

Игру можно взять тут: 21_game.zip. Исходники можно взять тут: 21_sources.zip

Если у Вас не стоит Java, то не забывайте что Вам надо поставить как минимум JRE для Java 7 и настроить переменную PATH.

Кто захочет поиграться с символами для рисования блоков и т.д., их можно найти тут: ASCII extended character sets

А где же Scanner?

Класс Scanner используется для ввода команд от юзера.

--[добавлено]--

Вот тут нашел полную таблицу ASCII: ASCIITable.Com, как видите, символы для построения блоков, находятся в пределах char, а это значит, что для консоли Windows, всего скорее, можно использовать красивые карты. Поэтому, если у Вас будет желание, попробуйте поэкспериментировать с чем-то вроде:

for (int i=0; i<255; i++)
  System.out.print((char) i);

и дальше позапускать программу именно в консоле Windows таким способом:

chcp 1252 && java Main

где 1252 - это кодавая страница (список их надо поискать, я знаю еще про такие: 65001, 866, 1250, 1251)

Категории: Java Java labs Игры