Sabtu, 19 Mei 2012

Membuat Game dengan openGL

Siapa bilang membuat game itu susah...
bagaimana cara membuat game sederhana 2D dan 3D menggunakan bahasa C++ dan openGL.

  • Langkah pertama yang harus dilakukan adalah menginstal program aplikasi untuk menulis bahasa pemrograman c++ dan plugin glut OpenGL. disini saya menggunakan dev c++ dan plugin free glut.
  • download dev c++, free glut, koding programnya dan permainannya secara gratis di asteroid atau di webnya langsung dev c++.
  • Setelah menginstal programnya, buat project baru, pilih multimedia, glut, ketikkan nama projectnya, pilih c++/cpp dan klik ok.
  • Hapus program default dari glut, dan tuliskan program. 
ini merupakan program utama dari 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();

}
  • ketikkan kembali / salin (copy) semua program dari folder source code yang sudah di download, buka dengan notepad / notepad++ atau langsung dengan devc++.
  • untuk mengcompile ulang program aplikasinya buka asteroid.dev. pilih dan klik main.cpp, jalankan compile and run di dev c++.
Selamat mencoba....

Contoh lain game yang dibuat menggunakan dev c++ dan openGL

Snake

donwload snake dan source code game snake

contoh lain game 3D yang dibuat menggunakan bahasa pemrograman c++ dan openGL

Helicopter 3D

download source code dan aplikasi game helicopter

Dufan 3D

download source code dan aplikasi dufan 3D

11 komentar:

  1. bila menggunakan microsoft visual c++ , buat bikin file .hpp gmn ya ??
    thx ilmunya bro :)

    BalasHapus
  2. @pheena Rhmasari: mohon maaf pertanyaannya baru dibalas. Untuk membuat file header .hpp setau saya ada fasilitasnya di microsoft visual c++. lebih mudahnya bisa dibuat di notepad++ terlebih dahulu lalu compile programnya. :D

    @Hero Punuindoong: jika ingin mengunduh permainan beserta kode sumber programnya langsung diklik saja linknya saya tidak menyisipkan permintaan password apapun di cloud mediafire saya. :D

    BalasHapus
  3. widihhh mantap bgt dachhh bisa di coba nichhh

    thank's ya

    BalasHapus
  4. bisa bikinin source code catur jawa dengan open gl atau web gl gak?thanks

    BalasHapus
  5. bisa minta tutorial helicopter dari awal pembuatan sampe jadi g?

    BalasHapus
  6. min saya compile main.cpp kok error y di glenum textFormat dan gl Textture 2d ny?

    BalasHapus
  7. Ini baru mantap,bikin fire on, saya juga suka bikin pake Vc++ dan OpemGL

    www.heriady.com

    BalasHapus
    Balasan
    1. Sorry ya alamat di atas saya ganti dengan blog yang baru

      heriadyblog.blogspot.com

      Hapus