begin process at 2012 02 12 23:48:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > VAISSEAUX ANIMATOR[DEV C++]

VAISSEAUX ANIMATOR[DEV C++]


 Information sur la source

Note :
Aucune note
Catégorie :OpenGL Niveau :Initié Date de création :27/11/2001 Date de mise à jour :30/11/2001 00:00:00 Vu / téléchargé :3 447 / 205

Auteur : mastave

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

C'est juste un début d'application où vous devez tirer sur 2 carrés qui se déplacent tout seul.
Le seul vrai intérêt est le code source.
Dev C++

Source

  • // Includes
  • #include <windows.h>
  • #include <gl/gl.h>
  • #include <time.h>
  • #include <stdio.h>
  • #include <stdlib.h>
  • // Function Declarations
  • LRESULT CALLBACK
  • WndProc( HWND hWnd, UINT message,
  • WPARAM wParam, LPARAM lParam );
  • VOID EnableOpenGL( HWND hWnd, HDC * hDC, HGLRC * hRC );
  • VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC );
  • float carre1X = 0.25f; float carre1Y = 0.25f;
  • float carre2X = -0.25f; float carre2Y = -0.25f;
  • float carre3X = 0.25f; float carre3Y = -0.25f;
  • int nombre; int nombre2; int nombre3;
  • int choix, choix2, choix3;
  • int hasard = 60; int hasard2 = 60;
  • int n = 0;
  • int i = 0;
  • int a = 0;
  • float tir1X[100000]; float tir1Y[100000];
  • float tir2X[100000]; float tir2Y[100000];
  • float tir3X[100000]; float tir3Y[100000];
  • float couleur1 = 0.0f;
  • float couleur21 = 1.0f; float couleur22 = 1.0f; float couleur23 = 1.0f;
  • float couleur31 = 1.0f; float couleur32 = 1.0f; float couleur33 = 1.0f;
  • int indicateur = 0;
  • float score = 10.0f;
  • void shoot(int tir)
  • {
  • if (tir == 1)
  • {
  • glBegin(GL_POLYGON);
  • glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(tir1X[n], tir1Y[n]);
  • glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(tir1X[n] + 0.02f, tir1Y[n]);
  • glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(tir1X[n] + 0.02f, tir1Y[n] - 0.05f);
  • glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(tir1X[n], tir1Y[n] - 0.05f);
  • glEnd();
  • tir1Y[n] = tir1Y[n] - 0.01f;
  • if (tir1X[n] >= carre2X)
  • {
  • if (tir1X[n] <= carre2X + 0.15f)
  • {
  • if (tir1Y[n] - 0.05f >= carre2Y + 0.14f)
  • {
  • if (tir1Y[n] - 0.05f <= carre2Y + 0.15f)
  • {
  • couleur21 = couleur21 - 0.25f;
  • couleur22 = couleur21 - 0.25f;
  • couleur23 = couleur21 - 0.25f;
  • }
  • }
  • }
  • }
  • if (tir1X[n] >= carre3X)
  • {
  • if (tir1X[n] <= carre3X + 0.15f)
  • {
  • if (tir1Y[n] - 0.05f >= carre3Y + 0.14f)
  • {
  • if (tir1Y[n] - 0.05f <= carre3Y + 0.15f)
  • {
  • couleur31 = couleur31 - 0.25f;
  • couleur32 = couleur32 - 0.25f;
  • couleur33 = couleur33 - 0.25f;
  • }
  • }
  • }
  • }
  • }
  • if (tir == 2)
  • {
  • glBegin(GL_POLYGON);
  • glColor3f(0.0f, 1.0f, 1.0f); glVertex2f(tir2X[i], tir2Y[i]);
  • glColor3f(0.0f, 1.0f, 1.0f); glVertex2f(tir2X[i] + 0.02f, tir2Y[i]);
  • glColor3f(0.0f, 1.0f, 1.0f); glVertex2f(tir2X[i] + 0.02f, tir2Y[i] + 0.05f);
  • glColor3f(0.0f, 1.0f, 1.0f); glVertex2f(tir2X[i], tir2Y[i] + 0.05f);
  • glEnd();
  • tir2Y[i] = tir2Y[i] + 0.01f;
  • if (tir2X[i] >= carre1X)
  • {
  • if (tir2X[i] <= carre1X + 0.15f)
  • {
  • if (tir2Y[i] + 0.05f >= carre1Y)
  • {
  • if (tir2Y[i] + 0.05f <= carre1Y + 0.1f)
  • {
  • couleur1 = 1.0f;
  • if (indicateur <= 0)
  • {
  • score = score - 1.0f;
  • indicateur = 10;
  • }
  • }
  • }
  • }
  • }
  • }
  • if (tir == 3)
  • {
  • glBegin(GL_POLYGON);
  • glColor3f(0.0f, 0.5f, 1.0f); glVertex2f(tir3X[a], tir3Y[a]);
  • glColor3f(0.0f, 0.5f, 1.0f); glVertex2f(tir3X[a] + 0.02f, tir3Y[a]);
  • glColor3f(0.0f, 0.5f, 1.0f); glVertex2f(tir3X[a] + 0.02f, tir3Y[a] + 0.05f);
  • glColor3f(0.0f, 0.5f, 1.0f); glVertex2f(tir3X[a], tir3Y[a] + 0.05f);
  • glEnd();
  • tir3Y[a] = tir3Y[a] + 0.01f;
  • if (tir3X[a] >= carre1X)
  • {
  • if (tir3X[a] <= carre1X + 0.15f)
  • {
  • if (tir3Y[a] + 0.05f >= carre1Y)
  • {
  • if (tir3Y[a] + 0.05f <= carre1Y + 0.1f)
  • {
  • couleur1 = 1.0f;
  • if (indicateur <= 0)
  • {
  • score = score - 1.0f;
  • indicateur = 10;
  • }
  • }
  • }
  • }
  • }
  • }
  • }
  • // WinMain
  • int WINAPI
  • WinMain( HINSTANCE hInstance,
  • HINSTANCE hPrevInstance,
  • LPSTR lpCmdLine,
  • int iCmdShow )
  • {
  • srand( (unsigned)time( NULL ) );
  • WNDCLASS wc;
  • HWND hWnd;
  • HDC hDC;
  • HGLRC hRC;
  • MSG msg;
  • BOOL bQuit = FALSE;
  • float theta = 0.0f;
  • // register window class
  • wc.style = CS_OWNDC;
  • wc.lpfnWndProc = WndProc;
  • wc.cbClsExtra = 0;
  • wc.cbWndExtra = 0;
  • wc.hInstance = hInstance;
  • wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
  • wc.hCursor = LoadCursor( NULL, IDC_ARROW );
  • wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );
  • wc.lpszMenuName = NULL;
  • wc.lpszClassName = "GLSample";
  • RegisterClass( &wc );
  • // create main window
  • hWnd = CreateWindow(
  • "GLSample", "OpenGL Sample",
  • WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
  • 0, 0, 700, 700,
  • NULL, NULL, hInstance, NULL );
  • // enable OpenGL for the window
  • EnableOpenGL( hWnd, &hDC, &hRC );
  • // program main loop
  • while ( !bQuit ) {
  • // check for messages
  • if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
  • // handle or dispatch messages
  • if ( msg.message == WM_QUIT ) {
  • bQuit = TRUE;
  • } else {
  • TranslateMessage( &msg );
  • DispatchMessage( &msg );
  • }
  • } else {
  • // OpenGL animation code goes here
  • glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
  • glClear( GL_COLOR_BUFFER_BIT );
  • glBegin(GL_POLYGON);
  • glColor3f(1.0f, couleur1, 0.0f); glVertex2f(carre1X, carre1Y);
  • glColor3f(1.0f, couleur1, 0.0f); glVertex2f(carre1X + 0.15f, carre1Y);
  • glColor3f(1.0f, couleur1, 0.0f); glVertex2f(carre1X + 0.15f, carre1Y + 0.15f);
  • glColor3f(1.0f, couleur1, 0.0f); glVertex2f(carre1X, carre1Y + 0.15f);
  • glEnd();
  • if (choix == 1)
  • {
  • shoot(1);
  • }
  • nombre2 = rand() % hasard;
  • if (hasard != 60)
  • {
  • hasard = hasard - 1;
  • }
  • if (nombre2 == 53)
  • {
  • hasard = hasard + 40;
  • choix2 = 1;
  • i = i + 1;
  • tir2X[i] = carre2X + 0.075f;
  • tir2Y[i] = carre2Y + 0.15f;
  • }
  • if (choix2 == 1)
  • {
  • shoot(2);
  • }
  • nombre3 = rand() % hasard2;
  • if (hasard2 != 60)
  • {
  • hasard2 = hasard2 - 1;
  • }
  • if (nombre3 == 53)
  • {
  • hasard2 = hasard2 + 40;
  • choix3 = 1;
  • a = a + 1;
  • tir3X[a] = carre3X + 0.075f;
  • tir2Y[a] = carre3Y + 0.15f;
  • }
  • if (choix3 == 1)
  • {
  • shoot(3);
  • }
  • glBegin(GL_POLYGON);
  • nombre = rand() % 14;
  • if (nombre == 0)
  • {
  • if (carre2Y <= 0.0f)
  • {
  • carre2Y = carre2Y + 0.05f;
  • }
  • }
  • if (nombre == 1)
  • {
  • if (carre2Y >= -0.9f)
  • {
  • carre2Y = carre2Y - 0.05f;
  • }
  • }
  • if (nombre == 2)
  • {
  • if (carre2X <= 0.9f)
  • {
  • carre2X = carre2X + 0.05f;
  • }
  • }
  • if (nombre == 3)
  • {
  • if (carre2X >= -0.9f)
  • {
  • carre2X = carre2X - 0.05f;
  • }
  • }
  • if (nombre == 4)
  • {
  • if (carre2X <= 0.9f)
  • {
  • carre2X = carre2X + 0.05f;
  • }
  • }
  • if (nombre == 5)
  • {
  • if (carre2X >= -0.9f)
  • {
  • carre2X = carre2X - 0.05f;
  • }
  • }
  • if (nombre == 6)
  • {
  • if (carre3X >= -0.9f)
  • {
  • carre3X = carre3X - 0.05f;
  • }
  • }
  • if (nombre == 7)
  • {
  • if (carre3X >= -0.9f)
  • {
  • carre3X = carre3X - 0.05f;
  • }
  • }
  • if (nombre == 8)
  • {
  • if (carre3X <= 0.9f)
  • {
  • carre3X = carre3X + 0.05f;
  • }
  • }
  • if (nombre == 9)
  • {
  • if (carre3X <= 0.9f)
  • {
  • carre3X = carre3X + 0.05f;
  • }
  • }
  • if (nombre == 10)
  • {
  • if (carre3Y >= -0.9f)
  • {
  • carre3Y = carre3Y - 0.05f;
  • }
  • }
  • if (nombre == 11)
  • {
  • if (carre3Y <= 0.0f)
  • {
  • carre3Y = carre3Y + 0.05f;
  • }
  • }
  • glColor3f(couleur21, couleur22, couleur23); glVertex2f(carre2X, carre2Y);
  • glColor3f(couleur21, couleur22, couleur23); glVertex2f(carre2X + 0.15f, carre2Y);
  • glColor3f(couleur21, couleur22, couleur23); glVertex2f(carre2X + 0.15f, carre2Y + 0.15f);
  • glColor3f(couleur21, couleur22, couleur23); glVertex2f(carre2X, carre2Y + 0.15f);
  • glEnd();
  • glBegin(GL_POLYGON);
  • glColor3f(couleur31, couleur32, couleur33); glVertex2f(carre3X, carre3Y);
  • glColor3f(couleur31, couleur32, couleur33); glVertex2f(carre3X + 0.15f, carre3Y);
  • glColor3f(couleur31, couleur32, couleur33); glVertex2f(carre3X + 0.15f, carre3Y + 0.15f);
  • glColor3f(couleur31, couleur32, couleur33); glVertex2f(carre3X, carre3Y + 0.15f);
  • glEnd();
  • glBegin(GL_POLYGON);
  • glColor3f(0.5f, 0.5f, 1.0f); glVertex2f(0.50f, 0.80f);
  • glColor3f(1.0f, 0.5f, 0.5f); glVertex2f(0.50f + (score / 100) * 5, 0.80f);
  • glColor3f(0.5f, 1.0f, 0.5f); glVertex2f(0.50f + (score / 100) * 5, 0.90f);
  • glColor3f(1.0f, 0.1f, 0.1f); glVertex2f(0.50f, 0.90f);
  • glEnd();
  • indicateur = indicateur - 1;
  • SwapBuffers( hDC );
  • }
  • }
  • // shutdown OpenGL
  • DisableOpenGL( hWnd, hDC, hRC );
  • // destroy the window explicitly
  • DestroyWindow( hWnd );
  • return msg.wParam;
  • }
  • // Window Procedure
  • LRESULT CALLBACK
  • WndProc( HWND hWnd, UINT message,
  • WPARAM wParam, LPARAM lParam )
  • {
  • switch ( message ) {
  • case WM_CREATE:
  • return 0;
  • case WM_CLOSE:
  • PostQuitMessage( 0 );
  • return 0;
  • case WM_DESTROY:
  • return 0;
  • case WM_KEYDOWN:
  • switch ( wParam ) {
  • case VK_ESCAPE:
  • PostQuitMessage( 0 );
  • return 0;
  • case VK_UP:
  • if (carre1Y <= 0.9f)
  • {
  • carre1Y = carre1Y + 0.05f;
  • }
  • return DefWindowProc( hWnd,
  • message, wParam, lParam );
  • break;
  • case VK_DOWN:
  • if (carre1Y >= 0.1f)
  • {
  • carre1Y = carre1Y - 0.05f;
  • }
  • return DefWindowProc( hWnd,
  • message, wParam, lParam );
  • break;
  • case VK_LEFT:
  • if (carre1X >= -1.0f)
  • {
  • carre1X = carre1X - 0.05f;
  • }
  • return DefWindowProc( hWnd,
  • message, wParam, lParam );
  • break;
  • case VK_RIGHT:
  • if (carre1X <= 0.9f)
  • {
  • carre1X = carre1X + 0.05f;
  • }
  • return DefWindowProc( hWnd,
  • message, wParam, lParam );
  • break;
  • case VK_SPACE:
  • n = n + 1;
  • choix = 1;
  • tir1X[n] = carre1X + 0.075f;
  • tir1Y[n] = carre1Y;
  • return DefWindowProc( hWnd,
  • message, wParam, lParam );
  • break;
  • }
  • return 0;
  • default:
  • return DefWindowProc( hWnd,
  • message, wParam, lParam );
  • }
  • }
  • // Enable OpenGL
  • VOID EnableOpenGL( HWND hWnd, HDC * hDC, HGLRC * hRC )
  • {
  • PIXELFORMATDESCRIPTOR pfd;
  • int iFormat;
  • // get the device context (DC)
  • *hDC = GetDC( hWnd );
  • // set the pixel format for the DC
  • ZeroMemory( &pfd, sizeof( pfd ) );
  • pfd.nSize = sizeof( pfd );
  • pfd.nVersion = 1;
  • pfd.dwFlags = PFD_DRAW_TO_WINDOW |
  • PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
  • pfd.iPixelType = PFD_TYPE_RGBA;
  • pfd.cColorBits = 24;
  • pfd.cDepthBits = 16;
  • pfd.iLayerType = PFD_MAIN_PLANE;
  • iFormat = ChoosePixelFormat( *hDC, &pfd );
  • SetPixelFormat( *hDC, iFormat, &pfd );
  • // create and enable the render context (RC)
  • *hRC = wglCreateContext( *hDC );
  • wglMakeCurrent( *hDC, *hRC );
  • }
  • // Disable OpenGL
  • VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC )
  • {
  • wglMakeCurrent( NULL, NULL );
  • wglDeleteContext( hRC );
  • ReleaseDC( hWnd, hDC );
  • }
