![]() |
|
Модераторы: Rickert |
![]()
|
|
| Qawra |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
есть кнопка , есть класс для выбора игроком цвета
При нажатии кнопки должен выходить диалог выбора цвета для игрока . Я думала что достаточно при нажатии кнопки
создать игрока из конструктора класса Игрок который уже выберет себе цвет но не знаю как этот конструктор прописать что-бы он выбирал цвет . Мой конструктор видимо в принципе ошибочный.Он ничего не выбирает поэтому я его здесь и не отображаю . |
||||
|
|||||
| Rpahut |
|
||||||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Если цвет выбирается в момент создания игрока, то:
В конструкторе класса Игрок:
Добавлено @ 18:59 Если цвет хочется менять во время игры, то: 1. Создаем кнопки или пункты меню "Поменять цвет Игрока1" "Поменять цвет Игрока2" 2. Клеим их к основному окну 3. В класс Игрок добавляем метод смены цвета:
4. В основном окне отслеживаем нажатие кнопок (или выбор пункта меню) и вызываем метод ChangeColor() соответствующего игрока. ЗЫ С Праздником! Это сообщение отредактировал(а) Rpahut - 31.12.2008, 19:03 --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
||||||
|
|||||||
| Qawra |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
C Наступившим ...и ещё с наступающими !
получился у меня такой синтакс на кнопке
такой ColorChooser
проблема сейчас с игроком
на строчке this.playerColor = this.cchooser.ShowChooser(Color playerColor ); компайлер ругается что ему нужна ещё ")" Я пробовала различные варианты написания , но ему всё равно нужна ещё одна скобка. |
||||||
|
|||||||
| Rpahut |
|
||||||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
И еще:
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
||||||
|
|||||||
| Qawra |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
почему-то компайлер хочет ещё одну круглую скобку. Видимо ему что-то другое не нравится в этом варианте конструктора
но пишет он что нужна ещё одна круглая скобка в строчке playerColor = cchooser.ShowChooser(Color playerColor ); Я уже видела "лишнии" с моей точки зрения круглые скобки в примерах с Java кодом , но как и почему их ставят - не знаю. Они бывают не парные !!! и откуда они берутся не понятно . В данном случае я попробовала поставить лишнию скобку - компайлер всё равно пишет что скобки не хватает .Значит дело не в ней а в чём то другом ... |
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Ваша ошибка тут:
playerColor = cchooser.ShowChooser(
Скобки, кавычки и прочие знаки, используемые для отделения части текста, всегда парные - одна указывает начало куска, вторая конец. При большом нагромождении скобок бывает трудно определить на глаз, все ли в коде правильно. Небольшие куски кода часто пишутся "из головы" и не проверяются на корректность - так что там могут быть и ошибки. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
| Qawra |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
Вы правы .. Это конечно объест класса Color но в данном случае он используется как аргумент ... Перестраховалась я
Теперь всё скомпилировалось но при нажатии на кнопку компайлер как ни странно находит кучу exceptions типа java.lang.NullPointerException .
Нам показывали exceptions которые возникают при вводе данных . А здесь мы пока ещё ничего не вводили .. Я что-то неправильно импортировала ? |
|||
|
||||
| arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Видимо ошибка вот тут
т.е. в 16 строке в файле Player.java. Судя по всему, член класса
нигде не инициализируется, т.е. ему ничего не присваивается, поэтому происходит java.lang.NullPointerException |
||||
|
|||||
| Qawra |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
private ColorChooser cchooser был инициализирован но ему действительно ничего не присваивалось
Надо было видимо создать обьект класса ColorChooser cchooser = new ColorChooser (); Только что ему присваивать как цвет если сразу у двух игроков есть предустановленные цвета . .. null видимо .. Ничего присваивать оказалось не нужно .Просто оставить пустые скобочки и всё работает ! Это сообщение отредактировал(а) Qawra - 5.1.2009, 13:55 |
|||
|
||||
| arilou |
|
||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Qawra,
это и значит, что "ничего не присваивалось"
ничего не понял, ну да ладно.
также, вызывает сомнение этот код. Что ты им хотела сказать? |
||||||
|
|||||||
| Rpahut |
|
||||||||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Здесь если cchooser.ShowChooser(playerColor) возвращает null, игроку присваивается цвет по умолчанию.
И это при том, что в яве указателей нету ColorChooser не нужно делать членом класса, потому как после выполнения конструктора класса Player он уже не будет нужен. Лучше создать его там где он используется:
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
||||||||
|
|||||||||
| Qawra |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
да.. так оно тоже работает . А когда мы отключаем
//this.playerColor = color; то как быть с цветом для игрока заданным по умолчанию ? Мы ведь с ним теперь не работаем в конструкторе . Я правда не могу это сейчас практически проверить . Попробовать нарисовать точки без выбора цвета игрока пока нечем .Нужен отдельный класс Points где точки будут рисоваться по очереди цветами игроков и только в углах клеток решётки . Вызывается решётка кодом на кнопке
есть по умолчанию два цвета для игроков red и blue . Но ведь если игрок не станет выбирать цвет то он не запустит конструктор и цвета по умолчанию тоже не будет .. Хотелось бы написать
Как при нажатии кнопки старт проверить что были нажаты firstPlayerButton и secondPlayerButton ? |
||||
|
|||||
| Rpahut |
|
||||||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Цвет по умолчанию мы передаем в ColorChooser: playerColor = cchooser.ShowChooser(color); так что либо пользователь изменит и выберет цвет - тогда его мы присвоим игроку, либо пользователь откажется от выбора - тогда срабатывает проверка на null и цвет по умолчанию записывается в playerColor. Конструктор вызывается автоматически при создании экземпляра объекта.
Вручную конструкторы вызывать не стоит. Они существуют для инициализации объектов при создании - в случае класса Player для инициализации его переменных playerColor и orderOfPlayers.
Так у вас при нажатии кнопки Старт создаются оба игрока, т.е. для каждого из них будет выполнен конструктор, а значит два раза на экране появится ColorChooser с предложением поменять цвет. Вполне приемлимый вариант, только firstPlayerButton и secondPlayerButton в таком случае можно убрать. Если вы желаете выбирать цвет для игроков перед началом игры, нужно: 1. При нажатии кнопок firstPlayerButton и secondPlayerButton показывать ColorChooser, запоминать выбранный цвет. 2. При нажатии кнопки Start создавать Игроков и передавать им (их конструкторам) цвета. 3. В конструкторе класса Player в таком случае ColorChooser показывать не нужно, просто записываем полученный цвет в playerColor. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
||||||
|
|||||||
| Qawra |
|
||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
что бы изменить код на кнопках мне пришлось дополнительно декларировать в этом классе две переменные
Класс Player совсем укоротился и выглядит так
переменную private Color playerColor; пришлось прописать дважды в двух разных классах , иначе не компелировалось . А что будет если игрок сразу нажмёт кнопку старт ? У него не будет предустановленного цвета ? Может быть приравнять в начале класса private Color playerColor = Color.white ; и на кнопке старт сделать проверку playerColor.Если он всё ещё white значит игроки отказываются выбирать цвет и мы им назначим цвет по умолчанию прямо здесь на кнопке старт ... сейчас пытаюсь сообразить как построить класс Points что-бы проверить каким цветом будет рисоваться . Пока только сам процесс рисования скомпоновался.
Там самый ужас что надо ставить точки только в углах решётки . Причем нужен небольшой зазор в координатах иначе человек должен будет " целится" в определённый пиксель.. Решётка в двух классах выглядит так
Это сообщение отредактировал(а) Qawra - 6.1.2009, 16:37 |
||||||||||
|
|||||||||||
| Qawra |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 6.3.2007 Репутация: 3 Всего: 4 |
Извините что вопрос про решётку не выделила в отдельную тему
Это сообщение отредактировал(а) Qawra - 6.1.2009, 16:43 |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |