Project: Harvest Moon++


Disuruh untuk mengembangkan game harvest moon sebagai tubes 2 OOP. Sama seperti game sebelumnya, namun ditambah fitur-fitur yang diinginkan, dan diimplementasi dengan bahasa Java, dan tentunya sudah memakai GUI, tidak command prompt lagi:p

Kelompok kami memutuskan untuk menambah battle dan storyline dari game ini. Setiap tanaman memiliki dewanya masing-masing. Jadi ada dewa kentang, dewa ubi, dewa lobak, dan lain-lain. Tanaman yang bisa ditanam hanyalah tanaman yang dewanya sudah berteman dengan pemain. Pada awal permainan, kentang dan timun telah menjadi teman sehingga bisa ditanam.

Cara berteman dengan dewa ada bermacam-macam, sesuai dengan quest. Ada side quest dan ada main quest. Rencananya memang benar-benar ingin seperti game RPG. Dan ada battlenya. Battlenya ini seperti final fantasy tactics. Tapi instead of only one character can move at one time, all of character can move synchronously.

Masih banyak sih kekurangan di game ini. Terutama bugnya. Hahaha. Oia, kelompok tugas kali ini masih sama dengan sebelumnya, yaitu sama Septu Jamasoka, Novan Parmonangan S, Gurun Nevada, Prama Pradnyana, dan Nugraha.

On Break


Badai tugas besar sedang berlangsung. Ada 5 tugas yang akan dikerjakan dalam 4 atau 5 bahasa berbeda pula. Sepertinya prioritas mengisi blog ini akan turun sementara. Semoga saja jadi tidak terlupakan.

Jadi bakal ngoding/nubes terus? Gak, saya sudah membuka sampul dari 1 buku yang sebelumnya sempat dibeli. Dan sekarang sudah 1/2 jalan. 1/2 jalan itu kira-kira 238/484. #barumulaisenin #gila

Check out my goodreads account. If you are interesting about what I’m reading. 🙂 But I only put fantasy book there, -.-a

Way to Learn


Bagi saya, cara belajar yang paling efektif saat ini adalah dengan belajar dari masalah, dan menyelesaikannya. Mungkin karena itulah banyak yang bilang kalau belajar itu butuh latihan. Kenapa? Karena dengan latihan kita mencoba, dan jika mencoba, kita bisa bertemu dengan masalah.

Jika hanya melihat atau membaca saja, kapan kita akan bertemu dengan masalah? Bagi saya membaca kurang membangkitkan indra untuk berpikir. Berbeda saat dihadapkan dengan suatu masalah, kita dituntut untuk berpikir semaksimal mungkin. Mungkin itu juga yang menyebabkan kenapa banyak deadliner, haha, karena disaat terdesak butuh kemampuan berpikir yang maksimal :p

Jadi belajar itu mulailah dengan mencoba. Karena tanpa mencoba kita tidak akan bertemu dengan masalah. Saat sudah bertemu dengan masalah, cobalah cari penyelesaian dari masalah tersebut. Jika hanya didiamkan, tidak banyak pembelajaran yang kita dapat. Tapi jika berhasil menyelesaikannya, maka banyaklah ilmu yang didapat.

Hal ini sudah terjadi ke saya sendiri. Sudah sering baca teori A teori B, inheritance itu gini gitu, interface itu untuk ini untuk itu, tapi ya cuma dibaca doang. Baru saat diberi tugas diimplementasi, dan ternyata begitu banyak masalah yang ditemui. Tapi setelah berusaha semaksimal mungkin untuk menyelesaikannya, barulah itu namanya belajar.

 

A Question about Java. Anyone can help?


I have a question about threading in Java. Maybe I have a wrong concept, but please help me. 😦

The question can be seen here:

http://stackoverflow.com/questions/5581548/java-multi-threading-make-a-thread-wait-for-another-thread-or-joining-different

Edited:
People at StackOverflow is really nice! They give a good answer so quickly 😀 Hope all of my question will be answered 🙂

Edited:

My own answer, see the question at link above.

Okay, somehow I kind of found the answer, not for all though.

Question 1: Thx @noob comment, “Whenever you wait and notify on an object (in this case, lock), you need to execute these actions in a synchronized block”. So I just make the lock in a synchronize block. Like this:

       int gx = (int)Point2D.this.X();
       int gy = (int)Point2D.this.Y();
       Object lock = new Object();
       player.move(gx,gy,lock);
       synchronized(lock){
           try {
               lock.wait();
           } catch (InterruptedException ex){}
       }

Of course, when the lock giving notify also give it a synchronized block. But it’s made a warning: “Synchronization on non-final field”. It is because there is a chance the lock can be modified by other process, and will make a deadlock, because the lock is lose the reference.

