Pembahasan Tugas FunCoding 1-3

Belajar Programming - beling.cs.ui.ac.id
Belajar Programming – beling.cs.ui.ac.id

Hola! Setelah beberapa post isinya tentang cerita-cerita karangan, kembali lagi ingin menulis pembahasan soal programming. Kali ini mau nulis tentang pembahasan 3 tugas besar yang menemani saya di acara FunCoding di Gedung Bundar UI 6 hari yang lalu, dari tanggal 24-26 Juli kemarin.

Boleh cerita sedikit ya? Boleh. Oke, lanjut.

Acaranya seru abis! 3 hari diajarin programing java dasar,jadi 3 hari ngoding terus. Udah gitu setiap acara dimulai selalu ada sesi semacam seminar gitu dari kakak-kakak Fasilkom UI.

Terus di hari ke-2 ada acara Tour de Fasilkom, diajakin jalan-jalan keliling Fasilkom. Setahun lalu pas SMP main ke Fasilkom cuma bisa lihat Gedung Bundar jauh dari perpus sana, sekarang bisa masuk ke 3 gedung itu dan keliling-keliling dalamnya,asik banget,haha.

Hari ke-3, games. Rame sih, tapi kesel sedikit karena kelompok saya ada yang ga hadir 2 orang T.T

Dan hal yang benar-benar saya tangkap di acara kemarin, anak-anak Fasilkom banyak banget game developernya. Game-gamenya juga keren, salut deh!

Dan lebih seneng lagi, anak-anak disni asik semua, baik kaka-kaka maupun temen-temennya. Pengen deh FunCodingnya diulang *eh

Kembali ke pembahasan soal. Dalam kegiatan kemarin ada tiga tugas besar yang diberikan satu soal perhari. Tugas 1 kemarin, alhamdulillah solved sendiri se-lab, terus untuk tugas 2, kelar 2 nomor, tapi nomor 3 ga sempet kesolve karena waktu habis gara-gara kelamaan mikir di nomor 2 T.T. Dan tugas 3, kembali solved. B)

Soal bisa dilihat disini

Berikut pembahasan soalnya :

1. RockPapperScissor

Nomor 1 : Kita cuma disuruh bikin decision untuk membandingkan jika kita pake apa, musuh pake apa, maka jadinya akan gimana. Kepikiran buat pake operasi AND buat if nya, tapi lebih enak pake nested if.

public void win()
//ini decision jika kita sebagai batu
if (our==ROCK) {
//decision musuh sebagai batu,gunting,dan kertas
if (enemy==ROCK) {
status=TIE;
}
else if (enemy==SCISSORS) {
status=WIN;
}
else if (enemy==PAPER) {
status=LOSE;
}
}
//ini decision jika kita sebagai gunting
else if (our==SCISSORS) {
//decision musuh sebagai batu,gunting,dan kertas
if (enemy==SCISSORS) {
status=TIE;
}
else if (enemy==ROCK) {
status=LOSE;
}
else if (enemy==PAPER) {
status=WIN;
}
}
//ini decision jika kita sebagai kertas
else if (our==PAPER) {
//decision musuh sebagai batu,gunting,dan kertas
if (enemy==PAPER) {
status=TIE;
}
else if (enemy==SCISSORS) {
status=LOSE;
}
else if (enemy==ROCK) {
status=WIN;
}
}
//tidak ada return,karena method bertipe void yang tidak mengembalikan nilai
}

Nomor 2 : Kita cuma ngebandingin variabel status aja. Jika statusnya kalah, maka notification bakalan berisi string kalah. Begitu pula jika statusnya menang, dan lainnya.

public void setNotification() {
//decision jika statusnya seri,maka string notification berisi "SERI"
if (status==TIE) {
notification="SERI";
}
//decision jika statusnya kalah ,maka string notification berisi "KALAH"
else if (status==LOSE) {
notification="KALAH";
}
//decision jika statusnya menang,maka string notification berisi "MENANG"
else if (status==WIN) {
notification="MENANG";
}
}

Nomor 3 : Cuma ngupdate score, jika musuh menang, maka increment untuk skor musuh. Jika kita yang menang,maka increment untuk skor kita

public void updateScore() {
//jika status menang
if (status==WIN) {
ourScore++;
}
//jika status kalah
else if (status==LOSE) {
enemyScore++;
}
}

2. HangMan

Nomor 1 : Di nomor 1, kita suruh ngecocokin. Jika huruf yang kita tebak sama dengan huruf jawaban, maka kita manggil suatu method dan boolean menjadi true.

private boolean checkGuess(String character){
//set satu boolean sebagai nilai return
boolean cek=false;
//perulangan untuk membandingkan karakter kita dengan karakter yang benar
for (int i=0;i<guessThisString.length();i++) {
String ch = guessThisString.charAt(i) + "";
if (ch.equalsIgnoreCase(character)) {
cek=doForTheRightThing(i);
}
}
return cek;
}

Nomor 2 : Lakukan perulangan sebanyak karakter dari huruf jawaban. Jika method doForTheRIghtThing() true semua, maka return true. Intinya disini cuma mau ngecocokin jawaban.

private boolean isWin() {
for (int i=0;i<guessThisString.length();i++) {
//jika rightGuess(i) salah
if (!rightGuess(i)) {
return false;
}
}
return true;
}

Nomor 3 : Disini kita cuma nampilin jawaban yang benar, dan nampilin pilihan apakah mau main lagi atau tidak.

private void enableSolution(){
for (int i=0;i<guessThisString.length();i++) {
//menampilkan jawaban yang benar
openCharSolution(i);
}
//menampilkan opsi apakah mau bermain lagi
viewPlayMore();
}

3. TicTacToe

Nomor 1 : Cuma ngecek line dalam dua sisi aja, vertikal dan horizontal. Makanya ada dua array disitu. Nilai return bakal true jika dalam satu line bidaknya sama semua. Kalo ada salah satu yang berbeda, return false.

public boolean cekArray(int[] arr, int player) {
boolean cek=false;
//ngebandingin array dalam baris 1,2,dan 3
if (arr[0]==player && arr[1]==player && arr[2]==player) {
cek=true;
}
return cek;
}

Nomor 2,3,4 : Ini ngecek satu line dari posisi yang berbeda, nomor 2 cek dari diagoal, nomor 3 cek dari baris, dan nomor 4 cek dari kolom. Kodenya sama untuk nomor 1,2,dan 3, cukup ganti nama parameter arraynya aja. Disini saya akan memakai source untuk nomor 2.

public boolean cekDiagonal(int[][] arrayDiagonal, int player) {
boolean cek=false;
for (int i=0;i<arrayDiagonal.length;i++) {
boolean check=cekArray(arrayDiagonal[i],player);
if (check==true) {
cek=true;
}
}

return cek;
}

~~~

Sekian dari pembahasan ini, mungkin nanti akan terus diupdate. Buat yang belum ngerti, bisa didiskusiin bareng-bareng, thanks!😀

Credits : Belajar Programming | @SunSquareStudio

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s