|
26.12.2009, 09:56
|
#1
|
AnyKey`щик
Регистрация: 26.12.2009
Сообщений: 9
Написано 0 полезных сообщений (для 0 пользователей)
|
OpenGL арконойд проблема с отскакиванием шарика от платформы
всем здрасте.
я начал писать арконойд с помощью OpenGL
в с++ я ешо мало чего понимаю и поэтому прошу у вас помощи.
дело в том что я пытаюсь реализовать отскок шарика от платформы а у меня получаеться не так как надо тоесть платформа идет в лево шарик летит вверх,а платформа идет вправо шарик летит в низ и самое главное не происходит отскока от платформы для того чтобы вы поняли о чем я кидаю код
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <GL/glaux.h>
#pragma comment (lib,"glut32.lib")
#pragma comment (lib,"glaux.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"opengl32.lib")
extern double xp=0.1;//координаты шарика
extern double yp=0.1;//координаты шарика
extern double vx=0.1;//координаты скорости
extern double vy=0.1;//координаты скорости
extern double dt=0.1;
void CALLBACK resize(int width,int height)
{
glViewport(0,0,width,height);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(-5,5, -5,5, 2,12);
gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
glMatrixMode( GL_MODELVIEW );
}
void podstavka (void)
{
glPushMatrix();
glTranslated(vx/0.1, 0.0, 0.0);
glTranslated(-1.0,-4.5, 0.0);
glColor3d(0,0,1);
auxSolidBox(3,0.2,1);
glPopMatrix();
}
void sharik()
{
glPushMatrix();
glTranslated(0, xp/1.0, 0.0);
auxSolidSphere(0.3);
xp = xp-vx*dt;
yp = yp-vy*dt;
if(vy ==vx)
vy = -vy;
glPopMatrix();
}
void CALLBACK display(void)
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
podstavka();
sharik();
auxSwapBuffers();
}
void CALLBACK levo(void)
{
vx=vx-0.03;
}
void CALLBACK pravo(void)
{
vx=vx+0.03;
}
void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};
auxInitPosition( 50, 10, 400, 400);
auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
auxInitWindow( L"Sphere2" );
auxIdleFunc(display);
auxKeyFunc(AUX_LEFT,levo);
auxKeyFunc(AUX_RIGHT,pravo);
auxReshapeFunc(resize);
glEnable(GL_ALPHA_TEST);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
auxMainLoop(display);
}
прошу помогите пожалуйста
|
(Offline)
|
|
26.12.2009, 14:51
|
#2
|
AnyKey`щик
Регистрация: 26.12.2009
Сообщений: 9
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: OpenGL арконойд проблема с отскакиванием шарика от платформы
что незнает некто как решить ету проблему если можно то с пояснением плиз
|
(Offline)
|
|
26.12.2009, 15:37
|
#3
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: OpenGL арконойд проблема с отскакиванием шарика от платформы
Имей терпение, здесь некоторые днями, а то и неделями ждут ответа
|
(Offline)
|
|
26.12.2009, 23:23
|
#4
|
AnyKey`щик
Регистрация: 26.12.2009
Сообщений: 9
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: OpenGL арконойд проблема с отскакиванием шарика от платформы
все разобрался ! надо через через переменные которые за координаты x и y отвечают делать проверку!
кстате в .NET MsgBox - ето вылазинье окно с сообщением ,а в OpenGL как ета функция выглядит? вроде где-то смотрел ,но забыл где ,и вспомнить немогу прошу подскажите
|
(Offline)
|
|
27.12.2009, 15:19
|
#5
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Ответ: OpenGL арконойд проблема с отскакиванием шарика от платформы
Для того, чтобы отобразить MessageBox, надо вызывать функцию, специфичную для выбранной оконной системы. Если у тебя программа под виндой запускается, можно написать так:
void main(int argc, char **argv)
{
// ...
// по имени приложения находим HWND окна
HWND winHandle = FindWindow(NULL, argv[0]);
MessageBox(winHandle, "сообщение", "заголовок", MB_OKCANCEL);
// ...
}
Код взят отсюда: http://www.gamedev.net/community/for...age=1�
Или еще проще - создать немодальный диалог:
MessageBox(NULL, "сообщение", "заголовок", MB_OKCANCEL);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:33.
|