CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Домашняя кухня: игры

(Окончание, начало см. в МК № 22, 25 (193, 196))

Сегодня у вас на компьютере появится новая игра, которую вы сами и сделаете. В прошлый раз мы нарисовали линию (был простой статический рисунок). Но в любой игре должна быть анимация. Для анимации нам нужно использовать двойную буферизацию (о том, что это такое, писалось раньше). Вы, конечно, можете попробовать написать игру и с одиночным буфером (очень даже красиво получается :-)).

В этой статье мы научимся рисовать сферы (это будет наш мячик), четырехугольники (ракетки), обрабатывать клавиатуру (нам же нужно как-то управлять ракетками), ну и еще некоторые мелочи. Но обо всем по порядку. Итак, начнем с сфер. Для рисования сферы нам нужно создать объект типа GLUquadricObj с помощью функции gluNewQuadric. Сама функция для создания сферы выглядит так:

Где quadObj — это указатель на объект типа GLUquadricObj. 2-й параметр — это радиус сферы, а два последних параметра — число разбиений вокруг оси Z и число разбиений вдоль оси Z (ведь все сложные фигуры состоят из более простых, вроде точек, линий, треугольников). Чем большее будет разбиение, тем лучше будут выглядеть фигуры, но тем сложнее компьютеру будет нарисовать эту фигуру, соответственно, и картинка будет притормаживать при анимации.

Давайте сейчас разберем нашу функцию main(), которая теперь намного жирнее, чем была в предыдущий раз (ведь она уже готова для игры). Посмотрим на код:

Здесь должно быть все понятно. Теперь давайте займемся рисованием наших ракеток. Для этого мы будем использовать функцию auxSolidBox(int w,int h,1); из библиотеки GLAUX, где int w — это ширина коробки, int h — ее высота. Итак, напишем функцию для отображения наших ракеток, но вначале в самом верху программы (после всех #include) определим все переменные:

Все просто и по существу: bw —ширина ракетки, bh — высота ракетки, left — левый край окна, bottom — низ окна, right — правый край окна, top — верх окна, bitaStep — шаг ракетки (при нажатии на клавишу ракетка перемещается на данный промежуток), StepY, StepX — шаг мячика по оси X и Y (при большем числе скорость шарика будет быстрее), rocket_y1, rocket_y2 — положение 1-й и 2-й ракетки, x, y — координаты мячика.

Отображение ракеток:

Все объекты рисуются с точки (0,0), но иногда нам нужно нарисовать фигуру с другой точки — для этого мы должны перейти к новым координатам с помощью функции glTranslated(x,y,z). Но перед этим нужно сохранить информацию о старых координатах с помощью функции glPushMatrix(). Наконец, после всех операций над данным объектом вам нужно вернуться к старой системе координат с помощью функции glPopMatrix().

Аналогично рисуем вторую ракетку:

Теперь научимся обрабатывать клавиатуру. Для этого мы напишем функцию Keyboard(unsigned char key, int x, int y), где key — это нажатая клавиша, а x, y — положение мышки. Наша функция выглядит так:

Теперь нам осталось написать функцию для вычисления координат мячика (мячик ведь будет все время летать по экрану), а также функцию рисования самого мячика. Ниже написана функция для вычисления координат мячика:

А теперь рисуем сам мячик:

И последнее: давайте напишем маленькую функцию Display().

Теперь откомпилируем код, и… наконец-то у нас получилась игра! :-)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov