Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для Pahanuch
328 / 163 / 89
Регистрация: 03.11.2010
Сообщений: 920

Игра "Трубопровод". Как сделать проверку трубопровода на связность

25.08.2012, 18:21. Показов 2561. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пишу игру "Трубопровод (Ветка)". Игра будет консольная. Имеется два вопроса.

Первый вопрос: Нужно чтобы программа проверяла возможна ли данная расстановка труб на поле, т.е. сможет ли игрок собрать трубопровод. Как сделать такую проверку?

Второй вопрос: Проверка на связность труб. Как проверить подходят трубы друг к другу, или нет? Предполагаю, что для каждого элемента нужно прописывать всевозможные комбинации его соседей. Но, мне кажется, что это будет как-то громоздко. Возможно ли как-то проще сделать?

Описание игры:
На экране представлено игровое поле, на котором расположены угловые элементы вида: ┌, └, ┘ , ┐, –, |,+, и др. Задача игрока - за минимальное число вращений этих элементов составить из них единую линию.
Пример игры: http://home.earthlink.net/~tdg... pegame.htm.

Добавлено через 2 часа 19 минут
Никто не может подсказать ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.08.2012, 18:21
Ответы с готовыми решениями:

Игра "Трубопровод": как сделать разъединение труб
Добрый день. Пишу игру Трубопровод. http://home.earthlink.net/~tdglenn/unicorn/pipegame.htm. Не получается сделать разъединение труб. Т.е....

как сделать проверку выиграша и переход на новую игру(игра крестики нолики на батонах) Прогу выложыл в архиве
помогите кто может

Как сделать проверку на пустую строку и проверку что в слове нет повторяющихся букв
string r; string word; int output; Console.Write("Введите слово : "); ...

4
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
25.08.2012, 20:01
Отвечаю в меру своих умственных способностей:
Первый вопрос:
Если, это следствие из вопроса о том как сгенерировать игровое поле, то по-моему составить уже "соединеное" поле и потом "поворачивать" клетки легче. Впрочем ни как составить "соединеное" поле, ни ответить на первый вопрос не могу. Т.е. могу предложить вариант тупо перебирающий все варианты расположения труб в клетках и проверяющий каждый из этих вариантов(а их очень много) на связность отдельно.
Второй вопрос:
Проверять, соединена ли клетка с соседней?
Допустим клетка (1) над клеткой (2) Проверяем, есть ли выход у (1) вниз, и , соответсвенно у (2) вверх.
1
 Аватар для Pahanuch
328 / 163 / 89
Регистрация: 03.11.2010
Сообщений: 920
25.08.2012, 20:29  [ТС]
nrv, Спасибо. Второй вопрос, вроде, решился.

Хотелось бы еще послушать варианты решения!
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
26.08.2012, 01:16
Цитата Сообщение от Pahanuch Посмотреть сообщение
Хотелось бы еще послушать варианты решения!
1. как посоветовал nrv вначале сгенерировать собранную трубу.
2. каждая клетка - это отдельный объект.
3.Для каждого объекта (клетки) задать координаты от 1 до 4. 1- верх, 2-прав. сторона, 3- низ, 4 -лев.сторона.
4. При вращении фиксировать смещение координат сторон
5. Правильно стоящая клетка всегда будет смотреть стороной 1 вверх.
6. Присвоить сторонам клетки значения True, если они имеют выход/вход трубы. Тогда при вращении клетки, если ее сторона со значением True встретится со стороной True соседней клетки -то это будет продолжением трубы. Можно трубы в них закрасить синим по мере продвижения сборки (заполнить водой)
7. Всегда можно собрать трубу одним кликом, заставив смотреть клетки стороной 1 вверх.
8. Игроку можно организовать подсказку на любое количество правильно стоящий клеток, повернув их стороной 1 вверх.
9. Игроку можно организовать подсказку на любое количество не правильно стоящий клеток окрасив их другим цветом.
Ну и далее по мере воображения.

Возможный недостаток такого подхода - трубу можно собрать только единственным способом. Если труба будет сложной формы, с кучей ответвлений, то наверное будут участки, где возможны варианты.
Хотя, может я и ошибаюсь.
1
 Аватар для Pahanuch
328 / 163 / 89
Регистрация: 03.11.2010
Сообщений: 920
26.08.2012, 02:18  [ТС]
Евгений В, Отличное объяснение. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.08.2012, 02:18
Помогаю со студенческими работами здесь

А как если что сделать проверку на пустой файл и вывод используемой оперативы/время выполнения? я сделал проверку на пус
"Изначальное задание Написать программу, которая читая последовательность чисел из файла, выводит на экран самую длинную возрастающую...

Что сделать, чтоб при печати были видны линии, пересекающие трубопровод?
Проблема в следующем, на чертеже устанавливаю необходимые свойства отображения (скрытые линии, параметры ребер-показать изолинии), но при...

Php mysqli как сделать вывод из базы в массив и сделать проверку на сходство
Здравствуйте, подскажите пожалуйста как сделать что-то подобное. Есть база данных В базе таблица типа: (название 1 столба) - notes ...

Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново?
Как сделать так, чтобы при нажатии на кнопку "Новая игра" игра начиналась заново? unit1.cpp void __fastcall TForm1::N1Click(TObject...

как сделать проверку?
имеется 2 кнопки ButtonIchDanClick и ButtonProdClick, как сделать условие, а именно пока не нажата кнопка ButtonIchDanClick мы не сможем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru