|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
Написать игру, в которой главный герой ходит по лабиринту и ищет клад12.10.2021, 14:08. Показов 20167. Ответов 130
Нужна помощь по решению задачи.
Задача крайне непосильна для меня. Я был бы признателен если вы мне поможете, но если честно то крайне стыдно просить помощи. Вот текст задачи: "Написать игру, в которой главный герой ходит по лабиринту и ищет клад. Игровой мир представляет собой прямоугольную матрицу связанных между собой комнат. У каждой комнаты есть от одной до четырёх дверей (соответствующих сторонам света). В каждой комнате может быть несколько игровых объектов, с которыми игрок может взаимодействовать по некоторым игровым правилам. Цель – найти ключ и сундук, открыть сундук ключом и получить священный Грааль. Игра выполнена в виде консольного приложения, игрок управляет персонажем, вводя текстовые команды." Детальное описание хода игры. Сначала игрок вводит количество комнат, и программа генерирует лабиринт. Игрок оказывается в одной из комнат лабиринта. При попадании в каждую комнату выводится текст: You are in the room [x,y]. There are [N] doors: [directions]. Items in the room: [items list]. Вместо текста в квадратных скобках выводятся, соответственно, координаты комнаты, количество дверей, направления дверей и список предметов в комнате. После этого игроку предлагается ввести команды: — N, S, W и E перемещают игрока в соответствующем направлении; — get [item] поднимает предмет в комнате и кладет его в инвентарь (кроме сундука); — drop [item] бросает предмет в комнате, убирая его из инвентаря. К объекту chest можно применить команду open, которая сработает только в том случае, если в инвентаре игрока есть объект key. Удачное выполнение этой команды приведет к выигрышу. Проигрыш происходит в случае, когда у игрока кончается лимит шагов, и он умирает от голода в мрачных застенках драконьей пещеры. В дополнительных заданиях понятия «жизненная сила», «здоровье» и «лимит шагов» по сути означают одно и то же. Важно: лабиринт не должен быть непроходимым. Не должно быть ситуаций, когда ключ или сундук находятся в изолированной от игрока части лабиринта, или путь из начальной позиции до ключа и сундука больше лимита шагов. Надеюсь на вашу понимание. Есть ещё дополнительные , но можно и без них обойтись.
0
|
|
| 12.10.2021, 14:08 | |
|
Ответы с готовыми решениями:
130
Мы создаем игру, в которой главный герой маг. Он может убивать монстров заклинаниями, но для каждого монстра треб Андрей играет в новую игру, в которой герой сражается с монстрами Вы пишете игру, в которой герой перемещается по экрану только влево и вправо |
|
Just Do It!
|
||
| 22.10.2021, 14:34 | ||
|
их там много таких - запоминать не надо - надо просто знать, что там такое барахло есть. Добавлено через 5 минут Forest155, в нашей декомпозированной композиции не хватает кое-что. сразу я не увидел, но не хватает самого важного объекта. Напишите мне - какого? для этого С++ не нужен, но возможно понадобится представить сам процесс игры.
0
|
||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 23.10.2021, 12:03 [ТС] | |
|
В целом как мне кажется что игра есть, но игрок как таковой отсутствует.
Ну это первая моя мысль, сейчас надо углубиться. Получается в графическом движке будет вся визуализация проекта, лабиринт и прочее. В интерфейсе появится выбор размера лабиринта и после ввода данных соответственного его генерация. В то же время, по идее должны генерироваться комнаты с предметами и дверьми. Но лабиринт должен генерироваться так чтобы его можно было 100 % пройти и ещё нет условия победы в объектах, тоже довольно важно, или же можно в объект Game добавить. Соответственно появляется игрок, и получается всё таки объект игрока нужен, игрок делает выбор и у него должен быть инвентарь. Делая выбор игрок решает забрать предмет или же пойти в другую комнату, а ещё применить предмет, до тех пор пока не будет выполнено условие победы. Если игрок побеждает то выведется надпись, УРАА ТЫ ПОБЕДИЛ. Сложно сказать что именно самое важное когда по сути всё важно, без лабиринта не будет игры да и без интерфейса тоже навряд ли , как я понял. Пока пишу это сообщение я понимаю что ни в чём не уверен, но очень надеюсь что хотя бы мысли идут в правильном направление.
1
|
|
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 24.10.2021, 11:05 [ТС] | |
|
Писать понятный код, без усложнений , тоесть писать не очень большой код и разделять его на части, для доступности.
0
|
|
|
Just Do It!
|
||
| 24.10.2021, 11:25 | ||
|
Макконелл там озвучивает существование в проектировании двух разных разновидностей свойств(или полей класса) объектов. - существенные - несущественные напишите мне разницу между ними. почему я об этом спрашиваю
Forest155, я не пытаюсь вас троллить и не буду пытаться.
Важно, что когда вы тянете тяжёлую(или даже лёгкую) телегу прожекта, то ваши ноги должны упираться в нечто твёрдое, незыблемое, постоянное. это наша та "Точка старта". я хочу, чтобы ваши ноги на чём то стояли, для того чтобы вы не висели в воздухе, а могли тянуть телегу...
0
|
||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 24.10.2021, 13:47 [ТС] | |
|
Если честно то у меня даже мысли не было, что меня троллят.
Я почитал две главы книги и они мне показались очень полезными , захотел всю книгу прочесть. Да и вообще я в шоке что вы мне помогаете. Мне казалось что по идеи никто никогда не должен помогать впринципе. Поэтому я вам искренне благодарен. Точно там было про существенные и несущественные свойства. Существенные относятся к частям объекта без которых данный объект не объект. В голове появилась мысль об карандаше, то что без стержня карандаш не карандаш вовсе, да и один стержень по сути тоже не является каранашом. Хотя в книге пример про машины , но мне кажется что машина без дверей тоже вроде как машина, только дверей нет. Несущественный свойства всё остальное, пример снова про карандаш. Вот есть карандашик а к нему ещё ластик приделали, без ластика карандаш так и останется карандашом, ничего не поменяться. Признаюсь чтобы точно ответить на этот вопрос, пришлось перечитать 74 страницу. Добавлено через 6 минут До прочтения страницы я думал существенный важны, а несущественные наоборот , тоесть неважные. Впринципе вроде тоже самое, но очень упрощённо.
1
|
|
|
Just Do It!
|
|||||||
| 24.10.2021, 14:33 | |||||||
|
НО, давайте щас сделаем такую общую установку: НАПОЛНЯЕМ НАШ СКЕЛЕТ ПРОЖЕКТА СВОЙСТВАМИ ТАК, ЧТОБЫ ПОЛУЧИТЬ МИНИМАЛЬНО РАБОЧИЙ ПРОЕКТ. ключевые слова: "МИНИМАЛЬНО " и "РАБОЧИЙ ". Для этого(да и в любом случае) нам понадобятся функции ОБЩЕГО назначения. Их надо будет куда то складировать. предлагаю завести для них свой namespace mylib. На вскидку первая такая функция: функция получения случайного числа: тут тест отдельно от проекта:
1. что такое тут sid и зачем он может быть нужен и пригодится ли он нам? 2. создайте массив рандомного размера и заполните его рандомными целыми числами из рандомного диапазона. (продолжение следует ...)
0
|
|||||||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 24.10.2021, 20:13 [ТС] | |
|
Надеюсь что всё правильно.
1. sid это параметр перегрузки. unsigned sid означает что класс принимает целые числа, не отрицательные. 2. Я пока не понял как сделать, продолжу позже.
0
|
|
|
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
|
|
| 25.10.2021, 11:42 | |
|
2
|
|
|
Just Do It!
|
||
| 25.10.2021, 12:39 | ||
|
я проверил как оно ищется: третья ссылка снизу - там всё расписано ИДЕАЛЬНО. можно и не гуглить, а сделать серию экспериментов с моим примером, который выше, что бы внятно объяснить влияние сида на рандом. и цель вопроса, как раз, получение личного опыта.
1
|
||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 27.10.2021, 13:41 [ТС] | |
|
Извините что так долго отсутствовал.
Почему-то мне не удаётся запустить код, компилятор ругается на 19 строчку. Пишет что всторенный спецификатор можно использовать только в объявлении функции, но в функции он тоже почему-то не хочет работать. Я прочитал про генерацию случайный чисел, но так и не понят что значит seed. В других источниках пишется что seed используется рандомной генерации рандомных чисел.
0
|
|
|
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
|
||||||||
| 27.10.2021, 14:26 | ||||||||
|
ЗЫ: хот-фикс генератора в строку №14:
0
|
||||||||
|
Just Do It!
|
|||||||||||||
| 27.10.2021, 17:17 | |||||||||||||
в том числе и в виде вашего фикса, например, тут (строка 21): https://www.cyberforum.ru/post15453880.html Почему я "выкинул" ваш фикс? Это я сделал исключительно в целях "мелкой оптимизации": 1. удобно рандомно обращаться к массиву по рандомному индексу. 2. меньше кода(не надо в функции прибавлять единицу + в вызове не надо отнимать единицу). 3. а зам код быстрее. вообщем, спасибо, но ваш фикс не нужен, потому что, просто, он вреден. я не буду щас уточнять. Проверьте какой у вас щас настроен стандарт С++ Нужен С++17 напишите так:
Добавлено через 5 минут Forest155, напишите какой у вас редактор кода???
0
|
|||||||||||||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
||||||
| 27.10.2021, 17:57 [ТС] | ||||||
|
Annemesski, да спасибо, оказывается у меня был стандарт С ++ 14, а не 17 вот и ошибка появлялась.
Чтож в следующий раз постараюсь не забыть указать какой именно код. А ещё я только щас понял что значит хот-фикс. Пробовал сделал полностью рандомный массив, вообще не получается. Я понимаю но не понимаю что я делаю. Вот мой код и мне кажется он плох, не радномный вообще.
Чот код не очень, не рекомендую смотреть.
0
|
||||||
|
Just Do It!
|
|||||||||
| 27.10.2021, 19:26 | |||||||||
|
Лабиринт мы пишем на С++! Си-шкокод оставим ембеддид-кодерам!
Добавлено через 3 минуты Щас нужно: понять, что такое сид в рандоме. Общая теория: 1. Программирование это манипуляция с данными. 2. Данные это константы и переменные ИНИЦИАЛИЗИРОВАННЫЕ заданным значениями. 3. Для инициализации данных используются конструкторы. 4. Перед использованием рандома этот рандом должен быть инициализирован! 5. Рандом инициализируется неким заданным числом, которое называется сид. Вопросы: 1. Где взять такое число. 2. Что будет с поведением рандома, если такое число константа? 3. А как получить рандомный сид, если сам рандом у нас ещё не готов к работе? Добавлено через 2 минуты ПРАВИЛЬНО РАССТАВЛЯТЬ ПРИОРИТЕТЫ. ПРИОРИТЕТЫ это, например, при пожаре вы не спасаете домашние тапочки, а в первую очередь выносите из пожара людей без сознания? Если людей нет, а пожар у вас, то наверно документы и комп с жесткими дисками? Верно? Нарушение приоритетов называется ПРОКРАСТИНАЦИЕЙ. часто люди это делают сознательно, поэтому это есть серьезная психологическая проблема, выражающаяся в ОТСУТСТВИИ полезного конечного результата.
0
|
|||||||||
|
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
|
||
| 27.10.2021, 22:28 | ||
|
XLAT, не нужен так не нужен (не продаю же
) просто в генераторах привычнее работать с range[ ], хотя согласен что range[ ) удобнее для рандомизации индексов.Forest155,
1
|
||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 29.10.2021, 14:56 [ТС] | |
|
Ответ первый.
1.Сид должен создаваться всегда рандомным, иначе результат будет повторятся. Можно использовать величину которая изменяется постоянно, то есть время. 2. Константная переменная не меняется, то есть как я понимаю рандома не произойдёт. Скорее всего ошибка выскочит. 3. Вроде нельзя. Думал какой код добавить, но скорее всего его надо разбирать. Сегодня перед сном посмотрю.
0
|
|
|
Just Do It!
|
|||||||
| 30.10.2021, 10:36 | |||||||
|
делаем его величество ЭКСПЕРИМЕНТ:
и теперь что вы видите? Forest155, пока вы не начнете делать эксперименты через написание вами тестов дальше мы не двинемся....
1
|
|||||||
|
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
|
|
| 21.11.2021, 16:22 [ТС] | |
|
Меня не было месяц, нет слов. Никакие извинения не вернут потраченное в пустую время.
Я пытался сделать экспиримент но ничего не получалось, возможно я либо не умею либо боюсь просто напросто. Но сейчас начал заниматся по книжке и понемного меняю код, смотрю что будет. Спасибо ещё раз, то с чем вы поделились просто невероятно полезно, который раз в этом убеждаюсь.
0
|
|
| 21.11.2021, 16:22 | |
|
Вы пишете игру, в которой герой перемещается по экрану только влево и вправо, а его положение записывают как положение н Главный герой застревает в препятствиях Сделать так, чтобы главный герой не проходил сквозь некоторые спрайты C++ Написать игру в которой имитируется бросание кубиков
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|