Полезное

Мы Вконтакте

Discord канал

#
1 ... 789101112
Аватара пользователя
Пользователь
Сообщения: 176
Собственно вот так выглядит расчёт старшей карты.

Изображение
Аватара пользователя
Пользователь
Сообщения: 176
Не знаю почему, но у меня второй игрок, который сверху, выигрывает, на дистанции, постоянно.

Вот проект. Посмотрите кому не лень :)

http://rghost.ru/6RCbxqRTn
Аватара пользователя
Пользователь
Сообщения: 244
Честно говоря, тут уже такое нагромождение, что разобраться в нём становится всё сложнее и сложнее :) Нужен более системный подход (как например тот, который я описывал), иначе дальше оно станет ещё сложнее и отладить его будет просто невозможно. Всё возможно, конечно, но никто не возьмётся за такое в здравом уме :) Поэтому в программировании очень важно всё упрощать до предела и унифицировать. Чтобы было читабельнее и проще понимать код.

Ещё неплохо бы описывать логику поэтапно, что ты делаешь в алгоритме - как нам тут будет проще понять правильно ли ты мыслил при реализации алгоритма, так и тебе будет проще найти ошибку в собственном алгоритме :)

Лучше унифицировать всё как можно сильнее и упрощать, иначе проект быстро в тупик зайдёт и остановится, как обычно с крупными проектами и бывает, потому что не продумали наперёд, что их решение не работало на расширение, а работало только в текущем локальном случае :)

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

По поводу того, что на дистанции один игрок всегда обыгрывает другого - какая там статистика получается? (как дистанция и какое количество выигрышей)
Аватара пользователя
Пользователь
Сообщения: 176
Дошёл до создания стритов и встрял. Просто не вижу логики в построении нахождения стрита.
Пока думаю так: если карта1 = карта2 = карта3, то стрит. Но ведь вручную задавать все комбинации стритов - это же безумие. Нужен алгоритм дургой. Например - берём три карты, нахоидм из них самую старшую по рангу и вычитаем по -1 из неё. Если есть карта младше старшей на -1, то что то делаем, не знаю что. Далее из второй также деаем -1, и если есть такая, то опять действие. Далее записываем, что у нас уже стрит. Но как это реализовать ума не приложу. Сейчас сижу думаю.
Аватара пользователя
Пользователь
Сообщения: 244
yellyex писал(а):
Дошёл до создания стритов и встрял. Просто не вижу логики в построении нахождения стрита.
Пока думаю так: если карта1 = карта2 = карта3, то стрит. Но ведь вручную задавать все комбинации стритов - это же безумие. Нужен алгоритм дургой. Например - берём три карты, нахоидм из них самую старшую по рангу и вычитаем по -1 из неё. Если есть карта младше старшей на -1, то что то делаем, не знаю что. Далее из второй также деаем -1, и если есть такая, то опять действие. Далее записываем, что у нас уже стрит. Но как это реализовать ума не приложу. Сейчас сижу думаю.

Уже объяснил в скайпе по этой теме, но могу вкратце ещё раз рассказать алгоритм, кому интересно будет:

Варианта два. С использованием промежуточного массива и без него.
1. С массивом: Скидываем все нужные карты для определения в массив и делаем сортировку по возрастанию/убыванию. Потом проходимся циклом по массиву от 0 до предпоследнего элемента, проверяя на каждом шаге, чтобы последующий элементы был == текущему значению + 1 (либо аналогично, но -1, если сортировали по убыванию). Если на одном из шагов условие равенства не выполнилось - последовательность нарушена.

2. Без массива: Бегаем в несколько проходов по всем нужным картам (борд + рука). На каждом проходе выполняем следующие действия (для проверки возрастающей последовательности):
2.1. Находим минимальное число
2.2. Прибавляем единицу и убеждаемся, что оно есть среди проверяемых карт. Параллельно инкрементируем счётчик "подходящих карт" (возрастающих на единицу)
2.3. После того как со всеми картами просчёт закончен (либо нарушено условие и цикл был остановлен) - проверяем наш счётчик. Если он == 5 - значит это стрит.

Недостаток второго метода: множественные проходы по картам, которые уже просчитаны (множественные пустые действия), что не очень хорошо для производительности алгоритма. Но не критично, цикл из 5 проверок, всего лишь, состоит. Думаю это лучшее решение, т.к. в первом решении приходиться выполнять сортировку, что более нагруженно для ЦП, но проще для понимания, т.к. во втором случае прийдётся добавить ещё и промежуточное условие прыжка по колоде. Я бы предпочёл первое решение, как достаточное соотношение прозрачности решения и приемлемой производительности.
Аватара пользователя
Пользователь
Сообщения: 176
Не всё так просто! :) Я сделал логику полного перебора и то не работает! :)
Аватара пользователя
Пользователь
Сообщения: 244
yellyex писал(а):
Не всё так просто! :) Я сделал логику полного перебора и то не работает! :)

Опиши, что ты перебирал и зачем - может в самой логике трабла :)
Аватара пользователя
Пользователь
Сообщения: 176
Я бы мог показать тебе код в скайпе, так как он большой, и если бы ты его почаще проверял, чем раз в сутки :)))))) Ну или в чат заглядывай, я там постоянно.
Аватара пользователя
Пользователь
Сообщения: 244
yellyex писал(а):
Я бы мог показать тебе код в скайпе, так как он большой, и если бы ты его почаще проверял, чем раз в сутки :)))))) Ну или в чат заглядывай, я там постоянно.

Да показывай тут, для разработки этого проекта ты же и создавал эту тему :)
Аватара пользователя
Пользователь
Сообщения: 176
Изображение

В массив я добавил первую и вторую карты игрока 1. Если карты 1 и 2 или 2 и 1, то записываем победу (мини версия). Я не понимаю, как работать с лупами. Я вообще представления не имею, как там и что за что отвечает. Индексы, значения и так далее. Что дальше делать? :)


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница