![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
VolgaevLG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.12.2010 Репутация: 1 Всего: 1 |
Товарисчи! помогите
у меня в будущей игре (подобие змейки) есть два класса class GameField { int x; // координата х игрового поля int y; // координата y игрового поля int width; // ширина и int height; // высота, кароче параметры }; и class GameSnake { void DrawSnake() { // А здесь мне необходимо обратиться к вышеуказанным переменным первого класса } }; Подскажите как это лучше сделать с профессиональной точки зрения ![]() |
|||
|
||||
awesome |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
|
|||
|
||||
JЕT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 30.9.2010 Репутация: нет Всего: нет |
Сделать композицию.
Это сообщение отредактировал(а) JЕT - 6.6.2011, 23:53 |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
к переменным класса обращаться нельзя. Можно только к переменным объекта класса. Соответственно где-то должен быть создан объект типа GameField (кстати, лучше сделать его не классом, а структурой. просто заменить class GameField на struct GameField). -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
mes,
![]() но у ТС не было слова static в описании... ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
Змейка ползает по полю (змейка знает о поле, поле о змейке - нет). Из вопроса, как классу змейки обратиться к классу поля это тоже вытекает. Что бы змейка знала о поле, ей надо об этом сообщить. Например конструкторе. Дальше змейка будет хранить ссылку на поле для своих операций.
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
Nostr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 7.6.2011 Репутация: нет Всего: нет |
Можно сделать класс дружественным, можно сделать методы, которые будут возвращать параметры объекта
|
|||
|
||||
VolgaevLG |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.12.2010 Репутация: 1 Всего: 1 |
друзья, я не верно задал вопрос, это в принципе мне понятно, но из следующих вариантов:
1. сделать класс GameSnake дружественным к классу GameField, через конструктор класса GameSnake передать адрес созданного объекта GameField и получить к ним доступ
2. Обойтись без friend, сделав необходимые параметры в классе GameField публичными, а остальное, аналогично прошлому примеру 3. "можно сделать методы, которые будут возвращать параметры объекта", как посоветовал Nostr
как будет грамотней с точки зрения профессионального программирования, как бы сделал программист, а не "быдлокодер" И исчо вопросы: что такое композиция? почему GameField лучше сделать структурой, я просто реализовываю функцию прорисовки поля через класс GameField, если сделать структурой, то удобнее будет обращаться? тогда куда запихнуть функцию прорисовки поля |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Nostr, твоя ф-ция даже компилироваться не будет. Я не до коеца знаю stl, поэтому объясни как в конструктор вектора можно запихать два элемента?
Добавлено через 14 минут и 33 секунды VolgaevLG, класс с общепринятой точки зрения должен содержать методы, управляющие его поведением. Если же в классе только (извиняюсь за подробности) члены, то логично сделать из него структуру, где все поля будут паблик -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
псевдокодом, надеюсь не запутаю
![]()
Добавлено через 2 минуты и 4 секунды просисовка должна принадлежать окну, на котором Вы рисуете , либо выделена (или только частью) в отдельный класс рисовальщика.. размазывать отрисовку по коду очень не желательно.. |
|||
|
||||
VolgaevLG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 21.12.2010 Репутация: 1 Всего: 1 |
Благодарю, это все что я хотел узнать
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
связывать объекты _сцены_ между собой (посредством ссылок) также нежелательно, так как их поведение взаимозависимо, и лучше вынести логику в отдельный класс, в нашем случае Playing..
Добавлено через 1 минуту и 42 секунды в псевдокоде использовано struct для простоты.. пишите что Вам больше подойдет.. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |