Thursday, 21 October 2010

Kapal Luar Angkasa v0.2 (1)

Gambar 1. Kapal Luar Angkasa v0.2

Ya, versi kedua ini telah keluar . Yang pastinya (harus) banyak perubahan dari versi sebelumnya (Kapal Luar Angkasa v0.1). Apa saja perubahannya? Silahkan download terlebih dahulu program dan source codenya:

Link : http://www.mediafire.com/?gd6sd89wr1m9gsg
Size : 705 KB
IDE : Code::Blocks v8
Attention : add #include < ctime > , if srand not recognized.

Main Menu, Class dan Constructor

Gambar 2. Click Play Game.
Jika pada versi sebelumnya, saat kita menjalankan program (game) langsung dihadapkan dengan pemusnahan kapal-kapal musuh (yang nggak ada habisnya). Sekarang ada tombol-tombol untuk memilih bagian-bagian mana saja yang akan kita kunjungi (dan mampir sebentar untuk meminum segelas teh/kopi), yang biasa disebut "Main Menu". Saat ini hanya ada dua tombol, yaitu tombol untuk memulai permainan, dan untuk keluar dari permainan. Tombol-tombol ini tentu bisa kita tambah dengan mudah dengan adanya kelas tombol (class tombol):


class tombol
{
    SDL_Rect kotak;

    public:
    tombol(int,int);
    void diklik(int,int,int);
    void tbl_tampil(std::string); //tbl = tombol
};
SDL_Rect kotak, berfungsi untuk menempatkan koordinat objek tombol pada layar (screen). Selain itu merupakan bagian terpenting karena untuk memeriksa apakah tombol kiri mouse tertekan diatas objek tombol ini atau tidak. SDL_Rect memang banyak gunanya hehehe... (lihat Segitiga dari SDL_Rect, oups Segitiga dari Kotak). Untuk tombol(int,int) merupakan konstruktor (Constructor) dengan 2 parameter bertipe int. Sedangkan kata kunci public adalah pemberian hak atau akses untuk variabel, fungsi atau member lainnya pada kelas, yang berarti nilainya dapat digunakan oleh objek lain diluar kelas ini. Jika kita tidak menetapkan haknya (misal public) maka secara otomatis hak yang dimiliki adalah private dan hanya dapat digunakan oleh member pada kelas yang sama. Sedangkan konstruktor dipanggil secara otomatis, jika pada contoh diatas memiliki 2 parameter.

Maka saat kita membuat objek dengan kelas tombol kita hanya perlu memasukkan nilai untuk parameternya, jika tidak maka akan terjadi error saat proses build. Kecuali jika kelas tombol memiliki konstruktor tanpa parameter. Konstruktor berguna untuk menginisialisasi nilai-nilai pada member (variabel) pada kelas. Satu kelas dapat memiliki beberapa konstruktor dengan parameter yang berbeda-beda, seperti kode berikut:

#include <iostream>

using namespace std;

class A{
    int x;
    char y;
    public:
    A();
    A(int);
    A(char);
    void show();
};

//Konstruktor pertama
A::A(){
    x = 15;
    y = 'A';
}

//Konstruktor kedua
A::A(int _X){
    x = _X;
    y = 'B';
}

//Konstruktor ketiga
A::A(char _y){
    x = 10;
    y = _y;
}

void A::show(){
    cout<<x<<" dan "<<y<<endl;
}

int main(){
    A a, b(16), c('K');
    a.show();
    b.show();
    c.show();
    return 0;
}

//maaf untuk penamaan variabelnya...
Dapat dilihat pada fungsi main, untuk objek a tidak diberi parameter apapun maka konstruktor yang akan dipanggil adalah konstruktor pertama. Untuk objek b dan c sama-sama memanggil konstruktor dengan parameter, hanya saja konstruktor yang akan dipilih akan disesuaikan dengan data yang dimasukkan.


GameStatus

Jika pada awal program dibuka kita dihadapkan dengan Main Menu, maka pada source code saat memasuki main loop kita disuguhi oleh Game Status. Bagian ini akan mempermudah kita dalam memproses, menampilkan bahkan mencari masalah (Bug) pada program kita. Misal ketika kita berada pada "case GS_PLAYGAME:" maka yang diproses dan ditampilkan adalah kapal jagoan, kapal musuh, peluru dan objek-objek yang diperlukan saja. Jika sewaktu-waktu program crash pada bagian ini (saat bermain), maka pencarian dapat dimulai dari sini (GS_PLAYGAME). Seperti layer pada program Photoshop, yang memudahkan kita mengedit foto-foto.

Sementara itu saja dulu, kita akan ungkap semuanya nanti hehehe...

- krofz

Next Part : Kapal Luar Angkasa v0.2 (2)
Update: 14 Desember 2012, 18 April 2013 (add some instruction)

5 comments:

  1. kok linknya g bisa kebuka?

    ReplyDelete
  2. Linknya telah saya update dengan yang baru, silahkan didownload. :)

    ReplyDelete
  3. Pas di run kok error ya di sintaks
    int main ( int argc, char** argv )
    {
    srand((unsigned)time(NULL));
    if ( SDL_Init( SDL_INIT_EVERYTHING ) < 0 ){
    printf( "Unable to init SDL: %s\n", SDL_GetError() );
    return 1;
    }

    di baris srand dengan keterangan error
    J:\Kapal_Luar_Angkasa_v0.2\KLA Source Code v0.2\KLA_Main.cpp||In function 'int SDL_main(int, char**)':|
    J:\Kapal_Luar_Angkasa_v0.2\KLA Source Code v0.2\KLA_Main.cpp|691|error: 'time' was not declared in this scope|
    ||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|

    ReplyDelete
    Replies
    1. yup, sebelumnya saya membuat project ini dengan Code::Blocks versi 8, dan dapat berjalan sempurna. Kalau bro pakai C::B v10 atau compiler lain, perlu ditambahkan :

      #include < ctime >

      Delete
  4. Wow, nice working

    ReplyDelete

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top