Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!

Гра 2048


Приложения 7

Просмотр приложений доступен только зарегистрированным пользователям.
  1. 92  
    5 дней2000 UAH

    Здравствуйте. Готов сделать ваш проект на WPF(C#), также могу сделать и консольный вариант.

  2. 245    17  0
    3 дня1500 UAH

    Доброго дня!
    Виконаю швидко і якісно.
    Звертайтеся, буду радий допомогти.

  3. 623    13  0
    1 день2400 UAH

    Здравствуйте, Наталья.
    Могу сделать с текстовым интерфейсом (в консоли), в соответствии с предложенной в задании архитектурой.
    Там работы от силы на день, но сделать смогу только к 6-8 апреля (возможно и раньше, но маловероятно).
    Есть несколько уточняющих вопросов (см. Обсуждение), которые можно в личке обсудить. Там же (в личке) можно обсудить стоимость и способы оплаты (если предложенные в Ставке Вас не устраивают).

  4. Еще 2 ставки скрыты
  • Сергей Назаренко
    30 марта 2019, 22:34 |

    Вопросы:
    1. Не понятно откуда будуть браться имена игроков? Что-то я об этом в описании не заметил никакой информации. Имя игрока будет задаваться при входе в игру? Или перед внесением его в "Зал славы" запрашивать (как обычно в играх делали раньше)?
    2. На третьем скрине не понятно почему комбинация BAA при ходе вправо дает BB, а не С? Ведь сначала правая А падает до упора. Затем следующая А падает на нее и дает B. Затем левая B падает на нее и должна получиться C. А в примере не так. Можно более подробно расписать алгоритм перемещения и схлопывания букв?

    3. Не понятно в какой момент должна вызываться функция add_random_tile()?

  • Наталія Лешко
    31 марта 2019, 10:04 |

    1.Ім'я гравця добавляємо перед додаванням до "Залу слави".

    2.Показано тільки на прикладі букв А, якби продовжити гру, дійсно б вийшло С.

    3.Функція визивається, коли на місці пустої плитки повинна з'явитися "А" або "Б" .


  • Сергей Назаренко
    31 марта 2019, 10:51 |

    1. Т.е. имя игрока запрашивается изнутри функции save()? Я правильно понимаю?
    Переспрашиваю, т.к. архитектура решения получается некрасивая. Красивее было бы отдельной функцией проверить заслуживает ли игрок попадания в "Зал славы", и если заслуживает, то уже тогда у него запрашивается имя и без всяких проверок функцией save() он туда заносится. А так получается, что функция save() нагружается не совсем нужной ей функциональностью.
    Но это уже тонкости архитектуры. Я так понимаю, что задачу нужно выполнять в рамках имеющейся архитектуры. Поэтому и уточняю, чтобы понимать, что Архитектор понимал, что он проектировал.


    2. Вы так ничего и не объяснили - просто отписку бессмысленную бросили.
    Я не понимаю механику хода.
    Допустим, что все так, как Вы говорите - первая буква схлопывается, а остальные ждут следующего хода.
    Т.е. в примере BAA, при ходе вправо, правая буква A падает на стенку, следующая буква A схлопывается с ней, давая B, а следующая B падает на уже схлопнутую B, но не схлопывается с ней, т.к. ждет следующего хода. В результате получается BB.
    Но ведь есть еще и другой пример. AAAA, при ходе вправо, правая буква A остается возле стеночки, следующая буква A падает на нее и схлопывается, давая букву B, следующая буква A, падает на схлопнутую букву B, но не схлопывается с ней, т.к. это разные буквы, а последняя буква A, падает на предыдущую букву A, но почему-то не ждет следующего хода, как в предыдущем примере, а схлопывается давая в результате комбинацию BB.
    Причем, почему ход заканчивается на BB, без дальнейшего схлопывания - понятно - потому что уже никто ни на кого не падает, соответственно, все ждут следующего хода.
    А вот, почему в предыдущем примере буква B, упавшая на букву B, не схлопывается - мне не понятно.


    3. Такая же бессмысленная отписка. "Для чего" она вызывается - я понимаю. В задании нигде не сказано "Откуда" она вызывается? В какой момент игры?
    Например, "перед каждым ходом", "после окончания каждого хода", "после окончания хода, с вероятностью 10%" и т.п.

  • Сергей Назаренко
    31 марта 2019, 10:53 |

    Простите, в предыдущем сообщении в п.1 вместо функции save() нужно читать функция add_player().
    Опечатался 🙂

  • Профиль заблокирован
    31 марта 2019, 12:41 |

    О ГОСПОДИ, та ну, серьезно?
    сергей, поскольку мои "предположения" (я прекрасно понимал, что это и есть правильные ответы на твои вопросы, а не предположения) оказались верными, осмелюсь ответить и на эти. но можешь их не читать, нет, можешь подождать ответов заказчика. они то более информативны для тебя будут, надеюсь. так вот:

    1. учитывая опечатку add_player() => save(), ты спрашиваешь, верно ли, что имя игрока запрашивать функцией add_player()?
    ну конечно же неверно, почему ты не можешь просто прочитать внимательно ТЗ? для кого оно написано?
    там же чётко сказано, что при вызове функции add_player() в неё передаются 3 аргумента, третий из которых - объект структуры player, в котором уже хранится имя. даже 7-ой скриншот тебе говорит - посмотри внимательно, сергей, когда будешь программировать, сделай сначала такой объект, инициализируй имя, пожалуйста, а потом этот объект передай в add_player().
    а чтоб понимать что Архитектор понимал, что он проектировал - просто перечитай внимательно несколько раз ТЗ, вдумайся, нарисуй себе блок-схему, если так сложно всё даётся, можешь друзей на помощь позвать, вместе может и получится разгадать все аспекты этого задания.
    ты задаёшь вопросы, ответы на которые уже есть. так не нужно делать, заказчик не должен ничего тебе предоставлять, кроме подробного ТЗ, а здесь оно одно из самых лучших и детальных, что я видел на этом сайте. или ты думаешь, что все заказчики очень рады от того, что им задают столько ненужных вопросов?

    2. ты возмущаешься, что тебе ничего не объяснили, а сделали бессмысленную отписку? то, что ты не понимаешь механику хода, не значит, что заказчик плохо объяснил, может дело всё же в тебе? тебе же даже примеры и всю конструкцию проекта преподнесли.
    по моему мнению, всё предельно прозрачно. смотри, на начало хода у тебя есть буквы "B", "A" и "A". супер. ты делаешь ход, при котором "A" и "A" соединяются, потому что они обе были на поле ДО начала хода. в ходе нехитрых манипуляций, образуется буква "B". в это же время в неё "ударяется" вторая буква "B", которая была до начала хода, но эта "новая" буква "B" образовалась в результате хода, по-этому она не может принимать участие в формировании новой буквы до начала следующего хода. таким образом у тебя и получаются две буквы "B" рядом, но никак не буква "C". её уже можно будет сделать со следующим ходом, потому что обе они будут существовать ДО начала хода.
    аналогично обстоит ситуация и с "A""A""A""A"-примером. две буквы "B", которые возникнут В РЕЗУЛЬТАТЕ твоего хода, никак не смогут сделать "C" до начала нового хода.

    3. аналогично, просто очередной бессмысленный вопрос. сергей, стране нужны хорошие программисты с умением глубоко вникать в поставленную им задачу и думать немного самим, а не ждать, когда им абсолютно всё распишут и нарисуют (что, кстати говоря, сделано в ТЗ), а тогда уже они приступят к делу.
    представим ситуацию - запуск игры. к слову, ты не задал вопрос о том, что должно быть на игровом поле в начале игры, это меня удивило. неужели знаешь?
    если да - ответ напрашивается сам собой. в начале игры уже должен быть тайл с буквой "A" или "B", потому что нужно же с чего-то начинать, верно?
    давай вместе проанализируем это. ПЕРЕД твоим первым ходом у тебя уже есть тайл, с которым ты будешь работать. а это значит, что как только ты сделаешь ход, нужно добавлять новый тайл на рандомную свободную позицию, если такая есть, для дальнейшей игры.

    имхо, это всё можно было бы спокойно вынести из ТЗ, подробно его прочитав и хорошо вникнув.

  • Сергей Назаренко
    31 марта 2019, 15:09 |

    Дмитрий. Вот Вы такой умный, что аж жуть. Текста много написали.  А на вопросы так и не ответили.


    1. Так где же все-таки запрашивается имя пользователя? Мне кажется странным в конце игры запрашивать имя пользователя, если оно не будет добавлено в "Зал славы". А если запрашивать уже после проверки, которая внутри add_player(), то все-таки получается, что запрашивать нужно внутри add_player().


    2. ТЗ я как раз читал внимательно, в отличие от Вас.
    Цитирую:
    "Якщо можна пересуватися, всі плитки переміщуються в заданому напрямку, наскільки це можливо. Їх можна зупинити інша плитка або край ігрового поля.

    Якщо  дві плитки з однаковою буквою при перетягуванні  зустрінуться(доткнуться), утвориться наступна буква в порядку алфавіту

    "
    Т.е. плитки двигаются, и в моменты соударения "скрещиваются" в плитки более высокого уровня.
    В описании нет ни слова о том, что плитки сначала "скрещиваются", а потом результат двигается в указанном направлении.

    И при этом, примеры не соответствуют описанию.


    3.  То, что функцию add_random_tile() хорошо бы вызвать перед первым ходом - логично. Хотя тут тоже могут быть нюансы. Сколько раз ее нужно вызвать перед первым ходом? А между ходами ее можно вызывать всегда (сколько раз?) или с определенной вероятностью.

    Именно с уточнением этого момента, а также, с сокращением поля вариантов задания, и был связан мой вопрос.


    Т.к. принятие решений за заказчика увеличивает риски переделок, то такая стратегия увеличивает стоимость проекта. Если же максимально выяснить все нюансы ДО начала работ (этот этап на серьезных проектах называется "Сбор требований"), то итоговая стоимость работ существенно снизится (а еще существенно увеличится вероятность успешности проекта).
    Странно, что мне приходится объяснять прописные истины такому матерому и опытному программисту, как Вы, Дмитрий.

  • Профиль заблокирован
    30 марта 2019, 23:50 |

    сергей, предполагаю, что примерно так:
    1. да, запрашивать перед добавлением, если оно будет осуществимо (логично, ведь до того момента имя не понадобится).
    2. был сделан только один мув, по-этому буквы A и A соединились вместе в B, а со следующим мувом вправо либо влево эти две B дали бы C. поиграй немного в 2048, как указанно в названии проекта, а потом уже задавай вопросы. здесь ведь аналогичная игра)
    3. опять же - поиграй в 2048 и всё поймешь. после того, как ты сделал мув в какую-то сторону и все одинаковые буквы соединились - добавляется новый тайл на рандомную свободную клетку, если такая есть. эх, похоже придётся делать ставку)

  • Сергей Назаренко
    31 марта 2019, 0:25 |

    У меня есть предположения по поводу "правильных" ответов на мои вопросы. Мне хотелось бы услышать эти ответы от Заказчика.

