Minggu, 09 Juli 2017

Membuat Peluru Pesawat Dengan Code Block


Salam rekan-rekan sekalian, ketemu lagi dengan ogut. Dan kali ini ogut masih akan menyambung tentang artikel terdahulu, yaitu artikel tentang membuat game dengan menggunakan compiler Code Block.

Kali ini topiknya adalah membuat peluru untuk pesawat jagoan agar pesawat bisa berperang.




Untuk membuat peluru tersebut caranya tidak susah-susah amat.

Ogut siapin typedef struct dan variable seperti di bawah ini.

////peluru jagoan================================\/
typedef struct
{
int aktif;
int Type;
double Ax;
double Ay;
double Bx;
double By;
double Cx;
double Cy;
double Dx;
double Dy;
}Objek_Peluru;

int delay_peluru_Jagoan = 0;
int Total_Peluru_Jagoan = 50;
Objek_Peluru Peluru_Jagoan[50];
//Objek_Peluru Peluru_Hely[90];
int Tipe_Peluru_Aktif;

unsigned int peluru_mask;
unsigned int peluru_image;
///peluru jagoan=================================/\

Pada fungsi void Keyboard_ditekan() ogut tambahin, jika tombol 'V' di tekan maka peluru diisi dengan cara memanggil fungsi Jagoan_Fire().

void Keyboard_ditekan()
{
...
...
...

//tekan tombol peluru========================\/
delay_peluru_Jagoan = delay_peluru_Jagoan + 1;

if (GetKeyState('V') & 0x80)
{

if (delay_peluru_Jagoan >= 15)
{
delay_peluru_Jagoan = 0;
Jagoan_Fire();
            }
}
//tekan tombol peluru========================/\

}

Ini adalah fungsi void Jagoan_Fire() yang berguna untuk mengisi peluru, ingat ya posisi peluru tergantung dari posisi pesawat jagoan. Untuk lebih mudahnya perhatikan oret-oretan di bawah ini.


ABCD peluru tergantung dari posisi pesawat atau ABCD nya pesawat.

//isi peluru
void Jagoan_Fire()
{
int i;

for (i = 0; i < Total_Peluru_Jagoan; i++)
{
if (Peluru_Jagoan[i].aktif == 0)
{

Peluru_Jagoan[i].aktif = 1;
Peluru_Jagoan[i].Type = 0;

//menentukan posisi awal peluru

//posisi awal peluru ditentukan oleh
//posisi badan hely, pada saat hely
//melepaskan peluru
Peluru_Jagoan[i].Ax = ((Pesawat_Jagoan.Cx - Pesawat_Jagoan.Dx) / 2.0) + Pesawat_Jagoan.Dx - 15.0;
Peluru_Jagoan[i].Bx = ((Pesawat_Jagoan.Cx - Pesawat_Jagoan.Dx) / 2.0) + Pesawat_Jagoan.Dx + 15.0;
Peluru_Jagoan[i].Dx = Peluru_Jagoan[i].Ax;
Peluru_Jagoan[i].Cx = Peluru_Jagoan[i].Bx;

Peluru_Jagoan[i].Ay = Pesawat_Jagoan.Dy - 10.0;
Peluru_Jagoan[i].By = Peluru_Jagoan[i].Ay;
Peluru_Jagoan[i].Cy = Peluru_Jagoan[i].By + 50.0;
Peluru_Jagoan[i].Dy = Peluru_Jagoan[i].Cy;

i = Total_Peluru_Jagoan;
}
}

}

Terakhir tampilkan peluru. Posisi peluru harus terus diupdate agar bergerak. Dan peluru yang ditampilkan hanya peluru yang aktif (Peluru_Jagoan[i].aktif ==  1). Jika posisi peluru telah keluar dari layar game maka Peluru_Jagoan[i].aktif = 0.

for (i = 0; i <= Total_Peluru_Jagoan; i++)
{
//==============================================================================================

//=================================segiempat PELURU tarus disini \/
//tampilkan peluru mask

//ubah posisi peluru
if (Peluru_Jagoan[i].aktif ==  1)
{
Peluru_Jagoan[i].Ay = Peluru_Jagoan[i].Ay + 15.0;
Peluru_Jagoan[i].By = Peluru_Jagoan[i].By + 15.0;
Peluru_Jagoan[i].Cy = Peluru_Jagoan[i].Cy + 15.0;
Peluru_Jagoan[i].Dy = Peluru_Jagoan[i].Dy + 15.0;
}

//cek peluru aktif/ tidak
if (Peluru_Jagoan[i].Ay > (double)(Ymax))
{
Peluru_Jagoan[i].aktif = 0;
}

if (Peluru_Jagoan[i].aktif == 1)
{
glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR, GL_ZERO);

glBindTexture(GL_TEXTURE_2D, peluru_mask);
glBegin(GL_POLYGON);
glTexCoord2d(0.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Ax, Peluru_Jagoan[i].Ay);

glTexCoord2d(1.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Bx, Peluru_Jagoan[i].By);

glTexCoord2d(1.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Cx, Peluru_Jagoan[i].Cy);

glTexCoord2d(0.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Dx, Peluru_Jagoan[i].Dy);
glEnd();


//tampilkan peluru image
glBlendFunc(GL_ONE, GL_ONE);


glBindTexture(GL_TEXTURE_2D, peluru_image);
//glColor3f(1.0f,1.0f,1.0f);
glBegin(GL_POLYGON);
glTexCoord2d(0.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Ax, Peluru_Jagoan[i].Ay);

glTexCoord2d(1.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Bx, Peluru_Jagoan[i].By);

glTexCoord2d(1.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Cx, Peluru_Jagoan[i].Cy);

glTexCoord2d(0.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Dx, Peluru_Jagoan[i].Dy);
glEnd();

glDisable(GL_BLEND);
}
//=================================segiempat PELURU tarus disini /\


}
//peluru==================================================/\


Selesai sudah bahasan tentang peluru. Gak susah kan. Sampai jumpa lagi di artikel ogut yang lain.

Salam Sukses Selalu


Heriady




-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------