Tebak-tebak Bahasa Pemrograman


Baru nemu situs yang menarik, sesuai dengan judul post saya, yaitu menebak bahasa pemrograman dengan diberikan potongan kode program.

Ini link situsnya: http://wtpl.heroku.com/

Kalau anda bisa menebak bahasa dengan benar, maka situs akan langsung meberikan soal selanjutnya. Anda bisa melihat skor anda di bagian kiri atas, dan jika anda ingin tidak tahu bahasa pemrograman yang dimaksud, anda bisa menekan tombol forfeit atau menekan escape di keyboard untuk mengetahui jawabannya.

Pada awal mencoba, saya, timmy, dan ecky mendapatkan nilai 33%, dan kali kedua tentu saja mendapatkan score 100%. Bukan karena jago, tapi karena make script berikut:

langs = ['ACL2', 'ActionScript', 'Ada', 'ALGOL 68', 'APL', 'Assembly', 'AutoHotKey', 'AWK', 'Bash', 'BASIC', 'Batch file', 'Befunge', 'Brainfuck', 'C', 'C#', 'C++', 'Chef', 'Clojure', 'COBOL', 'CoffeeScript', 'Common Lisp', 'D', 'Dart', 'Delphi', 'Erlang', 'F#', 'Factor', 'Falcon', 'FALSE', 'Forth', 'Fortran', 'Go', 'Golfscript', 'Groovy', 'Haskell', 'haXe', 'Icon', 'Inform 7', 'Intercal', 'Io', 'J', 'Java', 'JavaScript', 'K', 'LaTeX', 'Logo', 'Lua', 'make', 'Mathematica', 'MATLAB', 'Modula-2', 'Nemerle', 'Objective-C', 'OCaml', 'Pascal', 'Perl', 'PHP', 'Piet', 'Pike', 'PowerShell', 'Prolog', 'Python', 'Racket', 'Ruby', 'Scala', 'Scheme', 'Seed7', 'Smalltalk', 'SNUSP', 'Standard ML', 'Tcl', 'TI-BASIC', 'Visual Basic', 'Whenever', 'XPath 2.0'];
for (i=0; i<langs.length; i++) {
  $("#guess").val(langs[i]);
  $("#guess").keyup();
}

Freak? Hanya ingin memuaskan rasa ingin tahu. Haha.

Project: Harvest Moon–


Ini adalah tugas OOP pertama saya. Dan tugas ini kemudian akan dilanjutkan di tugas kedua. Seperti judulnya, tugas ini memang membuat game Harvest Moon. Bahasa yang digunakan adalah C++, dan diimplementasikan ke command prompt. Lucu ya, game dibuat di command prompt? Haha. Tapi begitulah adanya.

Tugas ini sudah lama sih diberikan, tapi baru ditulis di blog setelah kesibukan yang terjadi selama beberapa waktu. Haha. Tugas ini saya kerjakan bersama anggota kelompok saya. Septu Jamasoka, Novan Parmonangan S, Gurun Nevada Daran, Prama Pradnyana, dan Nugraha.

Apa aja yang bisa dilakukan game ini? Pada game ini  terdapat 3 area, rumah, toko, dan lahan. Di lahan ini tentunya ada lahan yang bisa ditanami tanaman, dan tanaman tersebut bisa disiram, dan kemudian jika sudah saatnya panen, bisa dipanen, dan kemudian ditebas. Persis seperti game Harvest Moon biasa.

Tanaman yang sudah dipanen akan tersimpan di inventory sebagai buah, dan kemudian bisa dijual. Selain itu buah juga bisa dimakan dan memberi efek-efek yang bermacam-macam. Tanaman juga hanya bisa ditanam pada musim tertentu, dan terkadang cuaca bisa hujan, badai atau normal (cerah). Di lahan juga terdapat 3 kurcaci yang tiap kurcacinya memiliki job yang berbeda, menyiram, menebas, dan memanen.

Game ini tentunya juga bisa disave dan diload untuk dimainkan lagi. Setiap perintah diberikan melalui ketikan, dan kemudian perintah tersebut diakhiri dengan karakter pagar.

Lucu ya gamenya? Berikut screenshotnya:

startscreen

Gambar Mula

home

Di rumah, saat ingin teleport ke lahan

Kurcaci lagi akan menyiram. Warna kuning dilahan adalah bibit yang udah disiram.

Tanaman lobak siap panen dan kentang remaja

Segini aja deh screenshotnya. Sebenarnya ada 12 tanaman yang bisa ditanam. Tapi karena capek nanemnya, dan nungguin musimnya, dan nge-printscreen dan nge-crop gambarnya ~_~ haha.

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.

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.

CI: Online Library Project #3 – Model


