Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: 10-й класс
Рейтинг: 741
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 374
∙ повысить рейтинг >>
Серг aka umbSSE
Статус: 10-й класс
Рейтинг: 236
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1357 от 15.07.2009, 21:35
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 631, экспертов - 152
В номере: вопросов - 1, ответов - 2

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 170341: Уважаемые эксперты , помогите , пожалуйста, разобратся-есть код (http://pmg.org.ru/nehe/nehe07.htm) , обьявляется массив и потом он используется в логической операции Вопрос, массив не инициализируется , значит автор просто пропустил эту процед...



Вопрос № 170341:

Уважаемые эксперты , помогите , пожалуйста, разобратся-есть код (http://pmg.org.ru/nehe/nehe07.htm) , обьявляется массив и потом он используется в логической операции
Вопрос, массив не инициализируется , значит автор просто пропустил эту процедуру или действительно можно так объявить массив , а потом подставлять в него значение VK_UP ?

Отправлен: 10.07.2009, 18:53
Вопрос задал: sergion-aa, Посетитель
Всего ответов: 2
Страница вопроса >>


Отвечает Хватов Сергей, Практикант :
Здравствуйте, sergion-aa.

Из приведённого вами фрагмента не ясно, в каком контексте объявлен массив, но если он глобальный (объявлен вне какой-либо функции), то во-первых, он инициализируется false-ами (в общем случае - нолями), а во-вторых, доступен из любых мест программы, которые его могут и заполнить

Посмотрел по ссылке - действительно глобальный. Значит, инициализирован нолями.

Ответ отправил: Хватов Сергей, Практикант
Ответ отправлен: 10.07.2009, 19:12

Оценка ответа: 4
Комментарий к оценке:
Хмм.. Я специально помотрел у Дейтела, массив автоматически не инициализируется, нужно указать , хотя бы одно значение

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252056 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает UnReal, 3-й класс :
    Здравствуйте, sergion-aa.
    Уроки идут по порядку, и автор объясняет только новые строки кода. Объяснение приводится в первом уроке (http://pmg.org.ru/nehe/nehe01.htm):

    Если произошло нажатие кнопки (на клавиатуре) мы можем узнать какая клавиша это была считав wParam. Тогда я делаю, чтобы эта ячейка в массиве keys[ ] содержала true. Таким образом, я могу считать этот массив позже и найти какая клавиша была нажата. Это позволяет отследить нажатия сразу несколько клавиш одновременно.

    case WM_KEYDOWN: // Была ли нажата кнопка?
    {
    keys[wParam] = true; // Если так, мы присваиваем этой ячейке true
    return 0; // Возвращаемся
    }

    Если кнопка была отпущена мы можем узнать какая клавиша это была считав wParam. Тогда мы делаем, чтобы эта ячейка в массиве keys[ ] была равна false. Таким образом, когда Вы считываете эту ячейку, Вы будете знать нажата ли она до сих пор или была отпущена. Другие кнопки на клавиатуре могут быть представлены в диапазоне 0-255 . Когда мы нажимаем кнопку со скан-кодом 40, например, keys[40] вернёт true. Когда я её отпущу, она вернёт false. Вот так мы используем ячейки для хранения нажатых клавиш.

    case WM_KEYUP: // Была ли отпущена клавиша?
    {
    keys[wParam] = false; // Если так, мы присваиваем этой ячейке false
    return 0; // Возвращаемся

    Также следует смотреть оригинал, поскольку переводы некоторых уроков от него несколько отличаются, кроме того, там можно скачать полный исходник каждого урока в конце страницы (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01).
    Или можете реализовать по-своему (http://vsokovikov.narod.ru/New_MSDN_API/Keyb_input/notify_wm_keydown.htm), например, как-то так:

    ...
    case WM_KEYDOWN:
    {
    KeyPress(wParam, lParam);
    return 0;
    }
    ...
    void KeyPress(WPARAM wParam, LPARAM lParam)
    {
    if(wParam == VK_LEFT)
    {
    // ...
    }
    }
    -----
    Cogito, ergo sum (c) R. Descartes (1596-1650)

    Ответ отправил: UnReal, 3-й класс
    Ответ отправлен: 10.07.2009, 19:35

    Оценка ответа: 5

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252057 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.5 от 08.07.2009

    В избранное