Yok bikin game !! Coretan ini membahas dasar2 cara bikin game sederhana. Saya usahakan agar mudah diikuti oleh anda2 yg masih baru atau belum mengenal Pys60. Yang saya tulis disini sebagian sudah pernah saya bahas pada postingan2 sebelumnya dan akan saya jelaskan dengan bahasa yg lebih sederhana step by step.
Pendahuluan
Pastikan Python interpreter dan modul/library Python standar sudah terinstal pada hp anda. Jika kesulitan mencari yang sesuai untuk type hp anda, silahkan bertanya di Symbian & Pys60 Center (grup fb) atau di blog temen2 yang membahas Pys60.
Selain itu kita juga membutuhkan aplikasi text editor. Dalam contoh ini saya menggunakan aplikasi file manager X-plore versi 1.22 karena multifungsi dan pengoperasiannya mudah (bagi saya). Ok cukup itu saja, lanjut ketahap berikutnya.
Pengenalan
Dalam pembuatan game ini saya menggunakan hp s60v1, namun saya menggunakan syntax2 Python dasar jadi bisa diterapkan pada versi2 s60 yg lainnya (mungkin dengan sedikit penyesuaian). Gameplay yang akan kita buat cukup sederhana yaitu pemain menggerakkan keranjang ke kiri dan kekanan untuk menangkap bola yang berjatuhan dari atas untuk mengumpulkan skor. Game berakhir jika ada bola yang tidak berhasil ditangkap. Pernah memainkan game sejenis? Sekarang kita akan membuatnya.
Tahap awal
Download file ini GameSayaAwal.zip. Didalam file tesebut terdapat satu file text biasa yang saya beri eksistensi ".py" agar program Python tahu kalau itu adalah script python. Jalankan aplikasi X-plore dan extrax/unzip file tersebut ke dalam folder E:\\System\Apps\Python\My\. File tersebut berisi sebuah class bernama Keyboard yang berfungsi untuk meng-handel input dari keyboard. Anda tidak harus mengerti syntax2 pada file tersebut. Class tersebut tidak akan saya jelaskan dengan detail karena saya mengusahakan agar tutorial ini semudah mungkin untuk diikuti. Nantinya kita menggunakan class tersebut untuk mengetahui apakah ada key/tombol yang ditekan atau tidak.
Sekarang kita edit file GameSaya.py (tekan angka 8) lalu buat baris baru (tekan angka nol 3 kali untuk membuat baris baru) tepat dibawah kode return False". Baris ini cuma untuk memisahkan atau mengelompokkan kode script agar mudah dibaca. Lanjut ke tahap berikutnya.
Meng-import module
Apaan module? Module adalah sekumpulan kode script yang dapat kita gunakan. Pada s60 1st dan 2nd module2 ini terletak di folder E:\\System\Libs\. Untuk membuat game ini kita akan menggunakan beberapa module standar/bawaan Python yaitu: appuifw, graphics, e32, dan key_codes. Buat apa module2 itu? Nanti saya jelaskan penggunaannya pada game. Agar module2 tesebut dapat kita gunakan, kita harus meng-import terlebih dahulu. Caranya dengan menuliskan syntax import dilanjutkan dengan nama module. Seperti ini:
besar kecilnya huruf harus sama dengan yang saya tulis pada gambar (huruf kecil semua). Setelah itu kita import module graphics pada baris selanjutnya. Caranya sama dengan meng-import module appuifw diatas. Setelah itu dilanjutkan dengan module e32 dan key_codes. Seperti ini:
Ingat, simbol, huruf, angka, dan spasinya harus sama persis seperti pada gambar, kalau tidak bisa menyebabkan error. Oke sekarang semua module telah kita import. Lanjut..
Instance class Keyboard
Instance sederhananya adalah memberi nama panggilan untuk memanggil satu atau sekumpulan script dengan tujuan untuk memudahkan pemanggilan. Pada kasus ini kita memberikan nama key untuk class Keyboard. Caranya dengan menuliskan kode seperti ini:
Atur User Interface
UI game kita menggunakan fungsi2 pada module appuifw. Sekarang kita mengatur UI program kita. Kita mulai dengan mengatur agar layar game kita fullscreen:
Karena yang kita buat adalah game yang pada dasarnya menampilkan gambar ke layar, maka kita akan menggunakan salah satu fungsi yang terdapat pada module appuifw yaitu Canvas untuk menampilkan gambar. Kita buat instance canvas dan mengaturnya agar meng-handle key (ingat, 'key' adalah instance class Keyboard dan jangan lupa apa itu instance).
Perhatian!! Mulai dari kanvas sampai dengan handle_event) adalah satu baris. Karena layar hp saya tidak cukup, maka ditampilkan menjadi beberapa baris (inilah repotnya scripting pakai hp). Selanjutnya kita gunakan kanvas sebagai body aplikasi.:
Pengaturan UI sudah selesai.
Atur graphics/gambar
Yang akan kita lakukan disini adalah mengatur gambar bukan menampilkan gambar pada layar (belum saatnya). Seperti menyiapkan kertas gambar dan pensil. Dimulai dengan membuat variabel berisi informasi ukuran layar hp:
Variabel? Apaan lagi nih?? Variabel adalah sebuah nama seperti nama panggilan pada instance. Tapi nama pada variabel berisi suatu data. Dan pada kasus diatas, variabel yang saya namai resolusiLayar menyimpan data (176,208).
Buat sebuah gambar dengan module graphics dan menggunakan varibel resolusiLayar sebagai ukuran gambar:
yang kita buat diatas adalah sebuah gambar putih polos sebesar ukuran hp kita. Nanti kita mengisi "gbr" dengan gambar bola dan keranjang. script diatas juga hanya satu baris.
Pengaturan game loop
Buat apa sih loop? Teori dasar animasi (ga tau ini pelajaran SMP ato SMA karena dulu saya ga di ajarin ini di SD) yaitu menampilkan sebuah gambar, lalu dilanjutkan dengan gambar selanjutnya secara cepat dan terus - menerus hingga seolah2 bergerak. Begitu juga pada game. Dan loop atau perulangan yang akan menjalankan teori animasi diatas. Sebelum loop dilakukan, kita harus membuat semacam saklar untuk mengatur loop tersebut. Jika saklar bernilai 1 maka proses loop berjalan, jika bernilai 0 maka proses loop dihentikan dengan kata lain game ditutup. Kita buat variabel saklar:
sebenanya bisa diberi nama apa saja, saya beri nama saklar untuk kemudahan. Dan kita beri nilai 1 agar saat script dijalankan looping juga berjalan.
Saklar sudah kita definisikan, sekarang membuat fungsi untuk menghentikan game:
Script diatas terdiri dari 3 baris. Pada baris pertama kita membuat fungsi yang saya beri nama keluarGame, sedangkan dua baris selanjutnya (yang mempunyai beberapa spasi sebelum kode syntax) adalah isi fungsi tersebut. Jika fungsi dipanggil maka semua isi fungsi akan dijalankan. Kegunaan "fungsi" adalah untuk mengelompokan beberapa kode script agar lebih mudah karena untuk menjalankan syntax2 yang berada didalam fungsi tersebut kita tinggal memanggil nama fungsinya. Pada baris kedua, global saklar adalah mengatur agar variabel saklar didalam fungsi tersebut menjadi variabel global. Pada baris ketiga, kita mengupdate nilai variabel saklar menjadi nol (nonaktif/menghentikan loop).
Selanjutnya kita mengatur tombol exit (right softkey) untuk menjalankan fungsi keluarGame saat ditekan.
syntax diatas terdiri dari satu baris.
Game loop
Sekarang masuk ke tahap perulangan. Untuk ini kita menggunakan while.
While akan menjalankan kode script didalamnya secara terus - menerus selama variabel saklar bernilai 1. Satuan proses perulangan disebut "frame".
Selanjutnya kita mengisi while dengan gbr dan sebuah fungsi dari module e32:
dua baris kode script diatas yang akan dijalankan while secara berulang-ulang. Pada baris kanvas.blit(gbr) kita menampilkan gbr pada kanvas. Pada baris dibawahnya kita menggunakan fungsi dari module e32 yang bernama ao_sleep. Fungsi ini digunakan untuk menghentikan loop selama 0.01 detik sebelum frame berikutnya dijalankan. Proses penghentian ini setahu saya untuk memberi waktu kepada UI untuk memproses setiap frame sebelum memproses ke frame berikutnya (tolong dibenarkan kalau salah).
Test script
Pada tahap ini script sudah dapat dijalankan. Cara menjalankannya:
- Buka aplikasi Python
- Tekan "Options" lalu pilih "Run script"
- Cari script bernama "my\GameSaya.py" dan tekan ok
Jreng!! Muncul blank putih. Cuma itu? Iya, kan dari tadi kita cuma membuat gambar putih polos seukuran layar hp :). Cara menambah gambar bola yang jatuh dari atas? Cara menambah gambar keranjang yang bisa digerakkan kekiri dan kekanan? Insyaallah kita bahas pada bagian berikutnya.
Script yang anda buat error? Coba dibandingkan dengan script ini:
GameSayaTahap1.zip
15 komentar:
hm.. Oke.. Langsung d sebar postingannya, wkwk..
Thaks bro bermanfaat ane tunggu TUT berikut nya .. Sekalian mw nyubain game ngebut Qd
coz kemarin ada virusnya :hehe: :mrgreen:
@gulam: siapp
@randi: terimakasih bro, iya, pada jadi virus, untung kang Gulam masih punya filenya. Oya itu game pertama ane, jadi mohon dimaklumi hehe
Masta mw nanya cara Bikin Menu di aplikasi gimana ea gagal mulu ane .. Hikz misalkan nie ea.. ane make key "DownArrow" sebagi tombol scroll nya.. :p nama menu yang ane bikin A,B,C,D nah gimana supaya waktu di scroll kewabah jadi A ke B, B ke C, C ke D, dan D balik lagi ke A Kayak Menu, di game NGebut QD hueheheheh.. #kaborrrr... :lari: Sebagai Contoh: >>>>>>if un[1]>A[1]: >>>>>>>>un[0]=A[0] >>>>>>>>un[1]=mA[1] >>>>>elif un[1]>B[1] and un[1]<A[1]: #maaf klw salah.. :) Nah gimana tuh masta.. bingung banget ane?? Ane cuba bikin malah kebalik2.. Hikz.. :( #dan maaf sebagai pembelajaran ane edit game NGebut QD nya .. wkwkwkwkwkwk
yach.. akibat copy paste komen nya jadi aneh.. :)
Jangan panggil masta lha, saya juga masih belajar. Kalau pake cara itu susah, ada cara yg lebih mudah. Begini:
def menuA():
>>None
def menuB():
>>None
cursor = 0
listMenu =[menuA, menuB]
labelMenu=[u"Menu A",u"Menu B"]
#ini adalah proses update di loop
jika tombolBawah ditekan: nilai cursor ditambah 1
jika tombolAtas ditekan: nilai cursor dikurangi 1
jika nilai cursor lebih kecil dari nol: nilai cursor diganti menjadi jumlah item pada listMenu
jika nilai cursor lebih besar dari jumlah item pada listMenu: nilai cursor diganti menjadi nol
jika tombolPilih ditekan: jalankan menu sesuai nilai cursor
#proses penggambaran menu
for i in range(len(labelMenu):
text((0,i*jarakTeks),labelMenu[i],warna,font)
#proses penggambaran cursor
text((0,cursor*jarakTeks),labelMenu[cursor],warna,font)
dengan cara ini, jika kita ingin menambah konten pada menu tinggal menambahkannya pada listMenu dan menambahkan nama konten pada labelMenu
terimakasih sob udah edit2 gim ane. Oya script ngebut QD ancur2an, ane bikinnya yang penting jalan haha. Lebih mudah pake script bagus buat belajar misalnya ball.py dan snake.py. Ane juga belajar dari 2 script itu
Makasih ea sob.. Udah bantu.. :)
mantap gan. Tapi lanjutanya mana?.
gan yg pow untk s60v2 7610 gx bisa, yg dipack zip 5game?
dan yg dulu dah kena virus
gan kalo bisa buatin game multiplayer hehehe')
gan tolog forum komentarnya dipermudah please")
gan tolog forum komentarnya dipermudah please")
@Randi: Sama2 sob
@Unknown: makasih sob, maaf lama ni lagi upload2 lanjutannya. Ok pow ane cek dulu, wah kl multiplayer belum bisa sob hehe..
wah.. Jangan2.. Pow ketuker sm yg buat s60v3 gan..
iyo paleng hehe
dibuka kena, waktu stargame setelah muncul tulisan lgsung mental, yg dulu kena tapi bukan app. Tapi dirun pakai python tp sudah hilang karena mmcku eror hehe
@gulam: Pow tak cb install di qd bisa
@unknown: modul key sudah ada di libs nya sob?
Posting Komentar