// Includes

#include <windows.h>
#include <gl/gl.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
// Function Declarations

LRESULT CALLBACK 
WndProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam );
VOID EnableOpenGL( HWND hWnd, HDC * hDC, HGLRC * hRC );
VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC );
float carre1X = 0.25f; float carre1Y = 0.25f;
float carre2X = -0.25f; float carre2Y = -0.25f;
float carre3X = 0.25f;  float carre3Y = -0.25f;
int nombre; int nombre2; int nombre3;
int choix, choix2, choix3;
int hasard = 60; int hasard2 = 60;
int n = 0;
int i = 0;
int a = 0;
float tir1X[100000]; float tir1Y[100000];
float tir2X[100000]; float tir2Y[100000];
float tir3X[100000]; float tir3Y[100000];
float couleur1 = 0.0f;
float couleur21 = 1.0f; float couleur22 = 1.0f; float couleur23 = 1.0f;
float couleur31 = 1.0f; float couleur32 = 1.0f; float couleur33 = 1.0f;
int indicateur = 0;
float score = 10.0f;

void shoot(int tir)
{
if (tir == 1)
{
glBegin(GL_POLYGON);
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(tir1X[n], tir1Y[n]);
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(tir1X[n] + 0.02f, tir1Y[n]);
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(tir1X[n] + 0.02f, tir1Y[n] - 0.05f);
glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(tir1X[n], tir1Y[n] - 0.05f);

glEnd();
tir1Y[n] = tir1Y[n] - 0.01f;
if (tir1X[n] >= carre2X)
{
if (tir1X[n] <= carre2X + 0.15f)
{
if (tir1Y[n] - 0.05f >= carre2Y + 0.14f)
{
if (tir1Y[n] - 0.05f <= carre2Y + 0.15f)
{
couleur21 = couleur21 - 0.25f;
couleur22 = couleur21 - 0.25f;
couleur23 = couleur21 - 0.25f;
}
}
}
}

if (tir1X[n] >= carre3X)
{
if (tir1X[n] <= carre3X + 0.15f)
{
if (tir1Y[n] - 0.05f >= carre3Y + 0.14f)
{
if (tir1Y[n] - 0.05f <= carre3Y + 0.15f)
{
couleur31 = couleur31 - 0.25f;
couleur32 = couleur32 - 0.25f;
couleur33 = couleur33 - 0.25f;
}
}
}
}

}
if (tir == 2)
{
glBegin(GL_POLYGON);
glColor3f(0.0f, 1.0f, 1.0f);   glVertex2f(tir2X[i], tir2Y[i]);
glColor3f(0.0f, 1.0f, 1.0f);   glVertex2f(tir2X[i] + 0.02f, tir2Y[i]);
glColor3f(0.0f, 1.0f, 1.0f);   glVertex2f(tir2X[i] + 0.02f, tir2Y[i] + 0.05f);
glColor3f(0.0f, 1.0f, 1.0f);   glVertex2f(tir2X[i], tir2Y[i] + 0.05f);

glEnd();
tir2Y[i] = tir2Y[i] + 0.01f;
if (tir2X[i] >= carre1X)
{
if (tir2X[i] <= carre1X + 0.15f)
{
if (tir2Y[i] + 0.05f >= carre1Y)
{
if (tir2Y[i] + 0.05f <= carre1Y + 0.1f)
{
couleur1 = 1.0f;
if (indicateur <= 0)
{
score = score - 1.0f;
indicateur = 10;
}
}
}
}
}

}

if (tir == 3)
{
glBegin(GL_POLYGON);
glColor3f(0.0f, 0.5f, 1.0f);   glVertex2f(tir3X[a], tir3Y[a]);
glColor3f(0.0f, 0.5f, 1.0f);   glVertex2f(tir3X[a] + 0.02f, tir3Y[a]);
glColor3f(0.0f, 0.5f, 1.0f);   glVertex2f(tir3X[a] + 0.02f, tir3Y[a] + 0.05f);
glColor3f(0.0f, 0.5f, 1.0f);   glVertex2f(tir3X[a], tir3Y[a] + 0.05f);

glEnd();
tir3Y[a] = tir3Y[a] + 0.01f;
if (tir3X[a] >= carre1X)
{
if (tir3X[a] <= carre1X + 0.15f)
{
if (tir3Y[a] + 0.05f >= carre1Y)
{
if (tir3Y[a] + 0.05f <= carre1Y + 0.1f)
{
couleur1 = 1.0f;
if (indicateur <= 0)
{
score = score - 1.0f;
indicateur = 10;
}
}
}
}
}

}


}

// WinMain

int WINAPI 
WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int iCmdShow )
{
srand( (unsigned)time( NULL ) ); 
WNDCLASS wc;
HWND hWnd;
HDC hDC;
HGLRC hRC;
MSG msg;
BOOL bQuit = FALSE;
float theta = 0.0f;
// register window class
wc.style = CS_OWNDC;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );
wc.lpszMenuName = NULL;
wc.lpszClassName = "GLSample";
RegisterClass( &wc );

// create main window
hWnd = CreateWindow( 
"GLSample", "OpenGL Sample", 
WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
0, 0, 700, 700,
NULL, NULL, hInstance, NULL );

// enable OpenGL for the window
EnableOpenGL( hWnd, &hDC, &hRC );

// program main loop
while ( !bQuit ) {

// check for messages
if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {

// handle or dispatch messages
if ( msg.message == WM_QUIT ) {
bQuit = TRUE;
} else {
TranslateMessage( &msg );
DispatchMessage( &msg );
}

} else {


// OpenGL animation code goes here
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClear( GL_COLOR_BUFFER_BIT );
glBegin(GL_POLYGON);
glColor3f(1.0f, couleur1, 0.0f);   glVertex2f(carre1X, carre1Y);
glColor3f(1.0f, couleur1, 0.0f);   glVertex2f(carre1X + 0.15f, carre1Y);
glColor3f(1.0f, couleur1, 0.0f);   glVertex2f(carre1X + 0.15f, carre1Y + 0.15f);
glColor3f(1.0f, couleur1, 0.0f);  glVertex2f(carre1X, carre1Y + 0.15f);
glEnd();

if (choix == 1)
{
shoot(1);
}

nombre2 = rand() % hasard;
if (hasard != 60)
{
hasard = hasard - 1;
}
if (nombre2 == 53)
{
hasard = hasard + 40;
choix2 = 1;
i = i + 1;
tir2X[i] = carre2X + 0.075f;
tir2Y[i] = carre2Y + 0.15f;
}

if (choix2 == 1)
{
shoot(2);
}

nombre3 = rand() % hasard2;
if (hasard2 != 60)
{
hasard2 = hasard2 - 1;
}
if (nombre3 == 53)
{
hasard2 = hasard2 + 40;
choix3 = 1;
a = a + 1;
tir3X[a] = carre3X + 0.075f;
tir2Y[a] = carre3Y + 0.15f;
}

if (choix3 == 1)
{
shoot(3);
}

glBegin(GL_POLYGON);
nombre = rand() % 14;
if (nombre == 0)
{
if (carre2Y <= 0.0f)
{
carre2Y = carre2Y + 0.05f;
}
}

if (nombre == 1)
{
if (carre2Y >= -0.9f)
{
carre2Y = carre2Y - 0.05f;
}
}

if (nombre == 2)
{
if (carre2X <= 0.9f)
{
carre2X = carre2X + 0.05f;
}
}

if (nombre == 3)
{
if (carre2X >= -0.9f)
{
carre2X = carre2X - 0.05f;
}
}

if (nombre == 4)
{
if (carre2X <= 0.9f)
{
carre2X = carre2X + 0.05f;
}
}

if (nombre == 5)
{
if (carre2X >= -0.9f)
{
carre2X = carre2X - 0.05f;
}
}

if (nombre == 6)
{
if (carre3X >= -0.9f)
{
carre3X = carre3X - 0.05f;
}
}

if (nombre == 7)
{
if (carre3X >= -0.9f)
{
carre3X = carre3X - 0.05f;
}
}

if (nombre == 8)
{
if (carre3X <= 0.9f)
{
carre3X = carre3X + 0.05f;
}
}

if (nombre == 9)
{
if (carre3X <= 0.9f)
{
carre3X = carre3X + 0.05f;
}
}

if (nombre == 10)
{
if (carre3Y >= -0.9f)
{
carre3Y = carre3Y - 0.05f;
}
}

if (nombre == 11)
{
if (carre3Y <= 0.0f)
{
carre3Y = carre3Y + 0.05f;
}
}

glColor3f(couleur21, couleur22, couleur23);   glVertex2f(carre2X, carre2Y);
glColor3f(couleur21, couleur22, couleur23);   glVertex2f(carre2X + 0.15f, carre2Y);
glColor3f(couleur21, couleur22, couleur23);   glVertex2f(carre2X + 0.15f, carre2Y + 0.15f);
glColor3f(couleur21, couleur22, couleur23);  glVertex2f(carre2X, carre2Y + 0.15f);
glEnd();

glBegin(GL_POLYGON);
glColor3f(couleur31, couleur32, couleur33);   glVertex2f(carre3X, carre3Y);
glColor3f(couleur31, couleur32, couleur33);   glVertex2f(carre3X + 0.15f, carre3Y);
glColor3f(couleur31, couleur32, couleur33);   glVertex2f(carre3X + 0.15f, carre3Y + 0.15f);
glColor3f(couleur31, couleur32, couleur33);  glVertex2f(carre3X, carre3Y + 0.15f);
glEnd();

glBegin(GL_POLYGON);
glColor3f(0.5f, 0.5f, 1.0f);   glVertex2f(0.50f, 0.80f);
glColor3f(1.0f, 0.5f, 0.5f);   glVertex2f(0.50f + (score / 100) * 5, 0.80f);
glColor3f(0.5f, 1.0f, 0.5f);   glVertex2f(0.50f + (score / 100) * 5, 0.90f);
glColor3f(1.0f, 0.1f, 0.1f);   glVertex2f(0.50f, 0.90f);
glEnd();

indicateur = indicateur - 1;
SwapBuffers( hDC );
}

}

// shutdown OpenGL
DisableOpenGL( hWnd, hDC, hRC );

// destroy the window explicitly
DestroyWindow( hWnd );

return msg.wParam;

}



// Window Procedure

LRESULT CALLBACK 
WndProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam )
{

switch ( message ) {

case WM_CREATE:
return 0;

case WM_CLOSE:
PostQuitMessage( 0 );
return 0;

case WM_DESTROY:
return 0;

case WM_KEYDOWN:
switch ( wParam ) {

case VK_ESCAPE:
PostQuitMessage( 0 );
return 0;

case VK_UP:
if (carre1Y <= 0.9f)
{
carre1Y = carre1Y + 0.05f;
}
return DefWindowProc( hWnd, 
message, wParam, lParam );
break;

case VK_DOWN:
if (carre1Y >= 0.1f)
{
carre1Y = carre1Y - 0.05f;
}
return DefWindowProc( hWnd,
message, wParam, lParam );
break;


case VK_LEFT:
if (carre1X >= -1.0f)
{
carre1X = carre1X - 0.05f;
}
return DefWindowProc( hWnd, 
message, wParam, lParam );
break;

case VK_RIGHT:
if (carre1X <= 0.9f)
{
carre1X = carre1X + 0.05f;
}
return DefWindowProc( hWnd,
message, wParam, lParam );
break;

case VK_SPACE:
n = n + 1;
choix = 1;
tir1X[n] = carre1X + 0.075f;
tir1Y[n] = carre1Y;
return DefWindowProc( hWnd,
message, wParam, lParam );
break;
}
return 0;

default:
return DefWindowProc( hWnd, 
message, wParam, lParam );

}

}

// Enable OpenGL

VOID EnableOpenGL( HWND hWnd, HDC * hDC, HGLRC * hRC )
{
PIXELFORMATDESCRIPTOR pfd;
int iFormat;

// get the device context (DC)
*hDC = GetDC( hWnd );

// set the pixel format for the DC
ZeroMemory( &pfd, sizeof( pfd ) );
pfd.nSize = sizeof( pfd );
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | 
PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 16;
pfd.iLayerType = PFD_MAIN_PLANE;
iFormat = ChoosePixelFormat( *hDC, &pfd );
SetPixelFormat( *hDC, iFormat, &pfd );

// create and enable the render context (RC)
*hRC = wglCreateContext( *hDC );
wglMakeCurrent( *hDC, *hRC );

}

// Disable OpenGL

VOID DisableOpenGL( HWND hWnd, HDC hDC, HGLRC hRC )
{
wglMakeCurrent( NULL, NULL );
wglDeleteContext( hRC );
ReleaseDC( hWnd, hDC );
} 

   

 Conclusion

sous la suggestion de Jo (commentaire plus bas), je précise le compilateur : Dev C++.
Pour compiler la source, il faut créer un project .dev et mettre la source dans un fichier .cpp

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Vaisseaux

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture .::MATRIX::. [DEV C++]
Source avec Zip ANIMATION D'UN CERCLE AVEC TOUCHES + FILM[2D][DEVC++4][GLUT]
FONCTION MENU AVEC FLÈCHES EN MODE TEXTE[DEV C++]
Source avec Zip POLYGONES DIVERSES SANS GLUT[DEV C++...]
(-:FONCTION TABLEAU EN MODE TEXTE![DEV C++]

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER DES COURBES DE BEZIER par shorzy
Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip Source avec une capture CLASSE AVEC OPENGL - OBJETS 3D ET ANIMATIONS par rasta63
Source avec Zip Source avec une capture LETTRES 3D AVEC OPENGL ET QT par opossum_farceur
Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03

Commentaires et avis

Commentaire de Xpand le 13/01/2002 20:52:18

Jo : tu sais parler français ?

Commentaire de 751 le 25/07/2003 19:55:40

Tu as raison c'est pas bien ça

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales