Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Змейка. Написание игры

Ответить
Настройки темы
C/C++ - Змейка. Написание игры

Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Передомной появилась такая проблемма. Нада написать игру "Змейка" на Borland C++ 3.11 с использованием ООП и в графическом режиме. Помогите пожалуста разобратся с такими вопросами:
1. Как правильно спроэктировать самц игру, классы и тп?
2. Как реализовать движение змеи и изменение направлений при нажатии клавиш.

Вообщем помогите хто чем может, кодом, советами, теорией, буду благодарен за любую помощь.

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 23:01, 22-04-2010

 

Пользователь


Сообщения: 74
Благодарности: 5

Профиль | Отправить PM | Цитировать


ну тогда выкладывай исходники на все общее обозрение и критику, нам же интересно узнать как ты разобрался
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:04, 26-04-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

btf btf вне форума

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем доброго времени суток!
Мне вот тоже стало интересно написать земйку.
Я начал делать все по мануалу: придумал что я хочу и вроде составил 2 класса.

Червяк должен ползать сам. Пользователь лишь выбирает направление червя с помощью клавиатуры.
Яблоки будут появлятся в случайных кооодинатах и через некоторое время исчезать. Съев одно яблоко червяк становится длинее на еденицу.
Скорость червя увеличивается по мере увеличения его длины.
Камни так же будут появляться в случайных местах. Если червь врежется в камень - игра закончена.
Если червяк врежется в границы поля - игра закончена.
За всю игру появляется N яблок.
Игра считается успешно законченной, если длина червяк собрал M яблок (M<N).

Поле - массив[40][40]

Характеристики червя:
Х координата, У координата, длина червя, скорость червя, количество собранных яблок.

Характеристики объекта:
Х коррдината, У координата, время жизни, тип объекта(яблоко или камень).

Код: Выделить весь код
class Worm
{
int xPos, yPos, length, speed, apples;
public:
 Worm();
 ~Worm();
 void SetX(int X) {xPos=X;}
 int GetX() const {return xPos;}
 void SetY(int Y) {yPos=Y;}
 int GetY() const {return yPos;}
 void SetLength(int len) {length=len;}
 int GetLength() const {return length;}
 void SetSpeed(int spd) {speed=spd;}
 int GetSpeed() const {return speed;}
 void SetApples(int apls) {apples=apls;}
 int GetApples() const {return apples;}
}

class Obj
{
int xPos, yPos, existTime, objType;
public:
 Obj();
 ~Obj();
 void SetX(int X) {xPos=X;}
 int GetX() const {return xPos;}
 void SetY(int Y) {yPos=Y;}
 int GetY() const {return yPos;}
 void SetTime(int time) {existTime=time;}
 int GetTime() const {return existTime;}
 void SetType(int type) {objTye=type;}
 int GetType() const {return objType;}
}
Что делать дальше - я не знаю. Подскажите как сделать управление червем с помощью клавиатуры и как реализовать все это на экране? И еще хотелось бы наследование задействовать, но я не придумал как.

Подскажите, пожалуйста.

Отправлено: 19:46, 17-11-2010 | #12

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Вот червяк:
Код: Выделить весь код
.........
..x......
..x......
..xxxx...
.....x...
.....X...
.........
.........
можно узнать его координаты GetX(), GetY()? Или я на другую игру подумал?

Отправлено: 21:58, 17-11-2010 | #13

btf btf вне форума

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я не знаю, про какую игру ты подумал. Я имею ввиду обычную змейку, как на старых моделях телефона nokia. Я хочу использовать не псевдографику, а какие-нибудь стандартные графические функции с++.
Перед тем как узнать координаты их надо установить...

Отправлено: 23:02, 17-11-2010 | #14


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Btf если проект под Win32, то в событии WM_CHAR оконной функции обрабатывать нажатия клавиш. В той же функции, но в другом событии (WM_PAINT), реализовать вывод на экран.
Для данной задачи, если требуется что было задействовано наследование, можно наследовать яблоко и камень от одного класса (того же Obj), или же все классы (включая Worm) наследовать от одного интерфейсного класса. Второй вариант упрощает менеджмент объектов.
Если идти по пути ООП далее, то для решения данной задачи стоит создать ещё один класс, который будет управлять всеми игровыми процессами. Он же будет хранить все объекты, характеристики игрового поля, условия игры в своих полях.

В стандарте С++ не заложено графических функций. Графический вывод осуществляют дополнительные библиотеки. Под Win32 такие как GDI, GdiPlus, Direct3D, OpenGL и прочие.

Отправлено: 23:51, 17-11-2010 | #15

btf btf вне форума

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Блин, как-то трудно. А если делать с помощью псевдографики? Как это реализовать?

Отправлено: 01:28, 18-11-2010 | #16


Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата btf:
И еще хотелось бы наследование задействовать, но я не придумал как. »
Есть одна замечательная фраза "Если в архитектуре приложения ненужно использовать наследование то ненада его придумывать" Тоесть если логически это там ненада то незачем это привинчивать ибо реализация избыточна

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 03:15, 18-11-2010 | #17


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


а можите дать исходник, интересно)

Отправлено: 13:22, 20-01-2012 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Змейка. Написание игры

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход