Команда начинающих программистов!

Модератор: Злобный

Аватара пользователя
DiMoN
Отец
Сообщения: 4456
Зарегистрирован: Вт май 24, 2005 19:06
Откуда: Молдова\г. Кишинёв
Контактная информация:

Сообщение DiMoN »

sadman,
хм.. простенькое говоришь?
ну вот на этом форуме www.simplegames.org/frm/index.php я принимал участие (небольшое и не в программировании, но принимал) в таких простеньких играх как Filler, HackSim.. также там есть программки (InfoBar, DigiClock, CD-Controls), которые делал мой знакомый на досуге.. если вы хотите, то мы на данный момент заняты проектом он-лайн игры, если кто заинтересуется, то предоставлю данные в привате..
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

DiMoN,
мда...неплохо-неплохо. эт я о проэктах ваших. особенно впечатлила игра про хакера))). судя по описаниям и скринам - круто. ща скачаю-погоняю.
Аватара пользователя
DiMoN
Отец
Сообщения: 4456
Зарегистрирован: Вт май 24, 2005 19:06
Откуда: Молдова\г. Кишинёв
Контактная информация:

Сообщение DiMoN »

sadman,
на самом деле игра СОВСЕМ сырая, там только заготовка и задумка частично выполненая в реальность.. в общем кстати если кто хочет, мы пока занимаемся он-лайн игрой, вы можете как раз добить этот проект (конечно же с разрешения самого автора)
Rockie
Новичок
Сообщения: 30
Зарегистрирован: Чт янв 19, 2006 22:15
Контактная информация:

Сообщение Rockie »

А у меня предложение на уровне детского сада. Но зато imho можно потренироваться работе в команде.

Язык: С++
Игра: Змейка. Наподобие как в нокиевских телефонах.
Причем под консоль.

Мне кажется если делать под консоль, то мы сможем и удаленно модули разрабатывать. А потом, после того как спроектируем, реализуем и обкатаем в консоли (грозно звучит :)) - думаю можно будет перевесить под винду. Если мы правильно спроектируем игру то думаю это не составит особого труда. Заюзаем UML, придумаем алгоритм. Объект - лабиринт, объект - змея.. или не так :) Ну да на форумах спросим нам алгоритм расскажуют и разжуют. вот к примеру навскидку здесь

Вообще можно такое и самому написать (и imho легче), но главная фишка в том чтобы потренироваться самим спроектировать с учетом того что два/несколько человек работают и сделать в команде.

p.s.: да и еще уточню что спроектировать так, чтобы можно было потом легко новые уровни добавлять (не только коробку, но и другие виды лабиринтов)
Realist
Юзер
Сообщения: 218
Зарегистрирован: Вс июн 06, 2004 15:30

Сообщение Realist »

Sandu: Паук что-ли?
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

Rockie,
хм...хз...думаю, можно попробовать...
так а ты типа как, включаешься в наш коллектив?
Rockie
Новичок
Сообщения: 30
Зарегистрирован: Чт янв 19, 2006 22:15
Контактная информация:

Сообщение Rockie »

sadman,
ну не знаю =) Наверное можно и так сказать :)
Rockie
Новичок
Сообщения: 30
Зарегистрирован: Чт янв 19, 2006 22:15
Контактная информация:

Сообщение Rockie »

Если возьмемся то на первых порах у меня мысли такие:

Можем отталкиваться от от экрана(массива) 80*25.

- Класс Лабиринт. (n разных лабиринтов, в понятиях координат x,y)
- Класс Змея, тело змеи. Здесь биндим движения змеи тоже в применении к x,y.

и от всего этого добра наследуем:

- Класс Геймплей. И здесь собсна двигаем змею и проверяем, если она не жмакнулась в себя или в лабиринт.

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

Только у меня есть вопросы
1) правильно ли это все себе представляю
2) как сделать так чтобы это потом легко пересадилось на windows
Аватара пользователя
yura:8788
Новичок
Сообщения: 19
Зарегистрирован: Пн ноя 07, 2005 14:57

Сообщение yura:8788 »

Rockie писал(а):Если возьмемся то на первых порах у меня мысли такие:

Можем отталкиваться от от экрана(массива) 80*25.

- Класс Лабиринт. (n разных лабиринтов, в понятиях координат x,y)
- Класс Змея, тело змеи. Здесь биндим движения змеи тоже в применении к x,y.

и от всего этого добра наследуем:

- Класс Геймплей. И здесь собсна двигаем змею и проверяем, если она не жмакнулась в себя или в лабиринт.

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

Только у меня есть вопросы
1) правильно ли это все себе представляю
2) как сделать так чтобы это потом легко пересадилось на windows
Ну - я бы так замутил пожалуй:

1. Класс лабиринт (обыкновенная двумерная матрица - из enum-ов - типа {none, snake, mouse} - т.е. в каждом элементе - содержиться информация - о том - что в данной "клетки" - в данный момент находиться (ничего, шмат змеи, мышь)) (в принципе - тут и без класса обойтись можно)

2. Класс змея - содержит в себе - вектор - состоящий из координат матрицы-лабиринта - отображает текущее состояние змеи - в лабиринте; дополнительний вектор - указывающий на "узловые" координаты; ну - и открытые методы - реализующий движение/поворот/рост змеи + предоставляет метод - типа isDead (наткнулась эта змея на стену - или нет).

3. Класс прорисовщик - содержим указатель на лабиринт; единственное предназначение - прорисовка (будь то в консоле, или где-либо еще);

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

Типа таково... хотя вообще - тут подумать надо ;)
Rockie
Новичок
Сообщения: 30
Зарегистрирован: Чт янв 19, 2006 22:15
Контактная информация:

