• Tidak ada hasil yang ditemukan

Lampiran. Berikut ini adalah Source Code Program Game Serangga Nakal:

N/A
N/A
Protected

Academic year: 2021

Membagikan "Lampiran. Berikut ini adalah Source Code Program Game Serangga Nakal:"

Copied!
30
0
0

Teks penuh

(1)

Lampiran

Berikut ini adalah Source Code Program Game Serangga Nakal:

// mfcDlg.cpp : implementation file // #include "stdafx.h" #include "mfc.h" #include "mfcDlg.h" #include <windows.h> #include <stdio.h> #include <string.h> #include <time.h> // #include <MMSystem.h>

//library untuk load wav audio

#ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

int R,G,B;

int height, width, step, channels; int height1, width1, step1, channels1; int kiri, kanan, atas, bawah;

int dx, dy, tpk=0; int inc;

// jarak perpindahan serangga int lvl, jml_srg, tampung=0;

// jumlah serangga int status[50], nyawaraja=9;

//status nyawa serangga dan nyawa raja int poin=0, limit=10;

int waktu_awal, waktu_akhir, waktu;

uchar *data, *data1;

CvPoint pt1, pt2, pt3, pt4;

CvPoint p11, p12, p21 ,p22, p31, p32, p41, p42; CvPoint pos[50];

CvCapture *capture;

IplImage *cam, *cam_seg, *fin_img, *ImgGray, *bg;

(2)

void CMfcDlg::Onbtnexit() {

CDialog::OnCancel();

// TODO: Add your control notification handler code here

cvReleaseCapture( &capture ); cvDestroyWindow( "Serangga Nakal" );

cvDestroyWindow( "Color Segmentation" ); cvDestroyWindow( "Edge Detection" ); cvDestroyWindow( "Capture Gambar" );

}

void CMfcDlg::prog(IplImage *img){

///////%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%5

//inisialisasi kamera

/* capture = cvCaptureFromCAM(CV_CAP_ANY); if( !capture ) {

fprintf( stderr, "ERROR: capture is NULL \n" ); } //inisialisasi window cvNamedWindow("Edge Detection",0.3); cvNamedWindow("Color Segmentation",0.3); cvNamedWindow("Capture Gambar",0.3); cvNamedWindow("Serangga Nakal",1); level();

//close window jika program utama dimatikan

cvReleaseCapture( &capture ); cvDestroyWindow("Serangga Nakal..");*/

}

CvPoint CMfcDlg::rnd(CvPoint pos)

//fungsi random arah {

int x0=rand()%8;

//8 kemungkinan arah gerakan

(3)

{ pos.y=pos.y+inc; //gerakan ke atas } else if(x0==1) { pos.x=pos.x+inc;

//gerakan ke kanan atas

pos.y=pos.y+inc; } else if(x0==2) { pos.x=pos.x+inc; //gerakan ke kanan } else if(x0==3) { pos.x=pos.x+inc;

//gerakan ke kanan bawah pos.y=pos.y-inc; } else if(x0==4) { pos.y=pos.y-inc; //gerakan ke bawah } else if(x0==5) { pos.x=pos.x-inc;

//gerakan ke kiri bawah

pos.y=pos.y-inc; } else if(x0==6) { pos.x=pos.x-inc; //gerakan ke kiri } else if(x0==7) { pos.x=pos.x-inc;

//gerakan ke kiri atas

pos.y=pos.y+inc; }

return pos; }

void CMfcDlg::awal()

// fungsi acak posisi awal serangga {

(4)

