Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Opublikuj swoje zlecenie za darmo i otrzymaj oferty od wykonawców freelancerów już minutę po opublikowaniu!

Гра 2048


Załączniki 7

Wgląd do aplikacji jest dostępny tylko zarejestrowanym użytkownikom.
  1. 92  
    5 dni164 PLN

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

  2. 245    17  0
    3 dni123 PLN

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

  3. 623    13  0
    1 dzień197 PLN

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

  4. Jeszcze 2 ofert jest ukrytych
  • Sergey Nazarenko
    30 marca 2019, 22:34 |

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

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

  • Nataliia Leshko
    31 marca 2019, 10:04 |

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

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

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


  • Sergey Nazarenko
    31 marca 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 marca 2019, 10:53 |

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

  • Profil został zablokowany
    31 marca 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 marca 2019, 15:09 |

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


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


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

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

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

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


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

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


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

  • Profil został zablokowany
    30 marca 2019, 23:50 |

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

  • Sergey Nazarenko
    31 marca 2019, 0:25 |

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

Aktualne zlecenia dla freelancerów w kategorii C i C++

Inżynier infrastruktury proxy mieszkalnych

Budujemy sieć proxy dla użytkowników od podstaw — w pełni własną, bez dostawców zewnętrznych. Potrzebujemy jednego wyjątkowego inżyniera sieci, który zbuduje całą podstawę techniczną. Co zbudujesz: - SDK w tle dla Androida, które kieruje ruch proxy przez urządzenia użytkowników…

C i C++DevOps ∙ 3 dni 4 godziny temu ∙ 12 ofert

Dobrobka w istniejącej wersji 1c detalicznego bloku dla RC (centrum dystrybucji)

Ogólnie wyjaśnię, co mamy za bazę - jest ogólny serwer, gdzie znajduje się baza Detal (gdzie rejestrowane są wszystkie przychody) - baza UTP, do której przelewają się wszystkie sprzedaże - liczy się marża, stany magazynowe - małe bazy detalicznych sklepów. W przypadku wymian,…

C i C++C# ∙ 3 dni 19 godzin temu ∙ 6 ofert

Mistrzowska program «KONSTRUCTOR»

15 238 PLN

Szukamy bardzo doświadczonego programisty C++ do modernizacji istniejącego oprogramowania (programu głównego). Program odpowiada za tworzenie pochodnego oprogramowania reprezentującego sesje audiowizualnej korekcji psychologicznej. Obecna wersja jest napisana w czystym WinAPI…

C i C++Aplikacje desktopowe ∙ 8 dni 22 godziny temu ∙ 19 ofert

Pisanie kodu dla Arduino

Potrzebne jest opracowanie oprogramowania dla wagowego dozownika opartego na Arduino Uno. Komponenty: Arduino Uno R3 HX711 + czujnik tensometryczny Wyświetlacz LCD1602 I2C Matryca LED MAX7219 8x32 5 przycisków sterujących 4-kanałowe przekaźniki 2 lampy sygnalizacyjne Wibromagnes…

C i C++Systemy wbudowane i mikrokontrolery ∙ 10 dni 7 godzin temu ∙ 15 ofert

Trzeba dokończyć projekt lub udzielić konsultacji.

82 PLN

Potrzebne jest rozszerzenie opcji tłumaczenia w tym kodzie https://github.com/phuc-nt/my-translator Kto może podjąć się pracy, proszę pisać terminy i kwotę Odpowiedź robota: robots.txt

C i C++Python ∙ 10 dni 7 godzin temu ∙ 20 ofert

Zleceniodawca
Nataliia Leshko
Ukraina Wielkie Berezny
Zlecenie zostało opublikowane
7 lat temu
228 wyświetleń