Senin, 19 Desember 2011

/* Tembak-tembak-an
  
*/
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#include<stdlib.h>
    int int_x=35,move,n,x,poin=0,bebek=0;
    char navigasi;
void petunjuk();
void awal();
void game();
void main()
{
    awal();
}
void game()
{
    clrscr();
    gotoxy(35,40);printf("=*=");
    int_x=35;
    gotoxy(65,1);printf("Press k to exit");
    poin=0;
    bebek=0;
    do
    {
        for(x=1;x<=75;x++)
        {
        delay(70);
        gotoxy(x-1,2);printf(" ");
        gotoxy(x,2);printf("s");
        if(kbhit())
        {
        navigasi=getch();
        switch(navigasi)
        {
            case 'd':if(int_x<=73){int_x=int_x+1;move=1;}break;
            case 'a':if(int_x>=3){int_x=int_x-1;move=1;}break;
            case 'k':x=76;navigasi='k';break;
            case ' ':
                for(n=39;n>0;n--)
                {
                    x++;
                    gotoxy(x-1,2);printf(" ");
                    gotoxy(x,2);printf("s");
                    gotoxy(int_x+1,n);printf("|");
                    gotoxy(int_x+1,n+1);printf(" ");
                    gotoxy(int_x+1,40);printf("*");
                    delay(70);
                    if(x==75){x=1;bebek++;gotoxy(75,2);printf(" ");}
                    if((x==int_x+1)&&(n==2))
                    {
                        poin++;
                        gotoxy(x,n);printf("@");
                        delay(500);
                        x=1;
                    }
                }
                gotoxy(int_x+1,1);printf(" ");
                gotoxy(65,1);printf("Press k to exit");
                break;
            default:move=0;break;
        }
        }
        gotoxy(1,1);printf("Poin : %d",poin);
        gotoxy(1,3);printf(" ");
        gotoxy(15,41);printf(" ");
        gotoxy(1,41);printf("Sisa bebek : %d",30-bebek);
        if(x==75){gotoxy(75,2);printf(" ");}
        if(move==1)
        {
            gotoxy(int_x-1,40);printf(" ");
            gotoxy(int_x+3,40);printf(" ");
            gotoxy(int_x,40);printf("=*=");
        }
        }
        if(bebek<=30)
        bebek++;
        if(bebek>30)
        {
            gotoxy(25,25);printf("Poin yang anda dapatkan : %d",poin);
            getch();
            awal();
        }
    }while (navigasi!='k');
    awal();
}

void awal()
{
    int a;
    clrscr();
    printf("MAIN MENU\n");
    printf("1. New Game\n");
    printf("2. Petunjuk Permainan\n");
    printf("3. Exit");
    a=getch();
    switch(a)
    {
        case '1': game();break;
        case '2': petunjuk();break;
        case '3': exit(1);break;
        default : printf("\nPilih angka 1-4!");getch();break;
    }
}

void petunjuk()
{
    clrscr();
    printf("     Petunjuk Permainan\n");
    printf("Tembaklah bebek yang dilambangkan\n");
    printf("dengan huruf 's'sedemikian hingga\n");
    printf("peluru mengenai bebek tersebut.\n");
    printf("Terdapat 30 bebek yang melewati me-\n");
    printf("dan tembak. Yang mampu menembak be-\n");
    printf("bek dengan tepat dengan poin terbanyak\n");
    printf("Dialah yang menjadi pemenang.\n");
    printf("\nkeyboard controler:\n");
    printf("kanan  : d\n");
    printf("kiri   : a\n");
    printf("Tembak : space\n");
    printf("\n\nPress any key...");
    getch();
    awal();
}

Informatika: /*  *  * File : puzzle.c  */ #include ...

Informatika: /*
*
* File : puzzle.c
*/

#include <stdlib.h>
...
: /* * * File : puzzle.c */ #include #include #include #define atas 1 #define kiri 2 #define bawah 3 #define...
/*
 *
 * File : puzzle.c
 */

#include <stdlib.h>
#include <time.h>
#include <stdio.h>

#define atas 1
#define kiri 2
#define bawah 3
#define kanan 4

#define keyUp 0x048
#define keyDown 0x050
#define keyLeft 0x04b
#define keyRight 0x04d

#define true 1
#define false 0

#define easy 10
#define medium 20
#define hard 30

#define caption " ----------------\n// GAME PUZZLE //\n----------------\n"

#define fieldSize 4

char field[fieldSize][fieldSize];
char field2[fieldSize][fieldSize];
unsigned int seed;
int x, y;

int acak(int i);
void initField(int movement);
void move(int arah);
void generateOutput();
int cekUrut();

int acak(int i) {
    int a;
    seed += 5;
    srand(seed);

    a = (rand() % i) + 1;

    return(a);
}

void initField(int movement) {
    int arah, arahOld = -1, nPindah = movement, xOld, yOld;
    int c = 1, i, j;
    char temp;

    srand(time(NULL));
    seed = rand();
    x = y = (fieldSize - 1);

    for (i = 0; i <= (fieldSize - 1); i++) {
        for (j = 0; j <= (fieldSize - 1); j++) {
            field[i][j] = field2[i][j] = c;
            c++;
        }
    }
    field[fieldSize - 1][fieldSize - 1] = field2[fieldSize - 1][fieldSize - 1] = ' ';

    c = 0;
    while (c != nPindah) {
        xOld = x;
        yOld = y;
        arah = acak(4);

        if (arah != 0) {
            if ( c != 0) {
                if ((arah + 2) % 4 == arahOld) {
                    continue;
                }
            }

            switch (arah) {
                case atas :
                    if (y > 0) y--;
                    else continue;
                    break;
                case kiri:
                    if (x > 0) x--;
                    else continue;
                    break;
                case kanan :
                    if (x < fieldSize - 1) x++;
                    else continue;
                    break;
                case bawah :
                    if (y < fieldSize - 1) y++;
                    else continue;
                    break;
                default :
                    break;
            }

            if (x >= 0 && y >= 0 && x <= (fieldSize - 1) && y <= (fieldSize - 1)) {
                temp = field[y][x];
                field[y][x] = field[yOld][xOld];
                field[yOld][xOld] = temp;

                c++;
                arahOld = arah % 4;
            } else {
                x = xOld;
                y = yOld;
            }
        }
    }
}

void move(int arah) {
    int xOld, yOld;
    char temp;

    xOld = x;
    yOld = y;

    switch (arah) {
        case atas :
            if (y > 0) y--;
            break;
        case kiri:
            if (x > 0) x--;
            break;
        case kanan :
            if (x < (fieldSize - 1)) x++;
            break;
        case bawah :
            if (y < (fieldSize - 1)) y++;
            break;
        default :
            break;
    }

    if (x >= 0 && y >= 0 && x <= (fieldSize - 1) && y <= (fieldSize - 1)) {
        temp = field[y][x];
        field[y][x] = field[yOld][xOld];
        field[yOld][xOld] = temp;
    } else {
        x = xOld;
        y = yOld;
    }
    generateOutput();
}

void generateOutput() {
    int i, j, k;
    clrscr();
    puts(caption);
    puts("Tekan ESC untuk keluar / reset permainan...");
    for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");

    for (i = 0; i<=(fieldSize - 1); i++) {
        for (j= 0; j<=(fieldSize - 1); j++) {
            if (i == y && j == x) {
                printf("| %c  ", field[i][j]);
            } else {
                printf("| %2i ", field[i][j]);
            }
        }
        puts("|");

        for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");
    }
}

int cekUrut() {
    int c, d;
    int match = true;

    for (c = 0; c <= (fieldSize - 1); c++) {
        for (d = 0; d <= (fieldSize - 1); d++) {
            if (field[c][d] != field2[c][d]) {
                if (match == true) {
                    match = false;
                }
            }
        }
    }
    return(match);
}

main() {
    int i, j, k, level;
    char key;

    system("cls");
    puts(caption);
    puts("Mainkan puzzle dan menyusunnya menjadi urutan yang benar...");
    puts("Geser kotak kosong sehingga menjadi berurutan sbg berikut : \n");
    initField(0);
    for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");
    for (i = 0; i<=(fieldSize - 1); i++) {
        for (j= 0; j<=(fieldSize - 1); j++) {
            if (i == y && j == x) {
                printf("| %c  ", field2[i][j]);
            } else {
                printf("| %2i ", field2[i][j]);
            }
        }
        puts("|");

        for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");
    }
    puts("Gunakan tombol panah untuk menggeser kotak kosong...\n");
    puts("Tekan sembarang tombol untuk melanjutkan...");
    getch();
    for(;;) {
        system("cls");
        puts("Level : ");
        puts("\t1. Easy");
        puts("\t2. Medium");
        puts("\t3. Hard");
        printf("Pilih Level yang akan dimainkan : ");
         scanf("%i", &level);
       
        switch (level) {
            case 1 :
                initField(easy);
                break;
            case 2 :
                initField(medium);
                break;
            case 3 :
                initField(hard);
                break;
            default :
                puts("Level salah!!");
                getch();
                continue;
        }
       
        system("cls");

        generateOutput();

        while ((key = getch()) != 27) {
            switch(key) {
                case keyUp :
                    move(atas);
                    break;
                case keyDown :
                    move(bawah);
                    break;
                case keyLeft :
                    move(kiri);
                    break;
                case keyRight :
                    move(kanan);
                    break;
            }
            if (cekUrut() == true) {
                puts("\nANDA MENANG!!!");
                break;
            }
        }
        if (key == 27) {
            printf("Apakah anda ingin keluar ?\n['y' utk keluar / 't' utk reset] : ");
            if (toupper(getchar()) == 'Y') break;
            else continue;
        } else {
            printf("Apakah anda ingin main lagi ? [y/t] : ");
            if (toupper(getchar()) == 'T') {
                puts("\nTerima Kasih Telah Mencoba!!!");
                getch();
                break;
            }
            else continue;
        }
    }
}

 Game merupakan kata yang tidak asing lagi didengar telinga, terkadang orang sampai tergila-gila akan hal ini hingga waktu yang mereka miliki hanya untuk bermain game. Pada era saat ini game merupakan teknologi yang berkembang sangat pesat. Apalagi game banyak sekali macamnya dan sangat memberikan hiburan yang benar-benar tidak tanggung-tanggung hingga kocek-pun harus habis untuk kepuasan bermain game, namun banyak sekali seseorang hanya senang bermain game namun tidak mau mempelajari bagaimana cara pembuatanya hal ini sangat disayangkan karena kita hanya akan mengkonsumsi hal itu namun tanpa tahu bagaimana proses pembuatanya.
Seperti judul yang saya buat saya akan mengenalkan bahasa pemrograman C++ yang dapat membuat game sederhana, dari sinilah game-game saat ini muncul yaitu mulai dari bahasa sederhana yang digunakan hingga sekompleks saat ini.....
marilah kita belajar cara pembuatan game bagian 1 ini, yang pertama kita lakukan adalah men-download compiler C++ saya sarankan borland C++ agar dapat dengan mudah mengikuti tutorial ini lalu install pada komputer anda.
Pada bagian 1 ini saya akan memberitahu bagaimana game sederhana layaknya pencocokan gambar yang sama dengan menebak gambar pada posisi tertutup yang saya beri judul Permainan Tebak Angka
  1. bukalah borland C++
  2. pilih menu file->New->edit text untuk membuka halaman
  3. masukkan kode berikut
  4. #include <stdio.h>
    #include <conio.h>

    void check(int b[4][4],int a[4][4]);

    void inisial();

    void tampil(int b[4][4]);

    void play(int b[4][4],int a[4][4]);

    void check(int b[4][4],int a[4][4]);

    /*=============FUNGSI UTAMA================*/
    void main(){
    inisial(); //pemanggilan fungsi inisial
    getch();
    }

    /*=============FUNGSI INISIALISASI ARRAY a DAN b================*/
    void inisial(){
    int a[4][4]={{1,1,2,2},{3,3,4,4},{5,5,6,6},{7,7,8,8}};
    int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
    play(b,a);//pemanggilan fungsi play dengan parameter array a dan b
    }

    /*=============FUNGSI TAMPILAN PERMAINAN================*/
    void tampil(int b[4][4]){
    printf("==================================== ======================================\n\n");
    printf("\t\t\tPermainan Tebak Angka\n");
    printf("==================================== ======================================\n\n");
    printf("*********************************\n*\t*\t*\t*\t*\n");
    printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[0][0],b[0][1],b[0][2],b[0][3]);
    printf("*********************************\n*\t*\t*\t*\t*\n");
    printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[1][0],b[1][1],b[1][2],b[1][3]);
    printf("*********************************\n*\t*\t*\t*\t*\n");
printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[2][0],b[2][1],b[2][2],b[2][3]);
printf("*********************************\n*\t*\t*\t*\t*\n");
printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[3][0],b[3][1],b[3][2],b[3][3]);
printf("*********************************\n");
}

/*=============FUNGSI PERMAINAN DIMULAI================*/
void play(int b[4][4],int a[4][4]){
int kolom1,baris1,kolom2,baris2;
clrscr();
tampil(b);//pemanggilan fungsi tampil dengan parameter array b
printf("Masukkan baris dan kolom, Tebak Angka 1\n");
printf("baris : ");
scanf("%d",&baris1);
printf("kolom : ");
scanf("%d",&kolom1);
b[baris1-1][kolom1-1]=a[baris1-1][kolom1-1];
tampil(b);
clrscr();
tampil(b);
printf("Masukkan baris dan kolom, Tebak Angka 2\n");
printf("baris : ");
scanf("%d",&baris2);
printf("kolom : ");
scanf("%d",&kolom2);
b[baris2-1][kolom2-1]=a[baris2-1][kolom2-1];
if(b[baris1-1][kolom1-1]==b[baris2-1][kolom2-1]){
clrscr();
tampil(b);
}else{b[baris2-1][kolom2-1]=0;
b[baris1-1][kolom1-1]=0;
clrscr();
tampil(b);
}
check(b,a);//pemanggilan fungsi check
}

/*=============FUNGSI PROSES PENGECEKKAN================*/
void check(int b[4][4],int a[4][4]){
if((b[0][0]==a[0][0])&&(b[0][1]==a[0][1])&&( b[0][2]==a[0][2])&&(b[0][3]==a[0][3])&&(b[1 ][0]==a[1][0])&&(b[1][1]==a[1][1])&&(b[1][2 ]==a[1][2])&&(b[1][3]==a[1][3])&&(b[2][0]== a[2][0])&&(b[2][1]==a[2][1])&&(b[2][2]==a[2 ][2])&&(b[2][3]==a[2][3])&&(b[3][0]==a[3][0 ])&&(b[3][1]==a[3][1])&&(b[3][2]==a[3][2])&&(b[3][3]==a[3][3]))
{
printf("SELAMAT ANDA MENANG!!!\n\n");

printf("Ingin mencoba lagi tekan y");

if(getch()=='y'||getch()=='Y')inisial();//kembali memberikan nilai nol pada array b
else getch();//keluar
}
else play(b,a);
}
  1. Setelah menulis kode diatas pilih menu project->compile
  2. Setelah itu pilih menu script->run
  3. mainkan program tersebut dengan memasukkan baris dan kolom untuk mencari angka yang sama jika salah memilih angka kedua maka angka pertama ikut berubah menjadi 0 kembali


Pada tulisan kali ini yaitu cara membuat game sederhana dengan C++ bagian 2 saya akan memberikan beberapa tambahan saja. Sebelumnya telah saya berikan source code permainan tebak angka pada bagian 1 yang tidak memiliki skor ataupun rekapitulasi permainan (mencetak nama pemain beserta nilai skor yang diperoleh), padahal suatu game atau permainan selalu memiliki nilai berupa skor. Sebenarnya penambahan kali ini hanya beberapa saja, yaitu bertujuan untuk melengkapi beberapa bagian dari game itu sendiri. Pada saat permainan dimulai hingga permainan selesai, itulah yang akan menjadi skor untuk permainan tebak angka ini, dimana pemain berupaya untuk memperoleh waktu tercepat. Sekarang mari kita lihat source code berikut:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <dos.h> //header untuk mengatur sleep
#include <time.h> //header time

/*========STRUCT DECLARATION======*/
struct game{
char name[20];
float total;
};typedef struct game game;

void check(int b[4][4],int a[4][4]);

void information();

void tampil(int b[4][4]);

void play(int b[4][4],int a[4][4],time_t c, game gm);

void check(int b[4][4],int a[4][4],time_t c, game gm);

/*=============FUNGSI UTAMA================*/
void main(){
information(); //pemanggilan fungsi informasi
getch();
}

/*=============FUNGSI INISIALISASI ARRAY a DAN b================*/
void information(){
game gm;
int a[4][4]={{1,1,2,2},{3,3,4,4},{5,5,6,6},{7,7,8,8}};
int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
time_t c;
printf("Informasi permainan:\n");
printf("--------------------\n");
printf("Nama Pemain : ");
gets(gm.name);
c = time(NULL);//catat waktu saat ini
play(b,a,c,gm);//pemanggilan fungsi play dengan parameter array a dan b
}

