Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Post your project for free and start receiving proposals from freelancers within minutes after publication!

Гра 2048


Applications 7

Application viewing is only available registered users.
  1. 92  
    5 days45 USD

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

  2. 245    17  0
    3 days34 USD

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

  3. 623    13  0
    1 day54 USD

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

  4. Another 2 proposals concealed
  • Sergey Nazarenko
    30 March 2019, 22:34 |

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

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

  • Nataliia Leshko
    31 March 2019, 10:04 |

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

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

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


  • Sergey Nazarenko
    31 March 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%" и т.п.

  • Sergey Nazarenko
    31 March 2019, 10:53 |

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

  • Profile blocked
    31 March 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", потому что нужно же с чего-то начинать, верно?
    давай вместе проанализируем это. ПЕРЕД твоим первым ходом у тебя уже есть тайл, с которым ты будешь работать. а это значит, что как только ты сделаешь ход, нужно добавлять новый тайл на рандомную свободную позицию, если такая есть, для дальнейшей игры.

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

  • Sergey Nazarenko
    31 March 2019, 15:09 |

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


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


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

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

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

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


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

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


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

  • Profile blocked
    30 March 2019, 23:50 |

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

  • Sergey Nazarenko
    31 March 2019, 0:25 |

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

Current freelance projects in the category C & C++

Residential Proxy Infrastructure Engineer

We're building a residential proxy network from scratch — fully owned, no third-party suppliers. We need one exceptional network engineer to build the entire technical foundation. What you'll build: - Android background SDK that routes proxy traffic through user devices…

C & C++DevOps ∙ 3 days 23 hours back ∙ 13 proposals

Improvement in the existing version of 1C retail block for the distribution center (DC)

In general, I will explain what kind of database we have - There is a main server where there is a retail database (where all receipts are recorded) - a UTP database - where all sales are transferred - it calculates the markup and stock balances - small databases of retail…

C & C++C# ∙ 4 days 14 hours back ∙ 6 proposals

About the Master Program "KONSTRUCTOR"

4182 USD

We are looking for a very experienced C++ developer to modernize existing software (master program). The program is responsible for creating derivative software representing audio-visual sessions of psychological correction. The current version is written in pure WinAPI (Visual…

C & C++Desktop Apps ∙ 9 days 17 hours back ∙ 19 proposals

Writing code for Arduino

It is necessary to develop software for a weight dispenser based on Arduino Uno. Components: Arduino Uno R3 HX711 + load cell LCD1602 I2C display MAX7219 LED matrix 8x32 5 control buttons 4-channel relay 2 signal lamps Coarse dosing vibrator Precise dosing vibrator Operation…

C & C++Embedded Systems & Microcontrollers ∙ 11 days 2 hours back ∙ 15 proposals

It is necessary to complete the project or provide consultation.

23 USD

It is necessary to expand the translation options in this code https://github.com/phuc-nt/my-translator Who can take on the job, please write the deadlines and the amount Robot answer: robots.txt

C & C++Python ∙ 11 days 2 hours back ∙ 20 proposals

Client
Nataliia Leshko
Ukraine Velikii Bereznyi
Project published
7 years back
228 views