Selanjutnya mengenai model. Apakah model? Model itu kira-kira yang melakukan interaksi dengan database di level aplikasi. Jadi semua yang berhubungan database merupakan fungsi model. Karena ada 3 database maka terdapat 3 model juga. (Mungkin begitu, tapi entahlah, baru menyadari saat menulis ini)

Model-model tersebut adalah:

Baca lebih lanjut

CI: Online Library Project #2 – Database


2 days not blogging and I’ve finished it! But it lacks of almost everything. -.-

Jadi totalnya ada 4 controller, 3 model dan banyak view -.- Sebenarnya saya bingung bagaimana cara untuk menjelaskannya, jadi saya akan coba untuk menjelaskan fungsi permodel dan fungsi percontroller. Untuk #2 ini akan dikhususkan ke database, #3 model, dan #4 controllernya.

Baca lebih lanjut

CI: Online Library Project #1


Ingat tentang post sebelumnya mengenai kalau gw ada tubes dari bang Petra untuk memakai CI dan membuat aplikasi web tentang perpustakaan online? Mau ngasi progress reportnya nih. Petranya juga minta gw nulis di blog mengenai progressnya biar ga repot meriksanya ntar -.- Ya sudahlah sekalian saja.

Dipost sebelumnya gw udah bilang kalau gw make library Ion_auth untuk authorisasi login, jadi 2 hari terakhir ini gw mencoba menggunakan library ini di aplikasi ini. Jadi sekarang aplikasi ini udah bisa login, dan register sebagai user. Tapi belum punya fungsi lainnya T_T

Saat ini gw punya 2 controller, 5 view, dan 0 model. Model yang ada dari library Ion_auth jadi ga dihitung. Sebenarnya juga udah ada model books tapi belum dipake, jadi ga dihitung juga. Controllernya ada pustaka dan user. Controller pustaka punya fungsi index dan register. Controller user punya fungsi login, logout, dan register. Viewnya ada header, vlogged_in, vregister, vlogin, dan vpustaka.

Jadi saat dijalankan, CI akan mengarahkan ke pustaka/index. Disini dengan Ion_auth library dicek, apakah user udah logged_in apa belum. Jika belum, maka akan meload view(vlogin), dan jika sudah akan meload view(vlogged_in). Hasil load ini disimpan ke variable. Kemudian barulah nge-load view ke browser, dengan meload view(header) yang berisikan <head>, dan kemudian meload view(vpustaka) dengan variable yang tadi menyimpan load view login/logged_in. Bagian login/logged_in ini berada di sidebar kanan.

vlogin berisikan form dengan action ke user/login jika menekan button login, dan action ke pustaka/register jika menekan button sign_up. Jika login berhasil, maka akan diredirect kembali ke pustaka/index, dan karena user sudah logged_in maka yang diload bukan vlogin, tapi vlogged_in. Sedangkan jika action yang dilakukan adalah sign up, maka akan dilakukan fungsi di controller pustaka/register, yaitu menyiapkan untuk memanggil vregister sebagai body dari vpustaka. Dan kemudian meload view tersebut.

vregister merupakan view dengan form yang bisa diisi untuk meregistrasikan user. Saat form disubmit, maka akan dipanggil controller user/register, dan kemudian meredirect kembali ke pustaka/index jika user berhasil di create.

Demikian progress reportnya. Maaf bahasanya berantakan karena saya ngebuatnya juga masih berantakan -.- Kalau ada yang salah dari designnya mohon kritikannya ya 🙂

A Beginner touching CI


Sekarang ini lagi punya tubes dari Petra untuk membuat sebuah aplikasi web dengan framework CodeIgniter. Katanya karena CI ini merupakan framework yang paling simple gitu deh. Aplikasinya berkaitan dengan perpustakaan, jadi user bisa login, trus bisa melihat buku-buku yang ada di database, trus bisa nyari buku, trus dari situ bisa “minjam” buku. Kalau user minjam, si user bisa ngeliat dia lagi minjam buku apa aja. Trus ada adminnya juga dong. Si admin tentunya bisa nambahin buku, trus juga bisa ngeliat siapa aja yang lagi minjem, dan siapa yang belum balikin buku. Kira-kira begitu deh speknya. Baca lebih lanjut

la li move syscall – SPIM


Siang ini akan ada praktikum Orkom dan kemaren gw ama beberapa temen gw mencoba duluan menggunakan SPIM. Gw mencoba menginstall PCSPIM yang diberikan oleh asisten, namun dengan ajaibnya semua program contoh berjalan dengan tidak benar, sementara di tempat temen gw berjalan dengan benar. Aneh dan benar-benar ajaib. Hal ini membuat gw menyerah hingga ditawarkan menginstall QtSpim, dan voila! code yang tadinya ga bisa jalan, bisa berjalan tanpa masalah. Ya sudahlah yang penting bisa nyoba dulu make QtSpim, toh sama-sama SPIM.

Baca lebih lanjut