|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.04.2010, 13:46 | #1 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
C++ Builder (компоненты)
Доброго времени суток уважаемые форумчане, появилась мысль написать игру (всем известный snake) на формах, но возникло пару вопросов, буду благодарен за любую помощь.
Я представлял себе эту игру на консольки, сообственно напредставлял себе следующее: Есть двумерный массив, всё происходит в бесконечном цикле с постоянным сдвигом одномерного массива, то есть змейки, по отрезкам матрицы который забит нулями за исключением сомой змейки, она к примеру будет иметь единицу (змейка будет ввиде одномерного массива), по нажатию кнопок (left, right, up, down), изменять направление сдвигов змейки - то есть единицу по ячейкам. Далее рандомно расскидывать по массиву по одному x значению, если это значение будет найдено, добавлять в массив змейки ещё одну единицу, и передвигать уже соответственно два эелемента змейки и т.д. Хотелось бы поинтересовать у знатоков, какие компоненты мне будут нужны для работы (с формами никогда не работал, поэтому и решил что-то написать, чтобы получить базу знаний с работай по формам) Если моя идея не совсем корректная, буду рад поправки. На формах я хотел использовать такую же идею, но змейку я хочу сделать ввиде квадратиков, то есть с использованием .jpg картинок + корм ввиде другого рисунка. (Змея скушала корм, получила +1 квадратик) Не прошу за меня писать программу, прошу дать мне направление в нужное русло, дать толковое объяснение За ранее благодарен за любую помощь. Ссылка на программу: http://www.sendspace.com/file/englux В опциях задумывается изменять скорость передвижения змейки, вкл/выкл. музыку ну и т.д. Последний раз редактировалось coNsept; 22.04.2010 в 14:16. |
22.04.2010, 18:35 | #2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Я сейчас работаю над игрой, тоже в билдере (можете посмотреть результаты вот здесь, последняя версия внизу второй страницы). Из всех компонентов у меня только форма и таймер. Все рисование производится на канву формы (впрочем, имеется еще два TBitmap'а - первый для двройной буферизации, второй для главного меню) и TBitmap'ы для каждой загруженной в память картинки. Плюс множество собственных классов для реализации логики игры.
Собственно, игра проходит так: каждое срабатывание таймера - итерация игрового цикла, игра меняется по своим законам и выводит результаты на экран путем рисования сначала на буфер, потом с него - на канву формы. Также обрабатываются события OnKeyDown и OnKeyUp для управления игроком (они только меняют флаги нажатия клавиш, в зависимости от которых каждый шаг игрового цикла игра реагирует), OnMouseMove и OnClick для работы меню. И еще одна маленькая деталь - для загрузки данных с текстовых файлов используется TStringList, но это детали конкретной реализации, можно читать файлы и потоками и сишными функциями и чем хотите. Вот, кажется, и все, что касается использования конкретных компонент среды разработки. Это почти самый минимум, дальше - только WinAPI и DirectX/OpenGL/... Хотя для начала вам может оказаться проще работать с движущимися TImage, но не советую, т.к. это очень не эффективно, а работать с канвой не так уж и сложно. Освойте на самых простых (необязательно игровых) примерах функции CopyRect, Draw, познакомьтесь с TBitmap и TRect и, если я ничего не забыл, этого вам с головой хватит!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
22.04.2010, 19:07 | #3 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Пффф, нереально огромнейший благодарюн за такой действительно хороший ответ.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое создание объектов компоненты в С++ Builder | d0ger | C++ Builder | 1 | 06.12.2009 19:24 |
Перенести код из C++ Builder 5 в C++ Builder 2009 | Kreadlling | C++ Builder | 2 | 13.09.2009 14:00 |