Selasa, 17 Mei 2011

Puzzle Masters

Puzzle Masters ScreenshotPuzzle Masters ScreenshotPuzzle Masters Screenshot


Bikin game bareng kang Gulam lagi !!!. Sbenernya game ini sudah agak lama jadinya, tapi ntah kenapa gagal terus saat mau upload jadi baru di post sekarang setelah di aplod sama kang Gulam.


Cara mainnya pasti udah pada familiar lah, geser kotak-kotak ke kanan, kiri, atas, bawah atau ke timur, barat, selatan, utara sampai membentuk suatu gambar. Saya dulu pernah main game macam ini di Resident Evil 4 Ps2 (sebagai mini games), kalau ga salah saat Ashley dikejar2 zombie mirip mumi. Halah, malah ngelantur bahas Resident Evil 4. Ukeh, buat yang mau coba gamenya, atau yang mau ngebandingin dengan mini game RE 4, atau yang mau ngintip scriptnya silakan didonlot, buat yang ga mau ya ga papa, tapi harus donlot, haha... Ini link download nya:
dc347.4shared.com/download/jQkT8Org?tsid=20110516-231146-2e0dd329

Minggu, 08 Mei 2011

Part Of War


Part Of War screenshot 1
Part Of War screenshot 2
Part Of War screenshot 3


Game requestan kang Gulam, requestnya game heli 3d (sebenarnya bukan request, lha wong bantu bikinnya juga) tapi karena 3d terlalu sulit buat saya, jadinya buat game 2.5d shoot them up atau shmup. Player dapat menembakkan peluru sepesial juga dapat menembakkan dua peluru sekaligus untuk meledakkan musuh-musuh kuat misalnya Tank dengan lebih cepat, tapi penggunaan amunisi juga meningkat 2x lipat. Pemodelan kendaraan tempur masih menggunakan isometrik 1 rotasi angle seperti Shark Area 2.



Oiya, dapet saran dari brot Cebri Nugraha agar menyertakan script zip agar bisa buat belajar, makasih bro sarannya. Script yang di game saya konversi ke *.pyc untuk menghindari file ga sengaja ke edit dan membuat game error.



Maaf saya tidak bisa membuat deksripsi game dengan detail karena bisa panjang banget ni posting jadi saya coret2 sedikit. Dan script game ini jangan dijadikan patokan karena strukturnya acak2an.



Game ini menggunakan sistem OOP (tapi masih sangat kacau). Berikut garis besar penjelasan tiap file:




* Bgm.mid

file midi untuk background game diambil dari game java Kyushu Devil *ngumpet*.



* DrawPlus.py

Module yang mempunyai 2 fungsi yaitu menampilkan popup teks (help,about,gameover, dll.) dan menampilkan query (hanya saya gunakan untuk pause game). Module ini rencananya mau saya jadikan alternatif buat yang bosan dengan popup & query standar dari appuifw. Namun saat ini fungsi2nya masih bergantung dengan program game inti (Main.py).



* HeliBlack.py, HeliGreen.py, TankGreen.py, FighterGreen.py

Ini adalah script model2 objek (kendaraan tempur). Dalam script ini tersimpan data titik kordinat objek, proses transformasi kordinat sederhana dan penggambaran polygon objek juga dilakukan di file2 ini.



* GPclass.py

Fungsi mesin pencari target. Pada game Shark Area2 ini digunakan untuk AI hiu agar bisa mengejar ikan. Namun pada game ini hanya digunakan untuk merotasi objek kendaraan tempur agar arah objek sesuai pola gerakan karena game ini tidak menggunakan AI. Algoritmanya ngawur, yang penting jalan hehe...



* MenuClass.py

Fungsi menu ini digunakan pada main menu dan select stage. Script ini masih sulit dipakai dan masih ada bug terkadang harus menekan tombol berulang2 untuk membuka pilihan, namun bug tidak berpengaruh pada kinerja program.



* SL.py

Fungsi untuk meload dan menyimpan data (game.dt). Contoh script saya dapat dari Ini.



* game.dt

File tempat penyimpanan data game



* Viewer.py

