Sabtu, 29 Juli 2017

Membuat Pesawat Oleng Kiri Kanan


Selamat siang rekan-rekan sekalian...

Masih dengan topik membuat game perang-perangan dengan Code Block, kali ini ogut akan memberikan variasi sederhana atau trik sederhana, tetapi bermanfaat untuk membuat tampilan game rekan-rekan menjadi lebih yahut.


Artikel ini belum selesai ntar ogut terusin, karena ogut harus kembali kerja.....see you later



Salam


Heriady

Minggu, 09 Juli 2017

Variasi Peluru Pesawat

Artikel kali ini tidak akan menjelaskan cara untuk membuat peluru. Tapi ogut hanya memberikan ide variasi beberapa peluru pesawat yang dapat rekan-rekan buat. Ini sebagai tantangan bagi rekan-rekan untuk belajar. Jadi ogut tidak akan membahasnya dan tidak akan menulis artikelnya, serta tidak akan membagikan source code nya.





Selamat Belajar dan Sukses Selalu


Heriady





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




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