sakrab
@sakrab
Не будь побежден злом, но побеждай зло добром...

Карты (игра в карты) на javascript?

Добрый день. Решил освоить javascript. Поставил себе одну задачу, игра с угадывание числа. Вроде сделал (правда говно код). Думал двинутся дальше, решил сделать карточную игру. Ну впал в полный ступор. Как, что, куда?

Начал с
var obj = [ 6, 7, 8, 9, 10, B, Q, K ,A ] и остановился...

1. Как задать масти? =\
2. Какая логика раздачи карт игрокам?
3. Ну там дальше еще много вопросов.

Есть где, что почитать про создание карточной игры? Примеры с кодом, что то еще...
  • Вопрос задан
  • 3422 просмотра
Решения вопроса 1
acelash
@acelash
web developer
я тоже решил написать игру в дурак. Правда не на чистом js а на jquery. и без бота(игра человек-человек) могу рассказать про свою логику.
Колода хранится в массиве json объектов: {[{rang:'6',masti:'червы'}],[{rang:'6',masti:'пики'}],[{rang:'7',masti:'червы'}]..} и т.д.
сначала размешиваем этот массив потом отнимаем первые 6 карт и передаем в массив player_1_hand - это рука первого игрока,следующие 6 - для второго игрока. Следующая карта в колоде это козырь.
Чтобы карты сравнить надо задать им номера, например : 6 = 1, 7 = 2, 8 = 3, 9 = 4, 10 = 5, J = 6, Q = 7, K = 8 и А = 9. Если карта козырная то прибавляем к ее номеру 9 (чтобы козырная шестерка могла бить обычного туза но не могла козырную семерку).
Вот как-то так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
xozzslip
@xozzslip
Чекни мой канал о кодинге https://bit.ly/2LNBAL8
Задача, которую вы себе поставили — отличный шанс познакомиться с ООП (в случае с js с прототипами), так как на лицо три поля у объекта: масть, ее достоинство и символьная запись. К примеру, червовый валет будет выглядеть так:
card.suit = "hearts";
card.number = 11;
card.name = "J"

Тогда не придется использовать json, можно будет итерироваться по обычному массиву с объектами.
Ответ написан
@artemt
Foolstack developer
Я бы хранил карты как числа от 0 до 35. Масть можно определять по остатку от деления на 4, если колода отсортирована вперемешку, или попаданием в диапазон, если масти идут сериями. Инициализировал массив, перетасовал его по методу Кнута и тяни карты pop`ом. К любой дополнительной информации имеется удобный доступ в нужный массив по индексу карты. Например, вышла или нет карта - массив 0..35 булевых значений. Или массив номиналов карт или тех же мастей, хотя их проще рассчитывать. Ну там массив с картинками для отображения и т.п.
Ответ написан
sakrab
@sakrab Автор вопроса
Не будь побежден злом, но побеждай зло добром...
Да этих решений наверно куча. Только надо как то сообразить.

Я вообще подвис на таком коде:
var Cards = {
	 card:  ["6","7","8","9","10","B","Q","K","A"], //карты
	 suit:  ["&#9829","&#9827","&#9824","&#9830"],//масти
	 val: [1,2,3,4,5,6,7,8,9]//ранг карты
}


Пройтись по объекту, взять как то "6", присвоить ей масти, закинуть в массив, типо четыре шестерки крести пики черви бубны, потом 7 и так далее. Потом рандом на 4-х игроков раздать. Только что делать с рангом не епу.

Странно что никто не делал хоть легкую игру в карты на js. В сети только нашел китайский blackjack =\
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы