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..

Minggu, 17 April 2011

Shark Area 2






Game Description:

Sequel Shark Area yang merupakan game percobaan kenalan dengan Python (sampai sekarang pun masih belum akrab dengan Python (-.-)). Gameplay nya masih sama, yaitu cari makan dan hindari serangan Hiu. Perbedaannya adalah karakter atau objek ikan dalam game ini menggunakan 3D polygonal. Namun belum 3D murni, hanya 1 angle rotation dan prespektifnya juga belum sempurna.



Genre: action, simulation


Platform: s60 1st and 2nd.


Language: Bahasa Indonesia


Info: Kemungkinan game ini juga dapat berjalan pada s60 v3 dengan merubah system aplikasi nya


Download links: http://tigan.fiz.su/files/games/SharkArea2.sis


Galery:

Sabtu, 09 April 2011

Meload gambar external dengan module image1st

Melanjutkan coretan Contoh script gambar (basic), kali ini coretan tentang cara meload gambar eksternal khususnya pada s60 1st, namun bisa juga digunakan pada s60 2nd.




Fungsi pada module graphics yang berfungsi untuk meload dan menampilkan gambar pada appuifw.canvas() yaitu: graphics.Image.open(). Sayangnya fungsi tersebut hanya berjalan pada s60v2 keatas dan tidak jalan pada N-Gage saya yang masih s60 v1. Beruntung ada modul buatan pihak ketiga yang berfungsi untuk menampilkan gambar pada s60 v1. Modul tersebut bernama "image1st". Sebenarnya ingin membahas fungsi Image.open() juga, tapi karena saya ndak punya hp buat ngetest jadi hanya cara menampilkan gambar dengan image1st yang saya bahas. Sebelumnya simpan gambar dibawah ini dan taruh di folder E:\images\




Dan monggo download scriptnya disini




Sekilas tentang blit


nah buat yang melanjutkan membaca coretan ini karena pengen tau apa itu "blit()" monggo diteruskan. Buat yang sudah tahu apa itu "blit" mohon koreksi penjelasan saya kalau salah (^_^).. Pada Pys60 setahu saya, blit() berfungsi untuk menampilkan gambar baik gambar external ataupun old graphics didalam ataupun diluar objek gambar external atau old graphics juga.



Dalam contoh script yang telah didownload, blit untuk menampilkan gambar external:


img.blit(file_gambar)

gambar tersebut ditampilkan
apa adanya dengan posisi pada pojok kiri atas. Posisi gambar dapat kita atur target posisinya:


img.blit(file_gambar, target=(20,20))


penjelasan:

target=(x, y)



selain mengatur posisi target, kita juga dapat memotong gambar yang ingin ditampilkan (croping):


img.blit(file_gambar, target=(20,20), source=(20,20,20,20))


penjelasan:

source=(PotongGambarKiri, PotongGambarAtas,PotongGambarKanan, PotongGambarBawah)

pemotongan sebanyak nilai yang dimasukkan (dalam piksel)



Masih kurang? Kita juga dapat me-resize gambarnya:


img.blit(file_gambar, target=(30,30,30,30), scale=1)


penjelasan:

python akan meresize gambar sebesar/sesuai target yang kita masukkan. Pengaturan posisi target sama dengan source. Misalnya kita ingin meresize ukuran gambar menjadi fullscreen 176x208 (resolusi layar hp saya) maka posish target dirubah menjadi (0,0,176,208). Namun resize gambar ini lumayan berat.



Ada satu pengaturan lagi yaitu "mask" ini digunakan untuk mentransparansi gambar sayang, masking ini hanya support pada s60 2nd fp2 keatas. Maaf, saya belum mencoba masking ini jadi tidak saya bahas.



Itulah penggunaan fungsi blit() yang saya tahu dan telah saya coba. Buat yang ingin tahu lebih banyak tentang blit(), silahkan googling hehe...