"Canasta Opening" - карточная игра на Point JS

Страница 5 из 6 Предыдущий  1, 2, 3, 4, 5, 6  Следующий

Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пт Фев 09, 2018 8:54 pm

Код хорош, только меня тут смутил немного он:
...if (mouse.isPeekObject('LEFT', finish_round_button)) { //если тыкаем "завершить ход"
game_step = 3;//переходим к следующему шагу
}
break;
case 3:
addCardToPlayer(comp_cards); //даем игроку карту... - ?
После завершения своего хода (игрок) - ход передаётся компьютеру, при этом игроку карты из "закрытой" или из "колоды для сноса" не добавляются.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 09, 2018 9:07 pm

addCardToPlayer(comp_cards); //даем игроку карту... - ?

ну в смысле игроку-компьютеру - comp_cards

карты компу добавляются, но он сразу что-то с ними делает. можно добавить туда задержку, чтобы это лучше выглядело
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пт Фев 09, 2018 10:19 pm

Да, лучше добавить задержку.) Это 1-е.
2-е - посмотрел ещё раз на скрин - комбинации по ЗНАЧЕНИЮ выглядят просто шикарно, но с комбинациями МАСТЬ - сплошные глюки. Немного не так поняли видимо. МАСТЬЮ считается комбинация в которой от четырёх карт все карты идут по порядку (как в покере - стрейт флеш). По сути комбинация МАСТЬ - это и есть "стрейт-флеш" от 4 карт и выше.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 09, 2018 10:22 pm

сплошные глюки. Немного не так поняли видимо. МАСТЬЮ считается комбинация в которой от четырёх карт все карты идут по порядку
я это понял, но не придумал как сделать. по этому сейчас тупо масть - это любые карты одной масти + джокер того-же цвета
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пт Фев 09, 2018 10:51 pm

Ещё заметил глюк, карты из "закрытой колоды" берутся автоматически без возможности выбора валить ли "колоду для сноса". Получается что колоду для сноса можно завалить даже тогда, когда взята уже карта из "закрытой колоды". Ещё видимо глюк - когда у игрока или у компьютера слишком много карт - то они уходят за экран и становятся недоступными.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 09, 2018 11:03 pm

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

Код:

let card_offset_x = 0; //тут надо придумать сдвиг, чтобы все карты в экран помещались
    player_cards_array = player_cards_array.filter(function(n){ return n != undefined });
    player_cards_array.sort(fieldSorter(['card_suite', 'card_score'])); //сортируем карты по масти и по достоинству
    if(player_cards_array.length > 15){
      //card_offset_x = 20;
    }

Получается что колоду для сноса можно завалить даже тогда, когда взята уже карта из "закрытой колоды".

получается что так. можешь переделать как надо. я так до конца и не понял механику - что в какой момент можно делать, а что в какой момент нельзя.

и да: глюк - это неожиданное, непредсказуемое поведение программы. а то что программа работает не по такому алгоритму, который нужен - это не глюк, а неточное/неверное составление алгоритма
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пт Фев 09, 2018 11:08 pm

Pyro338 пишет:
сплошные глюки. Немного не так поняли видимо. МАСТЬЮ считается комбинация в которой от четырёх карт все карты идут по порядку
я это понял, но не придумал как сделать. по этому сейчас тупо масть - это любые карты одной масти + джокер того-же цвета
Тут следует написать несколько проверок через IF ELSE я думаю...

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 09, 2018 11:10 pm

Тут следует написать несколько проверок через IF ELSE я думаю...
возможно. но там нужно еще учитывать, что джокер может принимать любое значение и что комбинации могут идти через туза по кругу, а это - хз как сделать
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пт Фев 09, 2018 11:13 pm

Да ,это видимо пока будет создать проблематично. А что по поводу добавления карт в уже созданные комбинации? Smile

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 09, 2018 11:19 pm

А что по поводу добавления карт в уже созданные комбинации
ну это можно в принципе. комбинации хранятся в массивах player_combinations и comp_combinations - проверяешь, чтобы соответстовало правилам всё и пушишь туда
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Сб Фев 10, 2018 8:43 pm

Не знаю, говорил здесь уже или нет, есть ещё глюк, почему-то карта из закрытой колоды берётся всегда, даже если "заваливаем" колоду для сноса. Это первое. Второе - забыл ещё про одно условие сказать - оно довольно важное, хоть и встречается крайне редко - если у игрока осталась 1 карта и собрана только комбинация ЗНАЧЕНИЕ (несколько комбинаций по значению), но нет комбинации МАСТЬ - то дискард (снос карты в колоду для сноса) становится невозможным и игрок при своём ходе должен пропустить снос.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Сб Фев 10, 2018 8:59 pm