{ status[i]=1; pos[i].x=(rand()%630); //random posisi x pos[i].y=(rand()%470); //random posisi y } } void CMfcDlg::serangga()

//fungsi menggambar serangga {

for(int i=0;i<jml_srg;i++) {

CvPoint kanan1, kanan2, kiri1, kiri2;

//menggambar sayap kanan1.x=(pos[i].x)+5; kanan1.y=(pos[i].y)+5; kanan2.x=(pos[i].x)+10; kanan2.y=(pos[i].y)+10; kiri1.x=(pos[i].x)-5; kiri1.y=(pos[i].y)+5; kiri2.x=(pos[i].x)-10; kiri2.y=(pos[i].y)+10; printf("pos.x=%d\n", pos[i].x); if(status[i]==1)

//status serangga masih hidup {

pos[i]=rnd(pos[i]); if (lvl==0)

{

// cvEllipse (bg, kanan1, cvSize

(20, 3), 45, 0, 360, CV_RGB(0,0,0), 2, 8, 0); cvLine(bg,pos[i],kiri2,CV_RGB(255,0,0),2,0,0); cvLine(bg,pos[i],kanan2,CV_RGB(255,0,0),2,0,0); cvCircle(bg,pos[i],3,CV_RGB(0,0,0),3,0,0); } else if (lvl==1) { cvLine(bg,pos[i],kiri2,CV_RGB(255,0,0),2,0,0); cvLine(bg,pos[i],kanan2,CV_RGB(255,0,0),2,0,0); cvCircle(bg,pos[i],3,CV_RGB(0,0,0),3,0,0);

(5)

} else if (lvl==2) { cvLine(bg,pos[i],kiri2,CV_RGB(255,0,0),2,0,0); cvLine(bg,pos[i],kanan2,CV_RGB(255,0,0),2,0,0); cvCircle(bg,pos[i],3,CV_RGB(0,0,0),3,0,0);

//serangga warna biru } else if (lvl==3) { cvLine(bg,pos[i],kiri2,CV_RGB(255,0,0),2,0,0); cvLine(bg,pos[i],kanan2,CV_RGB(255,0,0),2,0,0); cvCircle(bg,pos[i],3,CV_RGB(0,0,0),3,0,0); } else if (lvl==4) { cvLine(bg,pos[i],kiri2,CV_RGB(255,0,0),2,0,0); cvLine(bg,pos[i],kanan2,CV_RGB(255,0,0),2,0,0); cvCircle(bg,pos[i],3,CV_RGB(0,0,0),3,0,0); } else if (lvl==5) { cvLine(bg,pos[i],kiri2,CV_RGB(255,0,0),5,0,0);

//FINAL LEVEL (KING)

cvLine(bg,pos[i],kanan2,CV_RGB(255,0,0),5,0,0); cvCircle(bg,pos[i],20,CV_RGB(0,0,0),10,0,0); } else if (lvl==6) //BONUS level { cvCircle(bg,pos[i],5,CV_RGB(0,0,0),3,0,0); cvCircle(bg,kanan1,5,CV_RGB(255,0,0),3,0,0);

(6)

cvCircle(bg,kanan2,5,CV_RGB(255,0,0),3,0,0); }

//fungsi agar serangga tidak melewati batas if(pos[i].x>=630) { pos[i].x=10; // kanan2.x=0; } else if(pos[i].x<=10) { pos[i].x=630; // kanan2.x=640; } else if(pos[i].y>=470)pos[i].y=10; else if(pos[i].y<=10)pos[i].y=470; } } } void CMfcDlg::mati()

// fungsi untuk membunuh serangga {

for(int i=0;i<jml_srg;i++) {

if(lvl!=5){

if (pos[i].x<=kiri && pos[i].x>=kanan ||//cek jika serangga berada didalam bounding box

pos[i].y<=bawah && pos[i].y>=atas)

{

status[i]=0;

//jika ya, "bunuh" serangga poin++;

//poin bertambah pos[i].x=10000;

//load serangga diluar frame

int rnd_audio=rand()%3;

//random suara saat serangga mati

if(rnd_audio==0) {

(7)

PlaySound("audio/cepret1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio==1) {

PlaySound("audio/cepret2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio==1) {

PlaySound("audio/cepret3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} }

} else

if (pos[i].x<=kiri && pos[i].x>=kanan ||//cek jika serangga berada didalam bounding box

pos[i].y<=bawah && pos[i].y>=atas)

{

//load serangga diluar frame

int rnd_audio=rand()%3;

//random suara saat serangga mati

if(rnd_audio==0) {

PlaySound("audio/cepret1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio==1) {

PlaySound("audio/cepret2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio==1) {

PlaySound("audio/cepret3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

status[i]=0;

(8)

poin++; //poin bertambah pos[i].x=10000; } } } void CMfcDlg::level()

// fungsi mengecek adanya tepukan {

if (lvl==0) {

bg = cvLoadImage("gbr/intro.jpg", CV_LOAD_IMAGE_COLOR );//load tulisan "LEVEL 1" pada awal level

cvShowImage("Serangga Nakal", bg); cvWaitKey(500);

PlaySound("audio/intro.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

bg = cvLoadImage("gbr/1.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

//random suara saat serangga mati if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

cvWaitKey(3000);

//delay dengan satuan mili detik jml_srg=10;

//jumlah serangga yang dimunculkan awal();

inc=5;

(9)

game();

//memanggil fungsi game() } else if (lvl==1) { bg = cvLoadImage("gbr/2.jpg", CV_LOAD_IMAGE_COLOR ); cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

//random suara saat serangga mati if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} cvWaitKey(3000); jml_srg=10; awal(); inc=10; game(); } else if (lvl==2) { bg = cvLoadImage("gbr/3.jpg", CV_LOAD_IMAGE_COLOR ); cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

//random suara saat serangga mati if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

(10)

{

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} cvWaitKey(3000); jml_srg=10; awal(); inc=20; game(); } else if (lvl==3) //BONUS level { bg = cvLoadImage("gbr/4.jpg", CV_LOAD_IMAGE_COLOR ); cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

//random suara saat serangga mati if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} cvWaitKey(3000); jml_srg=10; awal(); inc=30; game(); } else if (lvl==4) { bg = cvLoadImage("gbr/5.jpg", CV_LOAD_IMAGE_COLOR ); cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

(11)

if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} cvWaitKey(3000); jml_srg=10; awal(); inc=40; game(); } else if (lvl==5) { bg = cvLoadImage("gbr/final.jpg", CV_LOAD_IMAGE_COLOR ); cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

//random suara saat serangga mati if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} cvWaitKey(3000);

(12)

jml_srg=1; awal(); inc=40; game(); } else if (lvl==6) // FINAL level { bg = cvLoadImage("gbr/bonus.jpg", CV_LOAD_IMAGE_COLOR ); cvShowImage("Serangga Nakal", bg); int rnd_audio2=rand()%3;

//random suara saat serangga mati if(rnd_audio2==0) {

PlaySound("audio/tepuk1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio2==1) {

PlaySound("audio/tepuk3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

} cvWaitKey(3000); jml_srg=10; awal(); inc=40; game(); } } int CMfcDlg::game()

// fungsi segmentasi warna {

waktu_awal=time(NULL); while(1)

{

(13)

if( !cam ) {

fprintf( stderr, "ERROR: frame is null...\n" ); return -1; } //proses segmentasi warna cam_seg = cvCloneImage(cam); height = cam_seg->height; width = cam_seg->width; step = cam_seg->widthStep; channels = cam_seg->nChannels; data = (uchar *)cam_seg->imageData;

for(int i=0;i<height;i++) { for(int j=0;j<width;j++) { B=data[i*step+j*channels+0]; G=data[i*step+j*channels+1]; R=data[i*step+j*channels+2]; // if (((R > (0.62*(G+B))) && (R>77))&&((R-G>27))&& (((G<150)||((G>=150)&&(B>140)) ))) if (((R > (0.85*(G+B))) && (R>105))&&((R-G>73))&& (((G<150)||((G>=150)&&(B>140)) ))) { data[i*step+j*channels+0]=0; data[i*step+j*channels+1]=0; data[i*step+j*channels+2]=255; } else

//menghitamkan warna selain merah { data[i*step+j*channels+0]=0; data[i*step+j*channels+1]=0; data[i*step+j*channels+2]=0; } } } fin_img = cvCloneImage(cam);

//capture langsung dari kamera

ImgGray = cvCreateImage( cvSize(cam_seg->width, cam_seg->height), IPL_DEPTH_8U, 1 );

(14)

cvCvtColor( cam_seg, ImgGray, CV_BGR2GRAY );

//konversi gambar ke grayscale

//proses erosi yang diikuti oleh dilasi disebut proses closing

cvErode(ImgGray,ImgGray,NULL,2); cvDilate(ImgGray,ImgGray,NULL,2);

cvCanny(ImgGray,ImgGray,20,90,3);

// Canny Edge Detection

height1 = ImgGray->height; width1 = ImgGray->width; step1 = ImgGray->widthStep; channels1= ImgGray->nChannels; data1 = (uchar *)ImgGray->imageData;

// ImgGray->origin=cam_seg->origin;

//mencari batas atas dari gambar hasil Canny

atas=0; for(int i1=0;i1<height1;i1++) { for(int j1=0;j1<width1;j1++) { if (data1[i1*step1+j1*channels1]==255) { atas=i1; } } }

//mencari batas kiri dari gambar hasil Canny

kiri=0; for(int j2=0;j2<width1;j2++) { for(int i2=0;i2<height1;i2++) { if (data1[i2*step1+j2*channels1]==255) { kiri=j2; }

(15)

} }

//mencari batas kanan dari gambar hasil Canny

kanan=0; for(int j4=width1;j4>0;j4--) { for(int i4=0;i4<height1;i4++) { if (data1[i4*step1+j4*channels1]==255) { kanan=j4; } } }

//mencari batas bawah dari gambar hasil Canny

bawah=0; for(int i3=height1-1;i3>0;i3--) { for(int j3=0;j3<width1;j3++) { if (data1[i3*step1+j3*channels1]==255) { bawah=i3; } } }

//inisialisasi batas kiri, kanan, atas dan bawah pt1.x=kiri; pt1.y=atas; pt2.x=kiri; pt2.y=bawah; pt3.x=kanan; pt3.y=atas; pt4.x=kanan; pt4.y=bawah;

// fungsi untuk mengganti background saat naik level if (lvl==0) { bg = cvLoadImage("gbr/ruang1.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg }

(16)

else if (lvl==1) { bg = cvLoadImage("gbr/ruang2.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg } else if (lvl==2) { bg = cvLoadImage("gbr/ruang3.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg } else if (lvl==3) { bg = cvLoadImage("gbr/ruang4.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg } else if (lvl==4) { bg = cvLoadImage("gbr/ruang5.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg } else if (lvl==5) { bg = cvLoadImage("gbr/ruangfinal.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg } else if (lvl==6) { bg = cvLoadImage("gbr/ruangbonus.jpg", CV_LOAD_IMAGE_COLOR ); // load gbr bg } /////////////////////////////////// //"membalik" gambar background cvFlip(bg,bg,1); cvFlip(bg,bg,0); // mengambar garis bounding box cvLine(bg,pt1,pt2,CV_RGB(0,0,255),2,8,0); cvLine(bg,pt1,pt3,CV_RGB(0,0,255),2,8,0); cvLine(bg,pt2,pt4,CV_RGB(0,0,255),2,8,0); cvLine(bg,pt3,pt4,CV_RGB(0,0,255),2,8,0); //////////////////////////////////// dx=abs(kiri-kanan);

(17)

dy=abs(atas-bawah);

//jarak bound atas dan bawah

serangga();

//memanggil fungsi serangga()

// mengecek adanya

tepukan

int luas =dx*dy; if(lvl==0) {

if (luas>=10000&&tpk>=0){

//10000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

} mati(); //memanggil fungsi mati() } else if(luas<10000) { tpk=0; } } else if (lvl==1) { if (luas>=9000&&tpk>=0){

//9000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

(18)

mati(); //memanggil fungsi mati() } else if(luas<9000) { tpk=0; } } else if (lvl==2) { if (luas>=8000&&tpk>=0){

//8000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

} mati(); //memanggil fungsi mati() } else if(luas<8000) { tpk=0; } } else if(lvl==3) { if (luas>=7000&&tpk>=0){

//7000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

} mati();

//memanggil fungsi mati()

(19)

else if(luas<7000) { tpk=0; } } else if(lvl==4) { if (luas>=6000&&tpk>=0){

//6000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

} mati(); //memanggil fungsi mati() } else if(luas<6000) { tpk=0; } } else if(lvl==5) {

//nyawa KING ada 9 if (luas>=6000&&tpk>=0){

//6000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

}

int rnd_audio=rand()%3;

//random suara saat serangga mati if(rnd_audio==0)

(20)

PlaySound("audio/des1.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio==1) {

PlaySound("audio/des2.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

else if (rnd_audio==1) {

PlaySound("audio/des3.wav", NULL, SND_FILENAME| SND_SYNC); //load suara

}

nyawaraja--;

if(nyawaraja==0) { mati(); }

//memanggil fungsi mati() } else if(luas<6000) { tpk=0; } } else if(lvl==6) { if (luas>=10000&&tpk>=0){

//10000 = Luas minimal Bounding Box

tpk++; if (tpk==1){

tpk=-1;

//set agar kondisi tidak dalam posisi tepuk

luas=0;

//set luas ke 0, agar raket dapat ditepuk lagi

} mati(); //memanggil fungsi mati() } else if(luas<10000) { tpk=0; } }

(21)

waktu_akhir=time(NULL);

//waktu untuk game over

if(lvl==0) { if(waktu_akhir-waktu_awal==20 && poin<limit) { bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg); cvWaitKey(5000); int rnd_audio3=rand()%4; if(rnd_audio3==0) {

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=10) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() }

(22)

else if(lvl==1) { if(waktu_akhir-waktu_awal==20 && poin<limit) { bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg); cvWaitKey(5000); int rnd_audio3=rand()%4; if(rnd_audio3==0) {

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=20) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() }

}

else if(lvl==2) {

(23)

if(waktu_akhir-waktu_awal==20 && poin<limit)

{

bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg); cvWaitKey(5000); int rnd_audio3=rand()%4; if(rnd_audio3==0) {

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=30) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() } } else if(lvl==3) { if(waktu_akhir-waktu_awal==20 && poin<limit) {

(24)

bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg); cvWaitKey(5000); int rnd_audio3=rand()%4; if(rnd_audio3==0) {

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=40) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() } } else if(lvl==4) { if(waktu_akhir-waktu_awal==20 && poin<limit) { bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

(25)

cvShowImage("Serangga Nakal", bg); cvWaitKey(5000); int rnd_audio3=rand()%4; if(rnd_audio3==0) {

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=50) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() } } else if(lvl==5) { if(waktu_akhir-waktu_awal==60 && poin<limit) { bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg);

(26)

int rnd_audio3=rand()%4; if(rnd_audio3==0) {

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=51) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() } } if(lvl==6) { if(waktu_akhir-waktu_awal==60 && poin<61) { bg = cvLoadImage("gbr/gameover.jpg", CV_LOAD_IMAGE_COLOR );

cvShowImage("Serangga Nakal", bg);

cvWaitKey(5000);

int rnd_audio3=rand()%4; if(rnd_audio3==0)

(27)

{

PlaySound("audio/ketawa1.wav", NULL, SND_FILENAME| SND_SYNC);} //load suara

if(rnd_audio3==1) {

PlaySound("audio/ketawa2.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==2) {

PlaySound("audio/ketawa3.wav", NULL, SND_FILENAME| SND_SYNC);}

if(rnd_audio3==3) {

PlaySound("audio/ketawa4.wav", NULL, SND_FILENAME| SND_SYNC);}

Onbtnexit(); }

//fungsi untuk berpindah level jika poin mencapai kelipatan 10

else if (poin>=30) {

lvl++;

//saat poin mencapai limit, level bertambah

limit+=10;

//naikkan nilai limit level();

//memanggil fungsi level() awal();

//memanggil fungsi awal() } } /* //menampilkan info printf("poin = %d\n", poin); printf("tampung = %d\n", tampung); printf("limit = %d\n", limit); printf("lvl = %d\n\n\n", lvl); */ //fungsi untuk "membalik" window cvFlip(bg,bg,1); cvFlip(bg,bg,0);

(28)

// menampilkan image pada window

cvShowImage("Capture Gambar",fin_img );

cvShowImage("Edge Detection", ImgGray); cvShowImage("Color Segmentation", cam_seg); cvShowImage("Serangga Nakal", bg); // membebaskan memory yg terpakai cvReleaseImage(&fin_img); cam = NULL; cvReleaseImage(&cam_seg); cvReleaseImage(&ImgGray); cvReleaseImage(&bg); cvWaitKey(10);

//delay dengan satuan mili detik } }

mfcDlg.h

// mfcDlg.h : header file // #include "cv.h" #include "highgui.h" #if !defined(AFX_MFCDLG_H__EDE490D5_36E4_4514_9537_9C59DAA44E50__ INCLUDED_) #define AFX_MFCDLG_H__EDE490D5_36E4_4514_9537_9C59DAA44E50__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ///////////////////////////////////////////////////////////// //////////////// // CMfcDlg dialog

(29)

{

// Construction public:

CMfcDlg(CWnd* pParent = NULL); // standard constructor

void prog(IplImage *img);

// void bikin_srg(); void awal();

CvPoint rnd(CvPoint pos); void serangga(); void mati(); void level(); void background(); int game(); // Dialog Data //{{AFX_DATA(CMfcDlg)

enum { IDD = IDD_MFC_DIALOG }; CString m_hWnd;

CString m_hWnd2; CString m_skor;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CMfcDlg) protected:

virtual void DoDataExchange(CDataExchange* pDX);

// DDX/DDV support

//}}AFX_VIRTUAL

// Implementation protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CMfcDlg)

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon(); afx_msg void Onbtnstart();

afx_msg void Onbtnexit();

//}}AFX_MSG

DECLARE_MESSAGE_MAP() };

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

(30)

#endif //

!defined(AFX_MFCDLG_H__EDE490D5_36E4_4514_9537_9C59DAA44E50__ INCLUDED_)

Referensi

Dokumen terkait

Menindaklanjuti hasil seleksi proposal Penelitian dan Pengabdian kepada Masyarakat Tahun 2016 untuk pendanaan tah,tn 2017 yang hasilnya telah diumumkan melalui Surat Nomor

public ActionResult

Mempunyai tenaga pendidik dengan kwalifikasi pendidikan S-2 dan minimal S-1 yang berstatus sebagai guru tetap (PNS) sebanyak 30 orang dan guru tidak tetap (GTT) sejumlah 1

from tensorflow.keras import layers from tensorflow.keras.models import Model. from sklearn.model_selection import KFold, StratifiedKFold import pandas

[r]

Setelah menelusuri semua class pada data, tidak terdapat satu pun class yang mewarisi class

Dapatkan Harga SPESIAL dengan menjadi member kami.Untuk Kritik dan Saran selalu kami harapkan untuk terus memperbaiki dan mengembangkan PESONA FASHION.&lt;BR

Tata Usaha dan Gembala Jemaat menilai bahwa aplikasi ini mampu untuk mengatasi permasalahan yang telah disebutkan sebelumnya seperti ketidaksesuaian status keanggotaan Jemaat