...пытаюсь поймать своё настроение...
Ммммм...не кидайте тапками.
Получила курсовик по С++. Игра "Колонки". Что это за игра никто не знает? И как примерно её реализовывать?
Получила курсовик по С++. Игра "Колонки". Что это за игра никто не знает? И как примерно её реализовывать?
Описание:
Это увлекательная логическая игра, чем-то напоминающая любимые всеми игры типа Lines или Balls. В прямоугольном окошке на дно падают вертикальные колонки, состоящие из трех разноцветных блоков. Игрок может перемещать колонку по полю во время ее падения, а также менять порядок цветных блоков внутри колонки. Упавшие блоки исчезают, если они образуют вертикальную, горизонтальную или диагональную линию одного цвета, длиной минимум в три блока. На протяжении всей игры ведется подсчет очков. При заполнении всего окна блоками, игра заканчивается.
А реализовывать требуется в консоли ?
К сожелению, не в консоли.
Ну вобще логично что не в консоли (но учителя разные бывают)
А реализовывать вам кончено муторно придется, как никак проект. Думаю можно на форме выделить участок под поле (я обычно для этого Image использую) разлинованное на клетки, в проге представить его двумерным массивом. Т.е. рисовать фигуру на поле можно просто закрашивая соответствующие клетки. Сами объекты можно хранить в отдельном динамическом списке ( СТЭК ). Для каждой с конца вызывать обработчик хода, т.е. если падает передвинуть. + придется учесть что сами объекты состоят из кусков, как никак ни удалении будет будет удалятся только часть объекта, вобщем ООП спасет вас.
А в ячейках карты можно храненить инфу: занято/свободно.
Смещение колонок легко реализовать, т.к. у нас уже есть массив-матрица, который показывает какие клетки заняты. Их надо будет сдвигать в массиве, а потом соответственно заполнять поле image.
Надо заранее уточнить сколько фигур (и их частей) в один момент времени может быть на форме; от этого сильно зависит алгоритм сдвижения (в стороны). И ещё по какому принципу разбивать на квадратики, т.е способ привязки квадрата к строке его характеристик в массиве (координатами или ещё чем), это я к тому, что форму-то растянуть/развернуть можно, а за ней растянется и картинка, а квадратики могут остаться на своём прежнем месте, что будет косяком.
Теперь про 'удаление'. У нас уже есть массив с данными занято/незанято/цвет. Теперь его при каждом шаге (падении колонки на 1 ступень) надо фильтровать в соответствии с системой ограничений (условиями игры, когда совпавшее убирается)
Если что-то убралось - надо заново фильтровать до тех пор пока совпадений не будет.
Всё это ИМХО, конечно, но буду рад, если смог помочь.
Не зря же ты С++ изучаешь.
Я всего-лишь программист-любитель и часто пишу всякие там скрипты для администрирования, там дебри погуще игрушки.
Добрый тебе совет: составь сначала на бумаге план-каркас для программы в виде её структуры и констукций если->то, потом пройдись как бы решая задачу для одной итерации и посмотри, что будет твориться с условиями.
А вообще на ночь смотреть код вредно - плывущие мимо глаз строчки функций, и мысли, бегающие вокруг классов во сне, не способствуют хорошему самочувствию.
Never fear, C++ is here! В вольном переводе...
П.С. Будут вопросы - пиши в аську, номер в профиле.
когда меня родители отправляли на этот факультет и специальность, я вообще не собиралась ничем таким заниматься. И только через полгода учёбы поняла, что эти блок-схемы и куча дурацких символов никуда не денутся.
А вообще на ночь смотреть код вредно - плывущие мимо глаз строчки функций, и мысли, бегающие вокруг классов во сне, не способствуют хорошему самочувствию.
Зря!!! Между прочим, когда до сдачи остаётся одна ночь, все мысленные процессы очень активизируются.
Есть поговорка у программистов - любое исключение можно записать в виде условия в функций, но бывают исключения. ;))
Всё остальное содержание последнего твоего коммента - без комментариев.
Если возникнут какие-то конкретные вопросы по принципиальной реализации - пиши.