Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Арканоид OpenGL, несколько вопросов) 
:(
    Опции темы
DKey
Дата 26.1.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.12.2006
Где: Юкрэйн

Репутация: нет
Всего: нет



Всем привет! Помогите написать арканоид, вот нерабочий код:
Код

#include <gl\gl.h>
#include <gl\glu.h>    
#include <gl\glut.h>

GLfloat l = -0.3;
GLfloat p = 0.3;

GLfloat lr = 0.0;

GLfloat lp = 0.0;
GLfloat vn = 0.0;

GLfloat dr = 0.01;
GLfloat dr2 = 0.01;

void keys(unsigned char key, int x, int y)
{
if(key=='a'){lr = lr - 0.02;}
if(key=='d'){lr = lr + 0.02;}
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//Сфера
glPushMatrix();
glTranslatef(lp, vn, 0.0);
glColor3f(0.5, 0.01, 0.01);
glutWireSphere(0.1, 20, 20);
vn = vn + dr;
lp = lp + dr2;
//Условия сферы (прикосновение к стенкам)
if(vn>=0.9){vn = vn-dr; dr=-dr; lp = lp + dr2;}
if(lp>=1.0){vn = vn + dr; lp=lp-dr2; dr2=-dr2;}
if(lp<=-1.0){vn = vn+dr; lp = lp + dr2; dr2=0.01;}
//Условия сферы (прикосновение к платформе)
if((lp>=l)&&(lp<=p)&&(vn<=-0.7)){vn = vn + dr; dr = 0.01; lp = lp + dr2; dr2 = 0.01;}
if((lp<=l)&&(vn<=-0.7)){vn = vn - 1; dr=-dr; }
if((lp>=p)&&(vn<=-0.7)){vn = vn - 1; dr=-dr; }
glPopMatrix();

//Платформа
glPushMatrix();
glTranslatef(lr, -0.8, 0.0);
glBegin(GL_POLYGON);
glColor3d(0.4, 0.2, 0.5);
glVertex2d(l, 0.0);
glVertex2d(p, 0.0);
glVertex2d(p, -0.1);
glVertex2d(l, -0.1);
glEnd();
//Пересечение платформы со стенками
if(lr <= -0.7){lr = lr+0.005;}
if(lr >= 0.7){lr = lr-0.005;}
glPopMatrix();

glutSwapBuffers();
}



int main(int argc,char **argv)

glutInit(&argc,argv); 
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); 
glutInitWindowSize(640,480); 
glutInitWindowPosition(100,0); 
glutCreateWindow("Arcanoid beta2"); 
glClearColor(1,1,1,1);
glutDisplayFunc(display); 
glutKeyboardFunc(keys);
glutIdleFunc(display);
glutMainLoop();


И ещё, если можно, скажите как узнать столкнулись-ли обьекты? Спс.
PM MAIL ICQ   Вверх
nerezus
Дата 26.1.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



DKey, ты сразу без навыков программирования за OGL взялся? Ты уверен, что это то, что тебе нужно?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
AssassinFX
Дата 26.1.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 2.1.2007

Репутация: 3
Всего: 3



Цитата

 Помогите написать арканоид, вот нерабочий код:

У меня есть движок Reality Extend он рабочий но много чего там ещё нету,может допишите,и мне код отправите?! smile  

DKey, Ты понял да! smile 
PM MAIL   Вверх
DKey
Дата 26.1.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 31.12.2006
Где: Юкрэйн

Репутация: нет
Всего: нет



AssassinFX, в смысле??? 
PM MAIL ICQ   Вверх
AssassinFX
Дата 26.1.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 2.1.2007

Репутация: 3
Всего: 3



DKey,В том смысле что вопос из разряда "я делаю игру,может поможете сделать",если какойто конкретный вопрос есть то задавай но игру писать,это....... smile 
My ICQ Number: 281596059
PM MAIL   Вверх
RDN_ResidentS
  Дата 28.2.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



Народ! Тут такая проблема, тоже связанная с игрой арканоид...
Начинаю писать игру, и появилась одна загвоздка.
Вот текст


Код

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;


    HBRUSH hBrush, hOldBrush;
    HRGN RoundBall;
    BOOL Down = false;
    BOOL Up = false;

POINT point[2] = {{20, 20},{60, 60}};
RECT RoundBallRect = {point[0].x, point[0].y, point[1].x, point[1].y};
RECT RectangleField = {20, 20, 350, 450};
    


    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        case IDC_BUTTON1:
            SetTimer(hWnd, 1, 250, NULL);
            break;
        case IDC_BUTTON2:
            KillTimer(hWnd, 1);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        
        hBrush = CreateSolidBrush(RGB(255, 200, 255));
        hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);

        Rectangle(hdc, 20, 20, 350, 450);
        SelectObject(hdc,hOldBrush);
        DeleteObject(hBrush);

        hBrush = CreateHatchBrush(HS_DIAGCROSS,RGB(0, 255, 128));
        hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);

        RoundBall = CreateEllipticRgnIndirect(&RoundBallRect);
        FillRgn(hdc, RoundBall, hBrush);
        SelectObject(hdc,hOldBrush);
        DeleteObject(hBrush);
        
        EndPaint(hWnd, &ps);
        break;
    case WM_TIMER:
        
        if (Down)
        {
            Down = true;
        }

        else
        {
        
            while (Down);
            {
                if (RoundBallRect.top == 100)
                {
                    Down = true;
                    Up = false;
                }

                else
                {
                    RoundBallRect.top+=10;
                    RoundBallRect.bottom+=10;
                    Up = true;
                }
            }
        }
        if (Up)
        {
            Up = true;
        }

        else
        {
            while (Up);
            {
                if (RoundBallRect.bottom == 20)
                {
                    Up = true;
                    Down = false;
                }
                else
                {
                    RoundBallRect.top-=10;
                    RoundBallRect.bottom-=10;
                    Down = true;
                    //Up = false;
                }
            }
        }
        
        
        InvalidateRect(hWnd, &RoundBallRect, TRUE);
        InvalidateRect(hWnd, &RectangleField, TRUE);
        break;



Шарик двигается вниз, доходит до  RoundBallRect.top == 100 , потом поднимается вверх на один шаг  (RoundBallRect.top == 90) и зацикливается переходом вниз-вверх.
 Может гдето запорол.. подскажите.

Заранее благодарен.
PM MAIL   Вверх
Rickert
Дата 6.3.2007, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Чую я ни один писал в 11 классе арканоида. Приведи код расчёта координат


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
cipher
Дата 6.3.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.2.2006

Репутация: нет
Всего: нет



Это точно
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.