PROJEK KOMPUTER GRAFIK PESAWAT MENGGUNAKAN BAHASA C DENGAN APLIKASI CODE BLOCK 5302412019



Hai Guest , , , ada projek baru nih ,, , kalian pengen tau gak ,,,, hehe projek ini dibuat untuk memenuhi tugas ahkir mata kuliah Komputer Grafik. Nama ku Okta Purnawirawan di ahkir semester ini aku membuat suatu projek mengenai komputer grafik. Di sini saya membuat sebuah alur cerita yaitu :

Yang pertama, pada display kesatu ada sebuah cerita di siang hari terdapat pesawat yang melintasi di samping menara, yang mana menara itu di bangun di atas tanah yang berumput hijau, untuk jelasnya kamu bisa lihat gambar di bawah ini :

 

Kemudian selanjutnya, pada display kedua merupakan kelanjutan dari cerita pada display ke satu, pesawat tersebut melintasi lagi di sekitar menara, namun karena kondisi awan pada waktu itu mendung, maka ketinggian pesawat menjadi diturunkan. Tempat dari dibangunya menara pada display ke dua ini berbeda, karena dibangun di pinggir lautan, yang digambarkan oleh sebuah daratan yang berwarna coklat dan ditumbuhi rumput hijau. Kemudian lautan yang digambarkan dengan warna biru tua dan muda. Untuk jelasnya kamu bisa lihat gambar di bawah ini : 


Kemudian selanjutnya pada display yang terahkir, merupakan kelanjutan dari cerita pada display ke dua, , pesawat tersebut melintasi lagi di sekitar menara lagi. Namun karena kondisi cuaca yang gelap karena awan mendung, maka tidak sengaja pesawat tersebut sayapnya menabrak sebagian bangunan dari menara. Akibatnya, singkat cerita pesawat tersebut jatuh ke lautan beserta puing-puing bangunan sebagian dari menara yang ditabraknya. Untuk jelasnya kamu bisa lihat gambar di bawah ini : 


  



Nahhh , , , selanjutnya apabila kalian semua penasaran dari cerita di atas, kalian bisa coba sendiri di laptop atau komputer kalian kok , , ,  asalakan laptop atau komputer kalian sudah terinstal oleh aplikasi code blocknya , , kalau belum ya , , segera di instal saja hehe download juga bisa , , hehe. Kalau gitu coba saja sourcode dibawah ini guest , , copy saja ke dalam aplikasi code block kalian , ,  oke. Untuk penjelasanya akan saya jelaskan secara singkat , , kalau bingung hubungi saja di FB q Okta Purnawirawan atau  SMS di 085735497171

#include <stdio.h> // Ini library dari code blocknya
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "SOIL.h"
#include <GL/glut.h>
#include <mmsystem.h> // library tambahan untuk memanggil musik

int a=0, b=0, c=0, x=100;

void awan_s() // Ini untuk membuat background suasana siang yang digambarkan awan putih
{
    glBegin(GL_POLYGON);
    glColor3f(1,1,1);
    glVertex2f(700,450);
    glVertex2f(0,400);
            glEnd();
}

void awan_m() // Ini untuk membuat background suasana medung yang digambarkan awan abu-abu gelap
{
    glBegin(GL_POLYGON);
    glColor3f(0.5,0.5,0.5);
    glVertex2f(700,450);
    glVertex2f(0,400);
            glEnd();
}

void awan_mendung() // Ini untuk membuat background suasana medung yang digambarkan awan abu-abu mendung dan gelap

{
    glBegin(GL_POLYGON);
                        glColor3f(0,0.3,0.5);
                        glVertex2f(0,450);
                        glVertex2f(700,450);
                        glColor3f(0.8,0.8,0.8);
                        glVertex2f(700,350);
                        glVertex2f(0,300);
            glEnd();
}

void darat_s() // Ini menggambarkan daratan warna coklat dan hijau
 {
    glBegin(GL_POLYGON);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(0,25);
    glVertex2f(700,25);
    glColor3f(0.9,0.5,0.1);
    glVertex2f(700,0);
    glVertex2f(0,0);
            glEnd();
}

void darat_m() // ini menggambarkan lautan warna biru kegelapan
 {
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_POLYGON);
                        glColor3f(0,0,0);
                        glVertex2f(320,25);
                        glVertex2f(700,25);
                        glColor3f(0,0.3,0.5);
                        glVertex2f(700,0);
                        glVertex2f(320,0);
            glEnd();
 }

void puncak() // bangunan puncak sampai kaki baris pada display ke 3 yang tertabrak oleh pesawat

{
    /* leher 1*/
            glColor3f(0.6,0.6,0.6);
            glBegin(GL_POLYGON);
        glVertex3f(100,310,0);
                        glVertex3f(120,300,0);
                        glVertex3f(200,300,0);
                        glVertex3f(220,310,0);
            glEnd();

/* leher 2*/
            glColor3f(0.4,0.4,0.4);
            glBegin(GL_POLYGON);
        glVertex3f(110,320,0);
                        glVertex3f(130,310,0);
                        glVertex3f(190,310,0);
                        glVertex3f(210,320,0);
            glEnd();

/* leher 3 */
            glColor3f(0.5,0.5,0.5);
            glBegin(GL_POLYGON);
        glVertex3f(120,330,0);
                        glVertex3f(140,320,0);
                        glVertex3f(180,320,0);
                        glVertex3f(200,330,0);
            glEnd();

/* puncak */
            glColor3f(1,0,0);
            glBegin(GL_TRIANGLES);
                        glVertex3f(130,330,0);
                        glVertex3f(190,330,0);
                        glVertex3f(160,410,0);
            glEnd();

/* kaki */
            glColor3f(0.2,0.2,0.2);
            glBegin(GL_POLYGON);
                        glVertex3f(130,180,0);
                        glVertex3f(130,300,0);
                        glVertex3f(190,300,0);
                        glVertex3f(190,180,0);
            glEnd();

/* garis 1 */
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(150,190);
                        glVertex2f(150,270);
            glEnd();

/* garis 2 */
            glColor3f(0,0,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(158,190);
                        glVertex2f(158,270);
            glEnd();

/* garis 3 */
            glColor3f(1,1,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(165,190);
                        glVertex2f(165,270);
            glEnd();

/* bendera putih */
            glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(145,285,0);
                        glVertex3f(145,280,0);
                        glVertex3f(175,280,0);
                        glVertex3f(175,285,0);
            glEnd();

/* bendera merah*/
            glColor3f(1,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(145,290,0);
                        glVertex3f(145,285,0);
                        glVertex3f(175,285,0);
                        glVertex3f(175,290,0);
            glEnd();
}

void batang() // bangunan kaki sampai dasar bawah / dasar 3 yang masih bisa berdiri pada display ke 3 ketika setelah ditabrak pesawat
{
   /* dasar 1 */
            glColor3f(0.2,0.2,0.2);
            glBegin(GL_POLYGON);
                        glVertex3f(40,35,0);
                        glVertex3f(20,25,0);
                        glVertex3f(300,25,0);
                        glVertex3f(280,35,0);
            glEnd();

/* dasar 2 */
            glColor3f(0.4,0.4,0.4);
            glBegin(GL_POLYGON);
                        glVertex3f(80,45,0);
                        glVertex3f(60,35,0);
                        glVertex3f(260,35,0);
                        glVertex3f(240,45,0);
            glEnd();

/* dasar 3 */
            glColor3f(0.6,0.6,0.6);
            glBegin(GL_POLYGON);
                        glVertex3f(120,55,0);
                        glVertex3f(100,45,0);
                        glVertex3f(220,45,0);
                        glVertex3f(200,55,0);
            glEnd();

/* kaki */
            glColor3f(0.2,0.2,0.2);
            glBegin(GL_POLYGON);
                        glVertex3f(130,55,0);
                        glVertex3f(130,180,0);
                        glVertex3f(190,180,0);
                        glVertex3f(190,55,0);
            glEnd();

/* kotak 1 */
            glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,65,0);
                        glVertex3f(150,75,0);
                        glVertex3f(170,75,0);
                        glVertex3f(170,65,0);
            glEnd();

/* kotak 2 */
            glColor3f(0,0,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,85,0);
                        glVertex3f(150,95,0);
                        glVertex3f(170,95,0);
                        glVertex3f(170,85,0);
            glEnd();

/* kotak 3 */
            glColor3f(1,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(150,105,0);
                        glVertex3f(150,115,0);
                        glVertex3f(170,115,0);
                        glVertex3f(170,105,0);
            glEnd();

/* kotak 4 */
            glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,125,0);
                        glVertex3f(150,135,0);
                        glVertex3f(170,135,0);
                        glVertex3f(170,125,0);
            glEnd();

/* kotak 5 */
            glColor3f(0,0,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,145,0);
                        glVertex3f(150,155,0);
                        glVertex3f(170,155,0);
                        glVertex3f(170,145,0);
            glEnd();

/* kotak 6 */
            glColor3f(1,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(150,165,0);
                        glVertex3f(150,175,0);
                        glVertex3f(170,175,0);
                        glVertex3f(170,165,0);
            glEnd();
}

void menara() // ini untuk membuat bangunan menara yang utuh berdiri pada slide ke satu dan kedua
{
/* dasar 1 */
            glColor3f(0.2,0.2,0.2);
            glBegin(GL_POLYGON);
                        glVertex3f(40,35,0);
                        glVertex3f(20,25,0);
                        glVertex3f(300,25,0);
                        glVertex3f(280,35,0);
            glEnd();

/* dasar 2 */
            glColor3f(0.4,0.4,0.4);
            glBegin(GL_POLYGON);
                        glVertex3f(80,45,0);
                        glVertex3f(60,35,0);
                        glVertex3f(260,35,0);
                        glVertex3f(240,45,0);
            glEnd();

/* dasar 3 */
            glColor3f(0.6,0.6,0.6);
            glBegin(GL_POLYGON);
                        glVertex3f(120,55,0);
                        glVertex3f(100,45,0);
                        glVertex3f(220,45,0);
                        glVertex3f(200,55,0);
            glEnd();

/* kaki */
            glColor3f(0.2,0.2,0.2);
            glBegin(GL_POLYGON);
                        glVertex3f(130,55,0);
                        glVertex3f(130,300,0);
                        glVertex3f(190,300,0);
                        glVertex3f(190,55,0);
            glEnd();

/* kotak 1 */
            glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,65,0);
                        glVertex3f(150,75,0);
                        glVertex3f(170,75,0);
                        glVertex3f(170,65,0);
            glEnd();

/* kotak 2 */
            glColor3f(0,0,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,85,0);
                        glVertex3f(150,95,0);
                        glVertex3f(170,95,0);
                        glVertex3f(170,85,0);
            glEnd();

/* kotak 3 */
            glColor3f(1,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(150,105,0);
                        glVertex3f(150,115,0);
                        glVertex3f(170,115,0);
                        glVertex3f(170,105,0);
            glEnd();

/* kotak 4 */
            glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,125,0);
                        glVertex3f(150,135,0);
                        glVertex3f(170,135,0);
                        glVertex3f(170,125,0);
            glEnd();

/* kotak 5 */
            glColor3f(0,0,1);
            glBegin(GL_POLYGON);
                        glVertex3f(150,145,0);
                        glVertex3f(150,155,0);
                        glVertex3f(170,155,0);
                        glVertex3f(170,145,0);
            glEnd();

/* kotak 6 */
            glColor3f(1,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(150,165,0);
                        glVertex3f(150,175,0);
                        glVertex3f(170,175,0);
                        glVertex3f(170,165,0);
            glEnd();

/* garis 1 */
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(150,190);
                        glVertex2f(150,270);
            glEnd();

/* garis 2 */
            glColor3f(0,0,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(158,190);
                        glVertex2f(158,270);
            glEnd();

/* garis 3 */
            glColor3f(1,1,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(165,190);
                        glVertex2f(165,270);
            glEnd();

/* bendera putih */
            glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(145,285,0);
                        glVertex3f(145,280,0);
                        glVertex3f(175,280,0);
                        glVertex3f(175,285,0);
            glEnd();

/* bendera merah*/
            glColor3f(1,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(145,290,0);
                        glVertex3f(145,285,0);
                        glVertex3f(175,285,0);
                        glVertex3f(175,290,0);
            glEnd();

/* leher 1*/
            glColor3f(0.6,0.6,0.6);
            glBegin(GL_POLYGON);
        glVertex3f(100,310,0);
                        glVertex3f(120,300,0);
                        glVertex3f(200,300,0);
                        glVertex3f(220,310,0);
            glEnd();

/* leher 2*/
            glColor3f(0.4,0.4,0.4);
            glBegin(GL_POLYGON);
        glVertex3f(110,320,0);
                        glVertex3f(130,310,0);
                        glVertex3f(190,310,0);
                        glVertex3f(210,320,0);
            glEnd();

/* leher 3 */
            glColor3f(0.5,0.5,0.5);
            glBegin(GL_POLYGON);
        glVertex3f(120,330,0);
                        glVertex3f(140,320,0);
                        glVertex3f(180,320,0);
                        glVertex3f(200,330,0);
            glEnd();

/* puncak */
            glColor3f(1,0,0);
            glBegin(GL_TRIANGLES);
                        glVertex3f(130,330,0);
                        glVertex3f(190,330,0);
                        glVertex3f(160,410,0);
            glEnd();
}

void pesawat() // ini untuk membuat bentuk body dari pesawat itu sendiri secara keseluruhan
{
/* sayap atas */
    glColor3f(0.5,0.5,0.5);
            glBegin(GL_POLYGON);
                        glVertex3f(100,410,0);
                        glVertex3f(100,360,0);
                        glVertex3f(170,360,0);
                        glVertex3f(130,410,0);
            glEnd();

/* bendera merah */
    glColor3f(1.0f, 0.0f, 0.0f);
            glBegin(GL_POLYGON);
                        glVertex3f(110,400,0);
                        glVertex3f(110,395,0);
                        glVertex3f(130,395,0);
                        glVertex3f(130,400,0);
            glEnd();

/* bendera putih */
    glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(110,395,0);
                        glVertex3f(110,390,0);
                        glVertex3f(130,390,0);
                        glVertex3f(130,395,0);
            glEnd();

/* garis 1 bwh bendera*/
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(105,365);
                        glVertex2f(155,365);
            glEnd();

/* garis 2 bwh bendera*/
            glColor3f(1,1,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(105,370);
                        glVertex2f(145,370);
            glEnd();

/* garis 3 bwh bendera*/
            glColor3f(0,0,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(105,375);
                        glVertex2f(135,375);
            glEnd();

/* badan 1 */
            glColor3f(0.9,0.9,0.9);
            glBegin(GL_POLYGON);
                        glVertex3f(85,360,0);
                        glVertex3f(85,330,0);
                        glVertex3f(305,330,0);
                        glVertex3f(305,360,0);
            glEnd();

/*badan 2*/
    glColor3f(0, 0, 0);
            glBegin(GL_POLYGON);
                        glVertex3f(85,330,0);
                        glVertex3f(130,310,0);
                        glVertex3f(305,310,0);
                        glVertex3f(305,330,0);
            glEnd();

/*bawah badan 2*/
    glColor3f(0.7,0.7,0.7);
            glBegin(GL_POLYGON);
                        glVertex3f(150,310,0);
                        glVertex3f(85,295,0);
                        glVertex3f(250,295,0);
                        glVertex3f(300,310,0);
            glEnd();

/* garis 1 bwh badan  2*/
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(145,305);
                        glVertex2f(270,305);
            glEnd();

/* garis 2 bwh badan  2*/
            glColor3f(1,1,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(130,302);
                        glVertex2f(250,302);
            glEnd();

/* garis 3 bwh badan  2*/
            glColor3f(0,0,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(110,299);
                        glVertex2f(230,299);
            glEnd();

/* kepala */
            glColor3f(0.5,0.5,0.5);
            glBegin(GL_TRIANGLES);
                        glVertex3f(305,360,0);
                        glVertex3f(305,310,0);
                        glVertex3f(390,310,0);
            glEnd();

/* pintu kepala*/
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(310,340);
                        glVertex2f(310,315);
                        glVertex2f(325,315);
                        glVertex2f(325,340);
            glEnd();

/* jendela kepala*/
            glColor3f(0,0,1);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(335,330);
                        glVertex2f(335,320);
                        glVertex2f(345,320);
                        glVertex2f(345,330);
            glEnd();

/*bawah kepala*/
    glColor3f(0, 0, 0);
            glBegin(GL_POLYGON);
                        glVertex3f(310,310,0);
                        glVertex3f(330,303,0);
                        glVertex3f(360,303,0);
                        glVertex3f(380,310,0);
            glEnd();

/*atas badan*/
    glColor3f(0,0,0);
            glBegin(GL_POLYGON);
                        glVertex3f(240,375,0);
                        glVertex3f(220,360,0);
                        glVertex3f(300,360,0);
                        glVertex3f(280,375,0);
            glEnd();

/* bendera merah */
    glColor3f(1.0f, 0.0f, 0.0f);
            glBegin(GL_POLYGON);
                        glVertex3f(250,372,0);
                        glVertex3f(250,368,0);
                        glVertex3f(270,368,0);
                        glVertex3f(270,372,0);
            glEnd();
/* bendera putih */
    glColor3f(1,1,1);
            glBegin(GL_POLYGON);
                        glVertex3f(250,368,0);
                        glVertex3f(250,364,0);
                        glVertex3f(270,364,0);
                        glVertex3f(270,368,0);
            glEnd();

/* ekor */
            glColor3f(0.5,0.5,0.5);
            glBegin(GL_POLYGON);
                        glBegin(GL_POLYGON);
                        glVertex3f(75,350,0);
                        glVertex3f(75,340,0);
                        glVertex3f(85,330,0);
                        glVertex3f(85,360,0);
            glEnd();

/* kotak belakang ekor */
            glColor3f(0,0,0);
            glBegin(GL_POLYGON);
                        glBegin(GL_POLYGON);
                        glVertex3f(75,350,0);
                        glVertex3f(75,340,0);
                        glVertex3f(60,340,0);
                        glVertex3f(60,350,0);
            glEnd();

/* kotak dalam belakang ekor */
            glColor3f(0,0,1);
            glBegin(GL_POLYGON);
                        glBegin(GL_POLYGON);
                        glVertex3f(70,348,0);
                        glVertex3f(70,342,0);
                        glVertex3f(60,342,0);
                        glVertex3f(60,348,0);
            glEnd();

/* pintu belakang*/
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(95,355);
                        glVertex2f(95,335);
                        glVertex2f(110,335);
                        glVertex2f(110,355);
            glEnd();

/* jendela 1*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(120,350);
                        glVertex2f(120,340);
                        glVertex2f(130,340);
                        glVertex2f(130,350);
            glEnd();

/* jendela 2*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(140,350);
                        glVertex2f(140,340);
                        glVertex2f(150,340);
                        glVertex2f(150,350);
            glEnd();

/* jendela 3*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(160,350);
                        glVertex2f(160,340);
                        glVertex2f(170,340);
                        glVertex2f(170,350);
            glEnd();

/* jendela 4*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(180,350);
                        glVertex2f(180,340);
                        glVertex2f(190,340);
                        glVertex2f(190,350);
            glEnd();

/* jendela 5*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(200,350);
                        glVertex2f(200,340);
                        glVertex2f(210,340);
                        glVertex2f(210,350);
            glEnd();

/* jendela 6*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(220,350);
                        glVertex2f(220,340);
                        glVertex2f(230,340);
                        glVertex2f(230,350);
            glEnd();

/* jendela 7*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(240,350);
                        glVertex2f(240,340);
                        glVertex2f(250,340);
                        glVertex2f(250,350);
            glEnd();

/* jendela 8*/
             glColor3f(0,0,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(260,350);
                        glVertex2f(260,340);
                        glVertex2f(270,340);
                        glVertex2f(270,350);
            glEnd();

/* pintu depan*/
            glColor3f(1.0f, 0.0f, 0.0f);
    glBegin(GL_LINE_LOOP);
                        glVertex2f(280,355);
                        glVertex2f(280,335);
                        glVertex2f(295,335);
                        glVertex2f(295,355);
            glEnd();

/* jendela a*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(140,325);
                        glVertex2f(140,315);
                        glVertex2f(150,315);
                        glVertex2f(150,325);
            glEnd();

/* jendela b*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(160,325);
                        glVertex2f(160,315);
                        glVertex2f(170,315);
                        glVertex2f(170,325);
            glEnd();

/* jendela c*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(180,325);
                        glVertex2f(180,315);
                        glVertex2f(190,315);
                        glVertex2f(190,325);
            glEnd();

/* jendela d*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(200,325);
                        glVertex2f(200,315);
                        glVertex2f(210,315);
                        glVertex2f(210,325);
            glEnd();

/* jendela e*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(220,325);
                        glVertex2f(220,315);
                        glVertex2f(230,315);
                        glVertex2f(230,325);
            glEnd();

/* jendela f*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(240,325);
                        glVertex2f(240,315);
                        glVertex2f(250,315);
                        glVertex2f(250,325);
            glEnd();

/* jendela g*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(260,325);
                        glVertex2f(260,315);
                        glVertex2f(270,315);
                        glVertex2f(270,325);
            glEnd();

/* jendela h*/
             glColor3f(1,1,1);
             glBegin(GL_LINE_LOOP);
                        glVertex2f(280,325);
                        glVertex2f(280,315);
                        glVertex2f(290,315);
                        glVertex2f(290,325);
            glEnd();
}

void update(int value) // fungsi agar  pesawat  dapat berjalan seperti animasi pesawat menjadi terbang
{
            a+=15.0; // arah pesawat jalan dan kecepatan majunya ke arah garis x positiv
            glutPostRedisplay();
            glutTimerFunc(150,update,0); // kehalusan gerakan pesat untuk bergerak
}

void display1() // untuk menampilkan pada display pertama
{
    glPushMatrix();
            glTranslated(a,5,0.0); // sumbu x y z kalau y z dikasih nilai pesawat tidk bisa muncul pengaruh garis sumbu
            pesawat();
            glPopMatrix();
            menara();
            darat_s();
            awan_s();
            //glFlush();
    //glutSwapBuffers();
}

void display2() // untuk menampilkan pada display kedua
{
    menara();
    glClearColor(0.8,0.8,0.8,0.8);
    glPushMatrix();
            glTranslated(b,-90,0.0); // tnda - utk menurunkan posisi pswt dr atas pd slide 1 agk k bwh pd slide 2; semakin besar angka pswt smkin trn posisiny
            pesawat();               // tanda + posisi pswt di atas lbh tinggi dr pda posisi pd slide 1
            glPopMatrix();
            darat_m();
            awan_m();
            //glPushMatrix();               TAMBAHAN ILMU DARI PAK ALFA
   // glTranslated(-b,90-b,0.0);    TAMBAHAN ILMU DARI PAK ALFA
   // pesawat();                    TAMBAHAN ILMU DARI PAK ALFA
    //glPopMatrix();                TAMBAHAN ILMU DARI PAK ALFA
            //glFlush();
    //glutSwapBuffers();
}

void display3() // untuk menampilkan pada display ketiga
{
            glClear(GL_COLOR_BUFFER_BIT);
            glClearColor(0.8,0.8,0.8,0.8);
            x-=9;                   // tnda - spya pswat dn menara jtuh k bwah ; + keduanya akan terbang ke atas/kebliknya karena rotasi
            batang();               // nilai smkin bsar tinkat kejatuhanya smakin tdk jls
            darat_s();
            glPushMatrix();
            glTranslated(c,x,0.0);
            glRotated(-45,0,0,1);           // tnda - spya rotasi pada slide ke 3 dan grkn pas jtuh k bwah ang 45 mntukn posisi jatuh
            pesawat();
            puncak();
            glPopMatrix();
            awan_mendung();
            darat_m();
            //glFlush();
            //glutSwapBuffers();
}

void display() // fungsi display secara keseluruhan
{
    glClear(GL_COLOR_BUFFER_BIT); // > dibuat agar slide tampil secara bergantian ; < slide 3 kejadian terjadi dalam satu waktu ; = hanya slide 2 yg main
    display1();
    if(a>700) // agar gerak pesawat di slide 1 selesai dlu kmudian slide 2/ tdk tumbukan
            {
                        b+=10;          // kecepatan gerak pesawat pada display ke 2 ; tanda + supaya pesawat bergerak ke depan - bergerak ke belakang
                        display2();
            }

            if(b>700)
            {
                        c+=10;          // kecepatan gerak peswat pada display ke 3 ; tanda + supaya pesawat bergerak ke depan - bergerak ke belakang
                        display3();
    }
    //gluLookAt(0.0, 0.1, 1.0, 0.0, 0.1, 0.0, 0.0, 1.0, 0.0);
    glFlush();
    glutSwapBuffers();
}


void stop() // fungsi menu keyboard
{
    a=b=0;
            glutPostRedisplay();
}

void p_right()
{
            a+=0.5;
            glutPostRedisplay();
}

void p_left()
{
    a-=1;
    glutPostRedisplay();
}

void keyboard(unsigned char key,int x,int y)
{
    if(key=='s')
    {
        glutIdleFunc(stop);
                        glutPostRedisplay();
    }

    if(key=='r')
    {
        a=b=0;
                        glutPostRedisplay();
    }

    if(key==27) exit(0);

}

void SpecialKeyboard(int key, int x, int y) {
    //if(key==GLUT_KEY_UP) y_pos+=0.1f;
    //if(key==GLUT_KEY_DOWN)
    if(key==GLUT_KEY_LEFT)
    {
        glutIdleFunc(p_left);
    }
    if(key==GLUT_KEY_RIGHT)
    {
        glutIdleFunc(p_right);
    }
}

void myinit()
{
    glClearColor(1.0,1.0,1.0,1.0);
    //glColor3f(1.0,1.0,1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0,700.0,0.0,450,0.0,350.0);
    glMatrixMode(GL_MODELVIEW);
}

void music(void) // fungsi untuk memasukkan efek suara pesawat dari file musik yang satu folder sama projek ini
{
    PlaySound("pesawat.wav", NULL,SND_ASYNC|SND_FILENAME); // PlaySound("suara_pesawat.wav", NULL,SND_ASYNC|SND_FILENAME|SND_LOOP);
    //getch():
}

int main(int argc,char** argv)             //MAIN FUNCTION
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(800,700);
    glutInitWindowPosition(300,0);
    glutCreateWindow("Projek Akhir 5302412019 Okta Purnawirawan");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutSpecialFunc(SpecialKeyboard);
    myinit();
    music();
    glutTimerFunc(100,update,0);
    glutMainLoop();

}



Selanjutnya tambahkan file musik satu folder dengan projek anda, yang sesuai dengan gambar di bawah ini :

Kemudian tambahkan fungsi library pada projek build options yaitu : libfreeglut, libopengl32, libglu32, libSOIL. Sesuai dengan gambar di bawah ini :
 


Kemudian kalau sudah jalankan dengan mengeklik icon Build and Run.
**** SELAMAT BERKODING ****
 


Komentar

Posting Komentar

Postingan Populer