карта из закрытой колоды берётся всегда, даже если "заваливаем" колоду для сноса.
потому что если ты смотрел код, сейчас карта из колоды берется всегда. а завал - по желанию.

если у игрока осталась 1 карта и собрана только комбинация ЗНАЧЕНИЕ (несколько комбинаций по значению), но нет комбинации МАСТЬ - то дискард (снос карты в колоду для сноса) становится невозможным и игрок при своём ходе должен пропустить снос.
об этом ты точно не говорил
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пн Фев 12, 2018 9:48 pm

Я тут подумал и решил. Чтобы правильно составить комбинацию МАСТЬ, для этого надо каждой карте присвоить свой уникальный номер (ID) и уже манипулировать с ним. Для упрощения возьмём просто "карты-цифры 1,2,3,4". Если карты идут по порядку - то выкладываем комбинацию, если карты идут не по порядку - комбинацию не делаем.
Ещё уточнение про...
если у игрока осталась 1 карта и собрана только комбинация МАСТЬ (несколько комбинаций по МАСТИ), но нет комбинации по ЗНАЧЕНИЮ - то дискард (снос карты в колоду для сноса) становится невозможным и игрок при своём ходе должен пропустить снос.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пн Фев 12, 2018 9:53 pm

функция parseCardValue(card) парсит название карты в ее масть и значение. соответсвенно у каждой карты card_score - это значение от 2 до 15 (15 - джокер), а card_suite - масть: 1 - пики, 2 - кресты, 3 - буби, 4 - червы, 5 - красный джокер, 6 - черный джокер
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пн Фев 12, 2018 10:10 pm

Значит выходит, что "card score" - это и есть ID карты...

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пн Фев 12, 2018 10:13 pm

ну не совсем. у десятки пик и у десятки бубей будет одинаковый card_score - 10, а у дам - 12 например
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 16, 2018 1:16 pm

ну что там? получается?
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пт Фев 16, 2018 1:25 pm

короче посмотрел тут ролики на ютубу - играют вообще не так как ты написал. на русском не нашел, видимо у нас эту игру вообще не знают, но из англоязычных роликов выяснил для себя следующее:

1) в игре участвуют 2 колоды.
2) колода сдается по 15 карт, одна карта сразу ложится в колоду для сноса.
3) какая-то хрень с тройками. ну короче их в сторону откладывают. не понял.
4) игрок, чей ход, если у него меньше 15 карт, добирает до 15-и, либо сносит колоду для сноса.
5) выкладывает комбинации. "по масти" - такого не увидел. все выкладывают "по значению". двойка используется вместо любой карты (типа как ты про джокеров писал).
6) если в комбинации 7 карт их складывают в стопку и отодвигают в сторону.
7) игрок сносит карту.
Cool второй игрок делает с 4 по 7 действия и так по очереди.
9) если на руках у игрока не остается карт, например он подобавлял в комбинации, а последнюю карту снес, раунд заканчивается в независимости от того, остались ли карты в колоде.
10) считаются очки в комбинациях.
11) начинается новый раунд - действия с 1 по 10.
12) если после окончания очередного раунда, кто-то набрал больше 5000 очков, он выиграл. если оба, то ничья.

ну вот это так американцы играют судя по ютубу.
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пт Фев 16, 2018 8:10 pm

Pyro338, что-то не очень выходит пока что. Так и заглох на комбинациях. Да мой вариант (точнее моего знакомого) естественно отличается от разновидности, предложенной тобой. Да, такую "канасту" я знаю. Что-то как-то она не мне. Мало там думать надо. А вот эта "канаста", которая делается сейчас - вот она очень даже "мозговитая". И тут сдаётся по 9 карт каждому игроку изначально. Далее по своей очереди игроки берут карты из колоды. Очки будут тоже считаться по выложенным комбинациям. Ещё для улучшения можно прописать, сколько карт осталось в "закрытой" колоде. Cool

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Вс Фев 18, 2018 12:16 pm

ясно. ну кстати как добавлять в комбинации я придумал. примерно так

Код:

