![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Змейка. Написание игры |
|
|
C/C++ - Змейка. Написание игры
|
Старожил Сообщения: 222 |
Передомной появилась такая проблемма. Нада написать игру "Змейка" на Borland C++ 3.11 с использованием ООП и в графическом режиме. Помогите пожалуста разобратся с такими вопросами:
1. Как правильно спроэктировать самц игру, классы и тп? 2. Как реализовать движение змеи и изменение направлений при нажатии клавиш. Вообщем помогите хто чем может, кодом, советами, теорией, буду благодарен за любую помощь. |
|
------- Отправлено: 23:01, 22-04-2010 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать DaRiYs,
Цитата DaRiYs:
В противном случае это будет чужое решение, а не собственное. |
|
------- Отправлено: 08:57, 23-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Бы ло бы еще о чем рассуждать, я незнаю с какой стороны приступить... Хоть теорию реализации игры для начала скажите.
|
------- Отправлено: 10:22, 23-04-2010 | #3 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать DaRiYs, теория реализации игры - это следующий шаг. А сейчас рассуждай о том, чего ты хочешь видеть на экране. Реализаций разновидностей много, а цель должна быть одна.
Начни рассказ со слов "Я хочу чтобы ...". Чтобы змейка двигалась так-то и так-то. Для управления использовались кнопки такие-то и такие-то. Змейка характеризуется так-то и так-то. Нямки появляются так-то. Вопрос будет в том, в каком виде у тебя будет хранится поле и в каком виде будет представлена змейка. Но я этого не говорил! ![]() Когда этап "Я хочу" будет пройден, будем думать над реализацией. Не торопись, запрограммировать плевое дело, было бы что. ![]() Т.ч. рассуждай, рисуй схемки, а о программировании пока не думай. (Рассуждения терминами С/С++ сейчас не нужны) |
------- Отправлено: 10:38, 23-04-2010 | #4 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Я когда-то решал аналогичную задачку "траектория черепахи", но если честно, до конца не дорешал. Парочка мыслей:
1. Нужно поле по которому змейка будет двигаться - двухмерный массив 2. Нужен массив ходов (поскольку шаг у нас одна клетка то и значение будет 1 или -1) - 3. Варианты ходов 4 варианта, вверх вниз, вправо, влево 4. переменная хода - currentStep = 0; ... const int x = 10; const int y = 10; const int step = 2; int boarb[x][y] = {0}; int step[step] = {1, -1}; int currentStep = 0, move = 0; cout<<"\n Введите шаг змейки от '0' или '4': "; cin>>move ; while(move != 9999){ // 9999 ходов if(move == 1){ currentStep += 1; // Вверх } else if(move == 2){ currentStep += 1; // Вправо } else if(move == 3){ currentStep += -1; // Вниз } else if(move == 4){ currentStep += -1; // Влево } ... |
|
------- Отправлено: 11:14, 23-04-2010 | #5 |
Пользователь Сообщения: 74
|
Профиль | Отправить PM | Цитировать Это у тебя лабораторная работа/курсовая/диплом или ты просто ради фана хочешь разобраться в игростроении? Если учёба тогда какие сроки, если ради фана то, можешь начать примерно со следующего.
Какие ключевые понятия в игре Змейка (да и вообще в любой игре)? Есть карта или просто поле по которому ползает червяк в области ограниченного пространства. На этом поле он собирает объекты (бонусы) которые по разному влияют на червяка. Исходя из этого у нас будет один общий базовый класс для объектов. К объекту можно также отнести и самого червяка, а что он разве не объект? Ещё какой объект только со своим набором атрибутов, поэтому для начало возьмём базовый объект, некий Какие общие черты у каждого объекта, пусть это бонус, червяк или его враги (другой червяк который ползает по полю и стреляет): 1. координаты на сетке (x,y) 2. скорость (velocity) 3. тип объекта (type) (мы же должны как-то узнавать в игре что это или кто это, бонус или враг или просто камень в который нужно врезаться и отнять пару поинтов жизни у червяка) 4. Угол (angle) - в ту сторону будет идти червяк меняется угол меняется и направления червяка. 5. ширина и высота объекта (width and height) а теперь имеем CBaseObject { private: int x,y; float velocity; ETypeObject type; float angle; int width, height; }; ETypeObject { BONUS, ENEMY, USER }; А что собственно расширять, спросишь ты. Ну давай подумаем, что должен делать этот бонус увеличивать тело червяка, значит вывод напрашивается сам на себя вот такой вот простой бонус будет, он очень примитивный поэтому пока в голову больше ничего не приходит что сюда ещё добавить, но поверь что на протяжении написания игры будет постепенно разрастаться этот класс. На самом деле ещё нужно было в базовый объект кроме свойств добавить базовые методы такие как ну и ещё что-нибудь. А у наследника CDecreaseBody реализовать метод logic(); а может и ещё что-нибудь. Теперь тебе есть от чего оталкиваться. Цитата Drongo:
|
|
Последний раз редактировалось Awejk, 23-04-2010 в 12:29. Причина: Используем тег код - # [/code] Отправлено: 11:20, 23-04-2010 | #6 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Modnyi_Keks:
|
|
------- Отправлено: 12:04, 23-04-2010 | #7 |
Пользователь Сообщения: 74
|
Профиль | Отправить PM | Цитировать Цитата Drongo:
|
|
Отправлено: 12:07, 23-04-2010 | #8 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 13:11, 23-04-2010 | #9 |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Спсиб всем за помощь и идеи, разобрался наконец то, написал
|
------- Отправлено: 00:16, 26-04-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Написание скриптов | zhecka | Скриптовые языки администрирования Windows | 4 | 10-11-2008 12:19 | |
Написание сетевой игры | Jedi | Программирование и базы данных | 1 | 04-01-2004 10:51 | |
Написание Скриптов | Guest | Microsoft Windows NT/2000/2003 | 6 | 31-08-2003 22:46 | |
Написание прог | Apis.NET | Программирование и базы данных | 13 | 28-06-2002 19:00 |
|