Jumat, 21 Agustus 2015

Membuat Musuh Terakhir atau Big Boss Game Engine

Membuat musuh terakhir dengan game engine


Selamat pagi rekan-rekan, teman-teman, adik-adik, agan dan aganwati, tak terasa ya pembahasan tentang game engine yang ogut buat telah berjalan sedemikian jauh. Dan kali ini ogut akan membahas tentang musuh terakhir yang akan ditampilkan di game engine.

Musuh terakhir atau biasa disebut dengan raja atau dewa oleh para pemain game, tetapi ogut lebih senang menyebutnya dengan istiah Big Boss. Big Boss disertakan sebagai musuh terakhir yang harus dikalahkan oleh Jack Fighter untuk memenangkan peperangan. Dengan game engine kode program yang harus di tambahkan sangat singkat dan sederhana Anda hanya cukup meng-edit file MainProgram.cpp dan dalam sekejab mata Big Boss akan muncul.


geDisplayBigBoss
Untuk menampilkan raja atau Big Boss di layar monitor caranya dengan menggunakan fungsi geDisplayBigBoss yang ditempatkan dalam pengulangan while.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP,
HINSTANCE HPrevinstanceP,
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameOpenGL.DisplayLoading();

GameObject.gePlayRandomSoundBG();

GameObject.geSetGameLoop();

