ПРОГРАММИРОВАНИЕ И ДИЗАЙН | ||||||||||||||||||
Выпуск #21 - 18 июля 2002 года (архив рассылки) Всего подписчиков: 5981 > Новости > Вопросы читателей (7) > Ответы на предыдущие вопросы (8) > Пишем свою собственную 3D игру (часть 2) > Java скрипты > Ссылки > Авторам | ||||||||||||||||||
Новости > Вышел 21й выпуск рассылки. > Добавлены ещё 2 игры на JavaScript: Шашки и Пятнашки > Исправлены некоторые ошибки, из-за которых рассылка некорректно выглядела в TheBat! Если Вы нашли какие-то ошибки, и Ваш почтовый клиент показывает рассылку не так, как Internet Explorer, то пишите на prs@narod.ru | ||||||||||||||||||
Вопросы читателей Задавал вопрос по обработке сканированного изображения... Имелось ввиду решение в виде программы на VB ! Допускается обращение (программное!) к другим программам. Можно, например, в ACDSee изменить тип сохраняемого файла? Я уже справился с кодом преобразования размера (запускаю SHELL..., нажимаю CTRL+R c помощью keybd_event, там настройки не меняются и жму ОК с помощью PostMessageA), далее - тем же порядком CTRL+S - "сохранить как", а дальше - не могу изменить тип сохраняемого файла. Это из-за контрола ImgScan, который не даёт возможности сохранить JPG. Буду презнателен за подсказки. Сергей sima@ellink.ru Ответить Привет! Установила у себя демо-версию Dreamweavwer'а. Не получается настроить русский шрифт. Выбираю Edit-> Preferences->Font, пыталась установить там шрифт Cyrillic либо Windows1252. Жму ОК, набираю текст - не то. Открываю вкладку - опять стоит Greek. И так пять раз... Ответить Доброго времени суток, Пытаюсь создать элемент управления, в котором используется control Image. В готовый элемент управления должны будут вставлятся gif изображения с прозрачным фоном. Но весь фокус в том, что сделать прозрачным фон самого контейнера элемента управления у меня получилось (свойство BackStyle), а Image нет. И в результате при использовании у рисунков получается серый фон. Посоветуйте пожалуйста, что делать. Ответить Доброго времени суток! Подскажите пожалуйста как средствами Visual Basic проиграть avi файл, но так чтобы размер окна, где происходит воспроизведение можно было масштабировать. Ответить Здраствуйте всем!!! У меня 2 вопроса. 1). Tсти у когото електроная книга по ASP? 2). И какой сервер лутше для просмотра Perl скриптов если у меня стоит Windows 2000. Ответить plz пожалуйста подскажите код который при запуске будет копироваться в системную папку и при следующем запуске запускалась бы без глюков, (прога должна запускаться вместе с Windows....но код который я использовал чет глючит ) . Visual basic Огромное СПАСИБО ЗАРАНИЕ reebok100@mail.ru Ответить Как изменить иконку у страницы, добавленной в "Избранное" в IE? Ответить | ||||||||||||||||||
Ответы на предыдущие вопросы Здравствуйте! Подскажите, как перехватить нажатие клавиши НАЗАД (Back) на любом броузере? Я не хочу, что бы броузер выполнял команду "history.go(-1)", так как страничка полностью генерируется ***.asp-файлом за несколько шагов и поэтому операция "history.go(-1)" не приводит к ожидаемому результату. Отмена кэширования не помогает. Надо выполнить несколько иные действия вместо возврата назад, например, "history.go(-4); refresh(); имитация нажатия клавиши "Повторить";... " Если возможно, то ответ в кодах VBScript. Ответ прислал Иван aka Atlanoff Доброе время суток. -- У меня была такая проблема. Решить не смог, хотя всё обыскал. Пробовал убрать изнутри кнопки и строку адреса но всё равно работает кнопка BackSpace Я у себя сделал так: В таких критических страницах расставил флажки, и в начале страницы флажки проверял. Можно объект session использовать для флажков. При попытке шаг влево-вправо надо ругаться нехорошими словами и наставлять пользователя на путь истинный. (можно просто возвращать пользователя обратно и не ругаться) Кодов не даю - потому как всё это по обстоятельствам и не трудно. Но если ты отрубишь "history", то у пользователя всегда останется строка адреса. А кеширование тут совсем не причём. Но лучше оставь "no-cashe". А то тебя чей-прокси закеширует - могут быть проблемы. -- С наилучшими пожеланиями, Иван mailto:atlanoff@pisem.net Пожалуйста подскажите что делать. Когда соединяюсь с провайдером по dial-up, связь рвется через одну-две минуты, а иногда и раньше. Уже замучился. Виновата ли в этом только телефонная линия? Уже перепробовал три разных номера. Или причина может быть другой? Спасибо, Марат Ответ прислал Gorky Jury У меня похожая ситуация была, исправили корректом строки инициализации. У меня она такая: AT+MS=11,1,19200,24000 S9=40 S10=150 S91=15 Первая часть устанавливает скорость, вторая – чувствительность. Значения в ней получены были простой подборкой, но могут и тебе подойти. Если нет – можешь попробовать покрутить. Ответ прислал Алексей Было такое. Нет, телефонная линия не виновата. Под Dimailw (есть такой почтовый клиент) удалось решить уменьшением скорости порта для модема. Для Dial-up, покапайтесь в настройках соединения(биты чётности, скорость порта и т.п.). Возможно и поможет. Алексей О. Как на http://yandex.narod.ru разместить свой сайт. Он у меня уже готовый на жёском диске и мне хотелось бы разместить его там, но там выскакивают какие то помощники... И вообще как проходит эта процедура. В общем я не понял. Объясните, пожалуйста. Заранее благодарен. Ответ прислал Иван aka Atlanoff Доброе время суток. -- http://narod.yandex.ru/help/_default.htm Там всё есть. Регистрация, закачка по FTP, счётчики, почта ... -- С наилучшими пожеланиями, Иван Ответ прислал wba@ua.fm Здравствуйте! Проще всего, используя Ваш броузер, набрать в строке адреса: ftp://ВашЛогин:ВашПароль@ftp.narod.ru а затем, воспользовавшись технологией 'drag-and-drop', перетащить Ваши данные из Эксплорера в окно Броузера Ответ прислал Spectrol Все проще простого заходим http://yandex.narod.ru Нажимаем кнопку регистрация. Заполняем анкетку. Отвечаем еще на пару вопросов и все. Если у вас ничего так и не получится, то лучше размещайте свой сайт на http://by.ru хостинг тоже бесплатный, места unlimit, удобная статистика в общем все тоже что и на http://yandex.narod.ru. У меня там 2 сайта. Так что если будут еще проблемы, то пиши на mailto:Spectrol@tut.by Ответ прислал Виталик Заходишь на www.narod.ru Там у тебя будет форма и кнопка занять или что-то вроде этого ты водишь название своего сайта и нажимаешь кнопку и потом вылазит анкета. ну а дальше разберешься. P.S. Когда зальешь пришлешь ссылку. p_vs@beep.ru. Задача: взять изображение со сканера, преобразовать в опред. размеры (пиксел х пиксел), сохранить на диск в формате JPEG. Сергей. sima@ellink.ru Ответ прислал Виталик В Microsoft Photo Editor. | ||||||||||||||||||
Пишем свою собственную 3D игру (часть 2)
Итак, давайте рассмотрим основные типы данных:
glCommand_name[n][type][v] Таким образом имя любой команды состоит из нескольких частей:
Функция glColor3d(0.1,0.5,0.3); означает, что мы используем функцию, которая находиться в библиотеке GL (приставка gl). Эта функция состоит из трех параметров, типа GLdouble (3d). Функция glVertex2f(1.5,0.9); 2f - два параметра, типа float (GLfloat). Помимо основной библиотеки, существует и несколько других дополнительных библиотек, которые мы также будем использовать в нашей работе. Первая из таких библиотек - это GLU (GLU - graphics utility library). Все функции этой библиотеки обращаются к функциям из GL и в ее состав входят обычно функции для рисования сложных объектов, типа сфер, конуса, цилиндра, и т.д. Эта библиотека входит во все версии OpenGL. Вторая дополнительная библиотека ответственная за взаимодействия с системой окон. Называется она GLUT (GL Utility Toolkit). Она содержит функции, которые могут понадобится при работе с окнами. Существует еще такая библиотека, как GLAUX. Она предназначена для того, чтобы упростить себе жизнь. Например, с помощью этой библиотеки очень просто рисуются такие объекты, как сферы, кубы, и др. сложные объекты. Но, лучше для таких целей использовать библиотеку GLUT, так как в GLAUX есть некоторые ошибки (некоторые объекты не совсем правильно отображаются). Наверное, пора уже приступать к рисованию. Для начала, мы научимся рисовать точки, линии, квадраты, треугольники, четырехугольники, и полигоны. Все это рисуется почти по одной же схеме. Для того чтобы научиться все это рисовать, мы должны разобраться с таким понятием, как примитив. Что такое этот примитив? Это объединение вершин в одно целое. То есть, примитив задается набором вершин. Вершина (Vertex) - это просто-напросто координата точки на экране. Например, треугольник можно нарисовать с помощью 3-х вершин (в двухмерной системе координат), для рисования линии нам хватит и двух, и т.д. Синтаксис задания вершин таков:
Я думаю с этим все ясно. А теперь займемся самим рисованием. Первое, что мы будем рисовать - это точки. Но, перед этим давайте настроим наше приложение. Вот код, который мы написали в 1 статье: #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> void Display(void) { } void main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(400,500); glutInitWindowPosition(0,0); glutCreateWindow("OpenGL Lesson2"); glutDisplayFunc(Display); glutMainLoop(); } Как вы помните, у нас создалось некрасивое, прозрачное окно. Давайте теперь зададим цвет окна. Для этого в функцию main() допишем одну строку: glClearColor(r,g,b,t); Где, r - красный цвет, g - зеленый, b - голубой, t - прозрачность. Значение цветов выставлять нужно в диапазоне от 0 до 1 (т.е. 0.01, 0.2, 0.5, 0.83 и т.д.). Итак, выставьте нужный вам цвет, например, поставим цвет фона белый. glClearColor(1,1,1,1); И теперь нужно в функцию Display(void) добавить еще одну строку: glClear(GL_COLOR_BUFFER_BIT); Этой командой мы закрашиваем цвет фона в тот цвет, который указали в функции glClearColor(r,g,b,t); Давайте посмотрим на полный листинг нашей программы: //подключаем библиотеки #include <GL/gl.h> #include <GL/glut.h> //функция для рисования void Display(void) { //закрасить фон glClear(GL_COLOR_BUFFER_BIT); } //главная функция void main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(400,500); glutInitWindowPosition(0,0); glutCreateWindow("OpenGL Lesson2"); //задаем цвет фона, здесь - белый glClearColor(1,1,1,1); glutDisplayFunc(Display); glutMainLoop(); } Запустите это приложение теперь. И что мы видим? Правильно, красивое белое окно! :) Теперь что ни будь нарисуем. Итак, для рисования фигуры нам одной вершины не достаточно. Для это нам нужно объединить несколько вершин. (то есть, как мы уже знаем - задать примитив). Задание примитива происходит внутри командных скобок: void glBegin (GLenum mode); void glEnd (void); Параметр mode определяет тип примитива, который задается внутри и может принимать следующие значения:
#include <GL/gl.h> #include <GL/glut.h> void Display(void) { //закрашиваем цветом glClear(GL_COLOR_BUFFER_BIT); //рисуем примитив - линию glBegin(GL_LINES); //цвет линии- черный glColor3d(0,0,0); //первая вершина glVertex2d(-1,0); //вторая вершина glVertex2d(1,1); //заканчиваем рисовать примитив glEnd(); //выводим изображение на экран glFlush(); } void main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(400,500); glutInitWindowPosition(0,0); glutCreateWindow("OpenGL Lesson2"); glClearColor(1,1,1,1); glutDisplayFunc(Display); glutMainLoop(); } После запуска этого приложения мы с вами увидим окошко, в котором будет нарисована линия. В следующий раз мы научимся делать анимацию, и сделаем свою первую игру - <арканоидный теннис> (то есть, наша игра будет отличаться от арканоида тем, что в нее нужно будет играть двоим человекам, и стараться забить мячик друг другу). До встречи.
| ||||||||||||||||||
Java скрипты Игра "Шашки". Скачать архив с игрой и картинками можно с этой страницы. | ||||||||||||||||||
Ссылки Сайт для тех, кто хочет научиться писать игры с использованием OpenGL и DirectX. Здесь вы сможете с нуля освоить 3D графику, и программирование с помощью OpenGL/DirectX на C++. На этом сайте вы найдете уроки, статьи, и многое другое... Program Studio Всё для программиста и WEB мастера. Сайт Пахана Техническая документация на Pascal и учебники по Delphi. | ||||||||||||||||||
Авторам | ||||||||||||||||||
Все выпуски рассылки, начиная с первого, Вы можете прочитать в архиве рассылки. Сайт рассылки: Program Studio - всё для программиста и WEB мастера Автор рассылки: Павел Николаевич Ваши предложения, жалобы и рекомендации можете присылать на prs@narod.ru |