Question 2: No. The land is still active. So it’s using the resource. The thread still active while waiting the player thread died. You can use number 1 technique by making the thread wait. Thread that found wait() will give the monitor to other thread. it’s kind of sleep, and wake up when object that invoke wait() invoke notify().

Question 3: Kind of found the answer, but still haven’t trying it, so I won’t answer.

Question 4: Yeah. It is possible. Make the player have a queue of lock instead of a lock. So in move(), instead of setting lock, it’s adding lock to the queue. And the notify also do the same, it’s only notify the front lock. After front lock, give a notify.

Question 5: Thx to @Gandalf answer, but still don’t know whether I’m doing right or not. Don’t know how to test it.

Merancang Itu Susah


Ingat kalau tubes OOP2 saya udah keluar (eh, udah pernah bilang belum ya)? Tugas OOP1 saya disuruh membuat game Harvest Moon mini. Di command prompt. Dan sekarang tugasnya disuruh untuk mengembangkan game tersebut menjadi punya objektif yang jelas.

Minggu pertama dari tugas ini deadlinenya adalah mengumpulkan proposal pengembangan game. Dan itu sudah dilewati hari senin kemaren. Berhubung anggota kelompok saya banyak yang kreatif, maka proposal yang kami ajukan merupakan game Harvest Moon dengan tanaman seperti pokemon yang bisa bertarung layaknya final fantasy tactics. Keren lho.

Semua yang keren itu tentunya tidak mudah. Haha. Tapi karena semuanya tampak tidak surut semangatnya untuk membuat game yang katanya asisten itu kompleks (saya juga dalam hati berpikir seperti itu), maka saya sebagai PM (project manager) tertantang untuk menjawab tantangan yang diberikan anggota sekelompok saya.

Tahukah kalian, tahapan yang paling sulit dalam membuat perangkat lunak itu bukanlah bagian ngodingnya, atau membuat kodenya, tapi merancang bagaimana desain perangkat lunak tersebut. Dan game ini juga termasuk perangkat lunak. Jujur saya sempat panik karena hingga kemaren masih belum menemukan titik terang bagaimana desain untuk game ini. Padahal udah mulai dari hari Sabtu, saat membuat proposal sambil memikirkan desainnya.

Senin dan Selasa saya sampai meninggalkan beberapa mata kuliah (maafkan saya pak, bu), untuk membuat rancangan desain tugas ini. Tapi bersyukur punya senior-senior yang hebat yang bisa ditanya-tanyain, (tag: @hallucinogen @kd_recursion @hover4phoenix @the_legacy) hari ini sudah terlihat titik terangnya. Ya, baru titik terang, suatu titik dimana bisa membagi tugas, dan menjelaskan bagaimana game ini bekerja, ke teman-teman sekelompok. Perjalanan masih jauh, kawan.

Deadline selanjutnya hari Senin (CMIIW) minggu depan, tinggal 5 hari lagi. Semoga saya dan teman-teman bisa mengejar deadline untuk membuat prototype dari game ini. Katanya asisten mungkin asal lulus compile, tapi asisten juga masih ragu saat itu, jadi entahlah, jika ternyata H-1 ada pemberitahuan harus sudah bisa nyangkul, nanam dan lain-lain..

Menulis ini memakan waktu 20 menit lho, tujuannya agar yang ngebaca mau mendoakan saya supaya berhasil… Haha. Mohon doanya ya… :p

Novel? Di saat seperti ini?


Kemaren baru saja membeli 3 novel, The Necromancer, Time Quake, dan satu lagi lupa judulnya apa. 2 dari novel yang saya beli ini merupakan lanjutan dari seri yang sebelumnya sudah saya miliki. Bukan sengaja meluangkan waktu khusus untuk membeli, tapi karena kebetulan kemaren mengantar teman ke BEC, dan parkir di Gramedia, ya sekalian aja membeli.

Wah, disaat banyak tugas gini masih beli novel? Haha. Hanya membeli, tak harap kembali, eh, tak tau kapan dibaca. Kalau misalnya tidak membeli, sepertinya tidak akan ada niatan untuk meluangkan waktu pergi membeli. Baterai jam kamar saja belum terbeli, padahal ada toko di depan kosan, apalagi ke gramedia yang lebih jauh daripada depan kosan. 😀

Yah, sebenarnya novelnya sudah lama diidamkan, dan biasanya beli dari bukukita.com. Tapi karena rekening saya yang ada internet bankingnya sudah tidak punya isinya lagi, jadinya sudah tidak bisa membeli dari internet. -.-”

Kapan akan dibaca? Itu masalahnya, sepertinya akan menimbulkan rasa bersalah jika membaca novel disaat banyak tugas yang tidak berhenti-henti. Tapi mungkin saya akan membaca menggantikan bermain di socnet. Haha. mungkin.