/////////////////////////////////////////////////
//kondisi while ditambahkan GameObject.geGameLoop
//jika Big Boss ditampilkan
/////////////////////////////////////////////////
while (GameOpenGL.OpenGLMainLoop && GameObject.geGameLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game,
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

GameObject.geDisplayEnemy();

/////////////////////////////
//Big Boss
/////////////////////////////
GameObject.geDisplayBigBoss();

GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Program di atas bila dijalankan akan menampilkan Big Boss pada saat hitungan waktu berada di angka 170.


geGameLoop
Perhatikan kode program di atas, kodisi while berbeda dengan kodisi while di program-program terdahulu.

...
...
...
while (GameOpenGL.OpenGLMainLoop && GameObject.geGameLoop)
{
...
...
...
}
...
...
...

Penambahan kondisi while dengan geGameLoop wajib Anda lakukan jika Big Boss ingin Anda tampilkan.

Mengganti Tekstur Big Boss
Ogut juga membuat fungsi yang bisa dipakai untuk mengganti tekstur Big Boss.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP,
HINSTANCE HPrevinstanceP,
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameOpenGL.DisplayLoading();
/////////////////////////////
//Load Big Boss tekstur
/////////////////////////////
if (!GameObject.geLoadBigBossTexture(
"BigBoss1/gkiri.bmp",
"BigBoss1/tengah.bmp", 
"BigBoss1/gkanan.bmp"))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameObject.gePlayRandomSoundBG();

GameObject.geSetGameLoop();

/////////////////////////////////////////////////
//kondisi while ditambahkan GameObject.geGameLoop
//jika Big Boss ditampilkan
/////////////////////////////////////////////////
while (GameOpenGL.OpenGLMainLoop && GameObject.geGameLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game,
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

GameObject.geDisplayEnemy();

/////////////////////////////
//Big Boss
/////////////////////////////
GameObject.geDisplayBigBoss();

GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Cara membuat tekstur Big Boss tidak berbeda dengan membuat tekstur musuh atau bonus, yang perlu diperhatikan ukuran tinggi dan lebar file bitmap yang digunakan, karena ukuran fisik Big Boss lebih besar dari ukuran musuh atau bonus.


Membuat Big Boss
Sama seperti musuh atau bonus Anda bisa membuat Big Boss sendiri sesuai dengan keinginan rekan-rekan.

Big Boss hanya bisa dibuat sebanyak satu saja oleh sebab itu perhatikan record yang Anda simpan pada file teks, dan ukuran raja lebih besar dari musuh yaitu 450X150 satuan.

Untuk posisi menghadap kiri atau kanan, ogut menetapkan Big Boss tidak bisa menghadap ke kiri, sehingga nilai variabel ini selalu 1(satu).

Ketiga hal di atas harus Anda perhatikan pada saat hendak membuat Big Boss, sedangkan aturan lain seperti posisi awal, waktu aktif dan pergerakan Big Boss sama dengan aturan yang dipakai untuk musuh atau bonus.


#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP,
HINSTANCE HPrevinstanceP,
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameOpenGL.DisplayLoading();

/////////////////////////////
//Load objek Big Boss
/////////////////////////////
if (!GameObject.geLoadBigBoss("BigBoss/BigBoss.txt"))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameObject.gePlayRandomSoundBG();

GameObject.geSetGameLoop();

/////////////////////////////////////////////////
//kondisi while ditambahkan GameObject.geGameLoop
//jika Big Boss ditampilkan
/////////////////////////////////////////////////
while (GameOpenGL.OpenGLMainLoop && GameObject.geGameLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game,
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

GameObject.geDisplayEnemy();

/////////////////////////////
//Big Boss
/////////////////////////////
GameObject.geDisplayBigBoss();

GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Untuk bisa menampilkan Big Boss yang Anda buat, sebelum pengulangan while Anda harus memanggil proses loading terhadap file teks yang digunakan untuk menyimpan record Big Boss.

Modifikasi Power Big Boss
Jika Anda ingin mengubah nilai power untuk Big Boss dan nilai kekuatan peluru Big Boss, maka maka dapat melakukannya di file header GEEmas7.h.
...
...
...
//////POWER and DESTRUCT
#define POWERJF 5000
#define POWERENEMY 700
#define DESTRUCTENEMY 700
#define POWERBIGBOSS 10000
#define POWERBONUS 500
#define DESTRUCTBONUS 500

#define DESTRUCTPELURUJF 100
#define DESTRUCTPELURUENEMY 100
#define DESTRUCTPELURUBIGBOSS 200
...
...
...

Perubahan kedua nilai di atas jangan terlalu besar, sebab akan mengakibatkan tidak seimbangnya antara kekuatan Jack Fighter dengan kekuatan musuh.

Batas Deteksi Tabrakan
Untuk memudahkan Anda dalam proses pembuatan Big Boss, ogut juga menyediakan fungsi yang bisa Anda pakai untuk menampilkan garis-garis merah yang mengelilingi Big Boss.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP,
HINSTANCE HPrevinstanceP,
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameOpenGL.DisplayLoading();

/////////////////////////////
//tampilkan garis merah
//Big Boss
/////////////////////////////
GameObject.geDisplayPolygonBigBoss();


GameObject.gePlayRandomSoundBG();

GameObject.geSetGameLoop();

/////////////////////////////////////////////////
//kondisi while ditambahkan GameObject.geGameLoop
//jika Big Boss ditampilkan
/////////////////////////////////////////////////
while (GameOpenGL.OpenGLMainLoop && GameObject.geGameLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game,
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

GameObject.geDisplayEnemy();

/////////////////////////////
//Big Boss
/////////////////////////////
GameObject.geDisplayBigBoss();

GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Hasil dari program di atas akan tampak seperti gambar di bawah.


Tombol Escape
Pada program-program sebelumnya semua program yang dibuat bisa dihentikan dengan tombol Esc.

Jika Anda memasukkan komponen Big Boss ke dalam game ini maka tombol Esc yang dipakai untuk menghentikan program, bisa dihilangkan, sehingga game hanya bisa berhenti jika tokoh Jack Fighter kalah atau menang dalam peperangan.

Untuk menghilangkan fungsi tombol Esc remark kode program GameOpenGL.BreakProgram();
...
...
...
//GameOpenGL.BreakProgram();
...
...
...

Berikut tampilan yang akan muncul jika Jack Fighter kalah berperang


dan jika menang


Demikian rekan-rekan, selesai sudah pembahasan tentang Big Boss, sampai jumpa di artikel berikutnya.

Salam Game Engine


Heriady
heriady.yoh@gmail.com




Artikel terkait

Panduan Lengkap Membuat Game Perang Shoot Them Up

Panduan Lengkap Membuat Game Perang Dengan Game Engine