Актуальные фриланс-проекты в категории C и C++

Инженер по инфраструктуре резидентных прокси

Мы строим сеть резидентных прокси с нуля — полностью собственную, без сторонних поставщиков. Нам нужен один исключительный сетевой инженер для создания всей технической базы. Что вы будете строить: - Android SDK для фонового использования, который направляет прокси-трафик через…

C и C++DevOps ∙ 2 дня 20 часов назад ∙ 12 ставок

Добробка в существующей версии 1с розница блока для РЦ(распределительного центра)

В общем поясню, что у нас за база - есть общий сервер, где есть база Розница (где ставятся все приходы) - база УТП, куда переливаются все продажи - считается наценка, остатки по складам - маленькие базы розничных магазинов. По обменам у нас магазины обмениваются с базой Розница…

C и C++C# ∙ 3 дня 11 часов назад ∙ 6 ставок

ПО Мастер-программа «KONSTRUCTOR»

185 977 UAH

Мы ищем очень опытного C++ разработчика для модернизации существующего ПО (мастер-программы). Программа отвечает за создание производного ПО представляющего аудио-визуальные сеансы психологической коррекции. Текущая версия написана на чистом WinAPI (Visual Studio 2019/2022).…

C и C++Десктопные приложения ∙ 8 дней 14 часов назад ∙ 19 ставок

Написание кода для Arduino

Необходимо разработать программное обеспечение для весового дозатора на базе Arduino Uno. Комплектующие: Arduino Uno R3 HX711 + тензодатчик LCD1602 I2C дисплей MAX7219 светодиодная матрица 8x32 5 кнопок управления 4-канальное реле 2 сигнальные лампы Вибромагнит грубого…

C и C++Встраиваемые системы и микроконтроллеры ∙ 9 дней 23 часа назад ∙ 15 ставок

Нужно доработать проект или предоставить консультацию.

1000 UAH

Необходимо расширить варианты перевода в данном коде https://github.com/phuc-nt/my-translator Кто может взяться за работу, пишите сроки и сумму Robot answer: robots.txt

C и C++Python ∙ 9 дней 23 часа назад ∙ 20 ставок

Заказчик
Наталія Лешко
Украина Великий Березный
Проект опубликован
7 лет назад
228 просмотров