can_info_label.text = 'Ваш ход';
        if (!can_card_in_hand) {
          can_player_cards.forEach(function (item, index) {
            if (mouse.isPeekObject('LEFT', item)) {
              can_card_active = item;
              can_card_active.w = can_card_width;
              can_card_active.h = can_card_height;
              can_player_cards.splice(index, 1);
              can_card_in_hand = true;
            }
          });
        } else {
          can_card_active.setPositionC(mouse.getPosition());
          can_card_active.draw();
          if (can_is_pulled == false) { //если карта не снесена
            if (mouse.isPress('LEFT') && mouse.isInObject(can_deck_pull)) {
              can_pull.push(can_card_active);
              can_card_in_hand = false;
              can_pull[can_pull.length - 1].x = can_deck_pull.x;
              can_pull[can_pull.length - 1].y = can_deck_pull.y;
              can_deck_pull.file = can_pull[can_pull.length - 1].file;
              can_pull_count++;
              can_is_pulled = true;
            }
          }
          can_player_cells.forEach(function (item, index) {
            if (mouse.isPress('LEFT') && mouse.isInObject(item) && can_player_combinations[index] != undefined) {
              can_player_combinations[index].push(can_card_active);
              can_card_in_hand = false;
              can_player_combinations[index][can_player_combinations[index].length - 1].x = can_left_offset + (can_card_width + 5) * index;
              can_player_combinations[index][can_player_combinations[index].length - 1].y = height / 2 + 40 + 20 * can_player_combinations[index].length - 1;
            }
          });
        }
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Вс Фев 18, 2018 10:30 pm

А я проще думал - "комбинации" - это ведь тоже "массивы". Берём карту из одного массива (рука игрока) и добавляем карту в массив "комбинация". По логике - всё просто, но на практике...увы. Главное чтобы ещё всё работало "как надо".) Cool

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Вс Фев 18, 2018 10:36 pm

да. комбинации - это тоже массивы. вот в этой строчке мы добавляем активную карту к этому массиву can_player_combinations[index].push(can_card_active);
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пн Фев 19, 2018 10:58 am

Код возможно и правильный, только как его проверить? На счёт определения конца раунда. Можно проверку записать так: Если в "закрытой колоде" осталось 0 карт, и если в массиве рук игрока или компа после выкладки комбинаций осталось тоже 0 карт, то раунд объявляем законченным.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Pyro338 в Пн Фев 19, 2018 11:04 am


На счёт определения конца раунда. Можно проверку записать так: Если в "закрытой колоде" осталось 0 карт, и если в массиве рук игрока или компа после выкладки комбинаций осталось тоже 0 карт, то раунд объявляем законченным.
именно

ну вот например как в "дураке" я делал

Код:
function fool_checkGameOver() {
  if (fool_player_cards.length == 0 && fool_comp_cards.length != 0 && fool_cards_count == 0) {
    fool_wins++;
    fool_wins_label.text = 'Победы: ' + fool_wins;
    fool_cards_count = -1;
    fool_restart_button.setPositionC(point(width / 2, height / 2));
    fool_game_state = 5;
  } else if (fool_player_cards.length != 0 && fool_comp_cards.length == 0 && fool_cards_count == 0) {
    fool_loses++;
    fool_loses_label.text = 'Поражения: ' + fool_loses;
    fool_cards_count = -1;
    fool_restart_button.setPositionC(point(width / 2, height / 2));
    fool_game_state = 6;
  } else if (fool_player_cards.length == 0 && fool_comp_cards.length == 0 && fool_cards_count == 0) {
    fool_draws++;
    fool_draws_label.text = 'Ничьи: ' + fool_draws;
    fool_cards_count = -1;
    fool_restart_button.setPositionC(point(width / 2, height / 2));
    fool_game_state = 7;
  } else {
    return;
  }
}

и каждый игровой тик вызываем fool_checkGameOver();
avatar
Pyro338
Админ

Сообщения : 587
Дата регистрации : 2017-12-25
Возраст : 33
Откуда : Ставрополь

Посмотреть профиль http://pyro338.ru/

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор AlexeyOK в Пн Фев 19, 2018 11:10 am

Конец тура: Если последняя карта была взята из "закрытой колоды" и если в массиве руки карт игрока не осталось, то есть значение равно 0 + на поле выложены его комбинации по МАСТИ и ЗНАЧЕНИЮ то объявляем выигрыш игрока по ЦУМО и присваиваем игроку бонус в 20 очков, соответственно если в массиве "руки" компьютера остались ещё какие-нибудь карты, то при подсчёте очков каждая 1 одна карта идёт "в минус". Далее ведём подсчёт очков по выложенным комбинациям. Но может же быть и другое окончание тура: Если последняя карта была взята из "закрытой колоды" и если в массиве руки карт компьютера не осталось, то есть значение равно 0 + на поле выложены его комбинации по МАСТИ и ЗНАЧЕНИЮ то объявляем выигрыш компьютера по ЦУМО и присваиваем ему бонус в 20 очков, соответственно если в массиве "руки" игрока остались ещё какие-нибудь карты, то при подсчёте очков каждая 1 одна карта идёт "в минус". Далее ведём подсчёт очков по выложенным комбинациям.

AlexeyOK

Сообщения : 50
Дата регистрации : 2018-01-08

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: "Canasta Opening" - карточная игра на Point JS

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Страница 5 из 6 Предыдущий  1, 2, 3, 4, 5, 6  Следующий

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения