Sunday 7 September 2014

Game Asteroid



main.cpp

#include "painter.hpp"
#include "game.hpp"
#include

Game game;

void display()
{
   glClear(GL_COLOR_BUFFER_BIT);
   Painter p;
   game.draw(p);
 
   glutSwapBuffers();
}

// Fungsi navigasi pesawat
Keys keys;

void keyEvent(int key, int, int)
{
  switch(key)
  {
  case GLUT_KEY_LEFT:
         keys.set(KEY_LEFT);
         break;
  case GLUT_KEY_RIGHT:
         keys.set(KEY_RIGHT);
         break;
  case GLUT_KEY_DOWN:
         keys.set(KEY_DOWN);
         break;
  case GLUT_KEY_UP:
         keys.set(KEY_UP);
         break;      
  }
}


void keyUpEvent(int key, int, int)
{
   switch (key)
   {
      case GLUT_KEY_LEFT:
         keys.reset(KEY_LEFT);
         break;
      case GLUT_KEY_RIGHT:
         keys.reset(KEY_RIGHT);
         break;
      case GLUT_KEY_DOWN:
         keys.reset(KEY_DOWN);
         break;
      case GLUT_KEY_UP:
         keys.reset(KEY_UP);
         break;      
   }  
}

//Fungsi untuk menembakan senjata
void spaceEvent(unsigned char key, int, int)
{
  if (key == ' ')
      keys.set(KEY_FIRE);
}

void upSpaceEvent(unsigned char key, int, int)
{
  if (key == ' ')
      keys.reset(KEY_FIRE);
}

// Fungsi Delay waktu
void timer(int = 0)
{
     game.tick(keys);
 
     display();
     glutTimerFunc(Game::DELTA_T, timer, 0);
}

int main(int argc, char **argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
   glutInitWindowSize(850, 480);
   glutInitWindowPosition(250, 180);
   glutCreateWindow("Asteroid");
   glClearColor(0, 0, 0, 1.0);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(-Game::WIDTH / 2, Game::WIDTH / 2, -Game::HEIGHT / 2, Game::HEIGHT / 2, -1.0, 1.0);
   glutDisplayFunc(display);
   glutSpecialFunc(keyEvent);
   glutSpecialUpFunc(keyUpEvent);
   glutKeyboardFunc(spaceEvent);
   glutKeyboardUpFunc(upSpaceEvent); //
   timer();
 
   glutMainLoop();

}


0 comments:

Post a Comment