/*=============FUNGSI TAMPILAN PERMAINAN================*/
void tampil(int b[4][4]){
printf("==================================== ======================================\n");
printf("\t\t\tPermainan Tebak Angka\n");
printf("==================================== ======================================\n\n");
printf("*********************************\n*\t*\t*\t*\t*\n");
printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[0][0],b[0][1],b[0][2],b[0][3]);
printf("*********************************\n*\t*\t*\t*\t*\n");
printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[1][0],b[1][1],b[1][2],b[1][3]);
printf("*********************************\n*\t*\t*\t*\t*\n");
printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[2][0],b[2][1],b[2][2],b[2][3]);
printf("*********************************\n*\t*\t*\t*\t*\n");
printf("* %d * %d * %d * %d *\n*\t*\t*\t*\t*\n",b[3][0],b[3][1],b[3][2],b[3][3]);
printf("*********************************\n");
}

/*=============FUNGSI PERMAINAN DIMULAI================*/
void play(int b[4][4],int a[4][4],time_t c,game gm){
int kolom1,baris1,kolom2,baris2;

//Tebak angka ke-1
clrscr();
tampil(b);//pemanggilan fungsi tampil dengan parameter array b
printf("Masukkan baris dan kolom, Tebak Angka 1\n");

Email Family On Facebook  Facebook Helps You Connect and Share with Friends. Sign Up Today!
www.Facebook.com
Embed Free Slideshow  Turn Your Pictures Into Stunning Travel Slideshows. Easy to Create!
tripwow.tripadvisor.com/slideshow
printf("baris : ");
scanf("%d",&baris1);
printf("kolom : ");
scanf("%d",&kolom1);
if(kolom1>4 || baris1>4 ){clrscr();
printf("Maaf angka anda melebihi batas");
sleep(1);
play(b,a,c,gm);}
if(b[baris1-1][kolom1-1]!=0){
printf("Maaf baris %d kolom %d telah terisi\a",baris1,kolom1);
sleep(1);
play(b,a,c,gm);
}
b[baris1-1][kolom1-1]=a[baris1-1][kolom1-1];
tampil(b);

//Tebak angka ke-2
clrscr();
tampil(b);
printf("Masukkan baris dan kolom, Tebak Angka 2\n");
printf("baris : ");
scanf("%d",&baris2);
printf("kolom : ");
scanf("%d",&kolom2);
if(kolom2>4 || baris2>4 ){clrscr();
printf("Maaf angka anda melebihi batas");
sleep(1);
}else
if(b[baris2-1][kolom2-1]!=0){
printf("Maaf baris %d kolom %d telah terisi\a",baris1,kolom1);
sleep(1);
b[baris1-1][kolom1-1]=0;
play(b,a,c,gm);
}
b[baris2-1][kolom2-1]=a[baris2-1][kolom2-1];
if(b[baris1-1][kolom1-1]==b[baris2-1][kolom2-1]){
clrscr();
tampil(b);
}else{b[baris2-1][kolom2-1]=0;
b[baris1-1][kolom1-1]=0;
clrscr();
tampil(b);
}
check(b,a,c,gm);//pemanggilan fungsi check

}

/*=============FUNGSI PROSES PENGECEKKAN================*/
void check(int b[4][4],int a[4][4],time_t c, game gm){
time_t d;
if((b[0][0]==a[0][0])&&(b[0][1]==a[0][1])&&( b[0][2]==a[0][2])&&(b[0][3]==a[0][3])&&(b[1 ][0]==a[1][0])&&(b[1][1]==a[1]1])&&(b[1][2] ==a[1][2])&&(b[1][3]==a[1][3])&&(b[2][0]==a [2][0])&&(b[2][1]==a[2][1])&&(b[2][2]==a[2] [2])&&(b[2][3]==a[2][3])&&(b[3][0]==a[3][0] )&&(b[3][1]==a[3][1])&&(b[3][2]==a[3][2])&&(b[3][3]==a[3][3]))
{
d = time(NULL);//catat waktu saat ini

printf("Permainan selesai .....\n\n");
printf("Apakah anda ingin bermain lagi <Y/N>");

gm.total = difftime(d,c);

if(getch()=='y'||getch()=='Y'){information();//kembali memberikan nilai nol pada array b
}else if(getch()=='n'){
printf("\nRekapitulasi permainan:\n");
printf("-----------------------\n");
printf("Nama: %s\tWaktu: %f detik",gm.name,gm.total);
}
}
else play(b,a,c,gm);
}
//end_of_main

oke.....coba pelajari dan utak-utik dulu aja.......^^.....maav bila kata-kata yang saya buat kurang jelas saya cuma ingin membagi pengalaman.......terima kasih.....oh ya bagian final yang ketiga akan saya buat mungkin cukup lama karena masih banyak tugas yang harus saya kerjakan...hehehehe....(^_^ )