Показать сообщение отдельно
Старый 01.05.2010, 13:20
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 22  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. Если говорить общо, то контроллер "чего-то" - это нечто, отдающее "чему-то" управляющие команды. Клавиатура - контроллер. Но "контроллер клавиатуры" это пользователь. Ваше определение "что-то на входе и на выходе" слишком "общо" и подходит к чему угодно, т.е. никак не конкретизирует функциональность объекта на уровне определения - контроллер или адаптер, или конвертер, или драйвер, или просто дисплей? На этом уровне определений "контроллер" - "то что отдает команды". То, что хотите получить Вы - контроллер персонажа, контроллируемый клавиатурой. Это о терминах. Используйте термины правильно, и Вас будут "слышать" и "понимать". Используйте свои определения, и все вокруг станут глухими идиотами, предлагающими "совсем не то".
2. Игры посложнее "пройти из точки А в точку В" занимаются расчетом и визуализацией СОСТОЯНИЙ. Как ни парадоксально, события нажатия клавиш в них дело десятое. Это вопрос архитектуры, что удобнее - слушать события или отображать состояние модели каждый интервал времени. У клавиатуры всего два события, но сотни состояний. Фактически клавиатура является моделью персонажа, и "блокнот" silin'a здесь как никогда уместен. То, что написали Вы - представляет клавиатуру как источник сигналов, то, что класс silin'a имеет на входе. Другими словами, чтобы пользоваться Вашим классом, надо написать к нему аналог класса silin'a, создающий модель из тех же событий "нажата" и "отпущена".
Ваше разделение на отдельные события непродуктивно - если при нажатии клавиши надо сделать что-то сложнее "начать смещаться вправо в полной пустоте" (х++) и нужны проверки ВЗАИМОДЕЙСТВИЯ с миром, в конечном итоге все обработчики будут вызывать один и тот же метод "изменить состояние модели персонажа" в контроллере сцены или персонажа, передавая ему еще какой-то код-константу, в реальности содержащий все тот же "нажали W". И в этом методе контроллера будет ровно столько же if'ов и switch'ей, как если бы Вы получили простое событие клавиатуры и проверяли "W? делаем то-то - а именно - проверяем текущее СОСТОЯНИЕ персонажа и мира и вносим изменения, если они допустимы". Не слишком ли долгий путь для простого стандартного события клавиатуры?
Ваше мнение?
__________________
Reality.getBounds(this);