Fungsi untuk menampilkan model kendaraan tempur yang diputer2 (biar kayak show room game Asphalt N-Gage gitu :p).



* Main.py

Ini adalah script inti game (file ini pada game bernama POW.py). Gameplay, tumbukan, scoring, dan semua script diatas dipanggil/diolah pada script ini. Looping utama juga dilakukan disini.


*cek satu2, hmm... Kayaknya ga ada yang kelewat* Itu garis besar sistemnya yang awut2an. Monggo kalau mau diobok2 *ngarep ada yg mau :D* . Link download? Ini dia:



Part_Of_War.sis

POW_script.zip

Rabu, 20 April 2011

List, fungsi, class

Haha.. Bingung mau kasih judul apa, intinya cuma contoh bagaimana mengelompokan script dengan penggunaan multi dimensional list:




nama_list=[[nilai,nilai],[nilai,nilai]]



fungsi berargumen:




def nama_fungsi(argumen):

>>>>isi_fungsi




dan class:




class nama_class:

>>>>isi_class




Sekali lagi ini hanyalah contoh, bukan struktur script yang baik, sampai saat ini saya masih coba ini, coba itu berusaha membuat struktur yang rapi dan fleksibel, tp belum berhasil.. Hehe... Ganti tanda ">" pada awal syntax dengan spasi. Sebagai contoh, data disimpan dalam multi dimensional list




type1 = ["Alas kaki", ["sepatu","sandal"]]

type2 = ["Tutup kepala", ["topi","peci"]]




Lalu misal kita ingin membuat fungsi untuk memproses nilai2 list diatas




def cek_type1():

>>>>print "kategori "+type1[0]+" berisi:"

>>>>>>>>for i in range(len(type1[1])):

>>>>>>>>>>>>print type1[1][i]




def cek_type2():

>>>>print "kategori "+type2[0]+" berisi:"

>>>>>>>>for i in range(len(type2[1])):

>>>>>>>>>>>>print type2[1][i]




#pemanggilan
cek_type1()

cek_type2()



Jika list type banyak macamnya misalnya type1,type2,type3...type40, kita harus mencari cara yang lebih efisien. Salah satu solusinya yaitu membuat mesin untuk melakukan proses (dalam hal ini proses pengecekan). Untuk ini kita dapat menggunakan fungsi berargumen




def mesin_cek(type_barang):

>>>>print "kategori "+type_barang[0]+" berisi:"

>>>>>>>>for i in range(len(type_barang[1])):

>>>>>>>>>>>>print type_barang[1][i]



# pemanggilan

mesin_cek(type1)

mesin_cek(type2)





Fungsi mesin_cek diatas memproses data argumen yang dimasukkan. Dengan begini, kita cukup menggunakan satu fungsi diatas untuk mengecek semua data list type kita.



Jika fungsi kita banyak akan lebih mudah diorganisir jika disimpan didalam class. Jika script diatas dikelompokkan dengan class:




class pakaian:

>>>>type1=["Alas kaki", ["sepatu","sandal"]]

>>>>type2=["Tutup kepala", ["topi","peci"]]


>>>>def mesin_cek(self,type_barang):

>>>>>>>>print "kategori "+type_barang[0]+" berisi:"

>>>>>>>>>>>>for i in range(len(type_barang[1])):

>>>>>>>>>>>>>>>>print type_barang[1][i]




#pemanggilan

p=pakaian()

p.mesin_cek(p.type1)

p.mesin_cek(p.type2)






"self" digunakan untuk menandai bahwa objek tersebut berada pada class yang sama. Jika kita tidak menyertakan self maka objek yang dipanggil adalah objek global, dan jika tidak ada objek global yang dimaksud, maka pesan error muncul. Contoh:



#global variabel angka

angka=1


class percobaan:

>>>>#lokal variabel angka

>>>>angka=6

>>>>def test(self):

>>>>>>>>print angka # global

>>>>>>>>print self.angka # lokal



c=percobaan()

c.test()

# jika variabel lokal angka dipanggil dari luar class, harus menyertakan instance class nya



print c.angka

print angka



Udah ah, cape nulis hehe... Happy coding..