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();
}
read more