21 ( аналог BlackJack ) в консоле на Java
Вчера разбирался с классом Scanner, он был довольно скучным и я особо не придумал, что можно с ним сделать, поэтому, увлекшись я написал игру 21
- консольную версию. Под катом: описание, видео и исходники.
Начну с видео (консоль eclipse):
Немного прыгает, но воспользовавшись паузой я думаю вы поймете что происходит или как минимум поймете стоит ли Вам смотреть исходники 🙂
Правила игры:
Играют одной колодой в 36 карт. Старшинство карт не стандартно:
Валет — 2 очка; Дама — 3 очка; Король — 4 очка; Туз — 11 очков
Остальные карты при подсчете очков оцениваются по номиналу. Цель игры набрать в сумме 21 очко.
К сожалению, я не смог побороть проблему с кодировками в Windows (chcp 65001 помог не полностью), поэтому я символы для рисования карт заменил в исходниках на другие и выглядит это теперь не так красиво, как на видео:
В любом случае старые символы для рисования карт остались в исходнике, поэтому вы без проблем сможете к ним вернуться.
Если у Вас будут проблемы с символами в консоле Eclipse-а, то тогда вам нужно сделать следующее:
- В верхнем меню (которое над панелью инструментов), выбрать Project->Properties
- В меню слева: Run/Debug Settings
- Дальше в окошке справа, выбираем нашу Launch configuration: Main и нажимаем кнопку [Edit]
- В открывшемся окне идем на вкладку Common, и там в разделе Encoding выбираем Other->UTF-8
Игру можно взять тут: 21_game.zip. Исходники можно взять тут: 21_sources.zip
Если у Вас не стоит Java, то не забывайте что Вам надо поставить как минимум JRE для Java 7 и настроить переменную PATH.
Кто захочет поиграться с символами для рисования блоков и т.д., их можно найти тут: http://ascii-table.com/ascii-extended-pc-list.php (ASCII extended character sets)
А где же Scanner?
Класс Scanner используется для ввода команд от юзера.
--[добавлено]--
Вот тут нашел полную таблицу ASCII: ASCIITable.Com, как видите, символы для построения блоков, находятся в пределах char, а это значит, что для консоли Windows, всего скорее, можно использовать красивые карты. Поэтому, если у Вас будет желание, попробуйте поэкспериментировать с чем-то вроде:
1 2 3 4 |
for (int i=0; i<255; i++) System.out.print((char) i); |
и дальше позапускать программу именно в консоле Windows таким способом:
1 2 3 |
chcp 1252 && java Main |
где 1252 - это кодавая страница (список их надо поискать, я знаю еще про такие: 65001, 866, 1250, 1251)
Author: | Tags: /
| Rating:
Leave a Reply