Сообщение Rockie »

yura:8788,
1. Класс лабиринт (обыкновенная двумерная матрица - из enum-ов - типа {none, snake, mouse}
ага. и надо будет добавить еще wall - препятствие. причем препятствия в зависимости от уровня могут быть разными. кстати кормить будем мышами или они будут в качестве бонусов?
2. Класс змея - содержит в себе - вектор - состоящий из координат матрицы-лабиринта - отображает текущее состояние змеи - в лабиринте; дополнительний вектор - указывающий на "узловые" координаты; ну - и открытые методы - реализующий движение/поворот/рост змеи + предоставляет метод - типа isDead (наткнулась эта змея на стену - или нет).
вот-вот! =) а узловые координаты - это где змея поворачивает? только щас подумал, imho надо еще хранить направление для каждого узла; иначе как понять каким образом она извивается.. или создать змею в виде списка, где каждый элемент знает позицию следующего: тогда голова повернет, а все остальное тело подтянется.
3. Класс прорисовщик - содержим указатель на лабиринт; единственное предназначение - прорисовка (будь то в консоле, или где-либо еще);
с прорисовщиком классная идея. можно отделить игру и интерфейс. но если в винде сетка получится тоже 80*25, тогда все будет слишком мелко - может стоит выбрать другую размерность.. 60*20? =)
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

итак, господа :D насчёт змейки:
думаю что надо сделать примерно так:

1.класс SNAKE - содержит в себе:
а) метод int move(int iDirection) ( прямо тут можно проверять не врезалась-ли куда-нибудь змея. То-есть если ф-ция возвращает 0-все ок, 1-врезались, 2-скушали мышку :) )
б) метод growup - это когда змея удлиняется
в) положение змеи на поле (тут надо подумать как и где будет храниться тело змеи)
г) метод reset;

2. также будут иметься 2 класса предложенных yura:8788 - gameplay и redrawer, что-то типа того. Класс прорисовки будет каждый интервал времени перерисовывать поле (однако это тоже надо хорошо продумать, т.к. перерисовывать всё поле не имеет смысла, хотя-бы потому-что там у нас имеются неизменяющиеся ячейки на протяжении одного уровня, а именно стены лабиринта)
Класс gameplay будет делать следующее - реагировать на нажатия клавиш, двигать змею, кидать хавчик на поле, реагировать на врезание змеи во что-нибудь.

3. также, думаю, имеет смысл создать один здоровенный, глобальный массив - поле, ячейки которого будут запонятсья енумами (как советовал yura:8788) - enum{none, snake, wall, food}.

Пока вроде все, вроде ничё не забыл ))).
Rockie
Новичок
Сообщения: 30
Зарегистрирован: Чт янв 19, 2006 22:15
Контактная информация:

Сообщение Rockie »

ок. могу завтра постараться все это собрать в кучу и выложить типо каркас классов. вместе посмотрим, что как (поменять/добавить/выкинуть)
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

Rockie,
хех, хвалю за такое рвение, но всё это собирать не стоит ;) :) . надо лучше разбить проэкт на модули, что-б каждый кодил свой кусок ;)
Аватара пользователя
yura:8788
Новичок
Сообщения: 19
Зарегистрирован: Пн ноя 07, 2005 14:57

Сообщение yura:8788 »

Насчет класса змея, хранить змею - надо не в vector-е - а в list-е. Таким образом - в методе move надо будит сделать следующее:
CellContent cContent = GetContent(position); //CellContent - это enum{none, snake, wall, food}
ну - и далее:
switch(cContent)
{
case snake:
case wall: return 1;
case none: list.pop_back();
default: list.push_front(position);
}
return (cContent==food?2:0);
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

даже не так! относительно третьего пункта - глобальный массив не нужен. его лучше поместить в класс геймплей, в открытом виде.

[off]добавлено спустя 1 час 16 минут:[/off]

yura:8788,
да, идея со списком мне нравится. практично. остаётся выразить значение переменой position как координаты ячейки - x и y. Но это, я думаю, не проблема.
Rockie
Новичок
Сообщения: 30
Зарегистрирован: Чт янв 19, 2006 22:15
Контактная информация:

Сообщение Rockie »

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

2sadman: Касаемо перерисовщика - то imho пофиг, думаю можно перисовывать весь экран. Насколько знаю, винда работает через методы перерисовки всего окна.

извините что не вдаюсь в подробности, позже отвечу на все посты конкретнее
Аватара пользователя
Злобный
Завсегдатай
Сообщения: 2716
Зарегистрирован: Сб июн 18, 2005 21:05
Контактная информация:

Сообщение Злобный »

[off]yura:8788,
А ты-то что тут забыл, начинающий? :)[/off]
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

так-с, короче, народ. Проэкт я разбил на модули. Все кто в команде - заходим на площадку и смотрим!
Realist
Юзер
Сообщения: 218
Зарегистрирован: Вс июн 06, 2004 15:30

Сообщение Realist »

sadman писал(а):так-с, короче, народ. Проэкт я разбил на модули. Все кто в команде - заходим на площадку и смотрим!
Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server during query in /home/vhosts/umpo.com.md/public_html/tm/mysql_connect.php on line 6
MySQL Connect error.
Аватара пользователя
sadman
Завсегдатай
Сообщения: 2001
Зарегистрирован: Чт дек 15, 2005 23:46
Откуда: с ботаники
Контактная информация:

Сообщение sadman »

Realist,
это на серваке какие-то проблемы :(
Ответить

Вернуться в «Программирование»