Membuat Aplikasi Permainan HangMan untuk Android

Beberapa hari yang lalu, saya mendapat tugas kelompok mata kuliah Mobile Computing membuat game HangMan di Android, saya sekelompok dengan Gilang Abdul Aziz dan kami mengerjakan tugas ini selama sekitar semalam. Perjuangannya lumayan, algoritmanya sih udah beres di awal pengerjaan juga, cuma pas diimplementasikan ke Android ribetnya minta ampun, banyak error-error yang aneh. Mungkin ini efek strukdat kami yang buruk. Nah namun akhirnya beres juga tugas ini, walau dengan fitur yang pas-pasan, dan saya tuliskan hasil jerih payah kami di blog post ini. J

Bagi yang ingin mencoba, silahkan install Android SDK dan IDE nya di komputer Anda. Kami menggunakan Eclipse sebagai IDE. Bagi yang belum tahu cara menginstall Android SDK di Eclipse, silahkan kunjungi blog berikut: http://yudiwbs.wordpress.com/2011/02/13/cara-menginstall-sdk-android-tanpa-internet/

Nah, pengembangan aplikasi Android itu menggunakan bahasa XML untuk tampilannya (UI) dan menggunakan bahasa Java untuk logic, handler, dan semacamnya. Pertama kita bahas tampilan dari aplikasi kami dahulu, berikut XMLnya:

XML untuk UI itu ada di folder proyek kita di dalam folder res>layout>main.xml

<?xml
version=“1.0”
encoding=“utf-8”?>

<LinearLayout
xmlns:android=http://schemas.android.com/apk/res/android

android:orientation=“vertical”

android:layout_width=“fill_parent”

android:layout_height=“fill_parent”

>

<TextView
android:text=“iHangAMan”
android:id=“@+id/textView1”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”></TextView>

<TextView
android:textColor=“#FF00FF”
android:text=“©2011 Hydra and Ilse. Gilang Abdul Aziz dan Muhammad Yusuf.”
android:id=“@+id/textView2”
android:textStyle=“bold”
android:layout_height=“wrap_content”
android:layout_width=“wrap_content”></TextView>

<LinearLayout
android:id=“@+id/linearLayout2”
android:layout_height=“wrap_content”
android:layout_width=“match_parent”>

<EditText
android:text=“”
android:id=“@+id/etInput”
android:layout_height=“wrap_content”
android:layout_width=“match_parent”
android:maxLength=“1”
android:textStyle=“bold”></EditText>

</LinearLayout>

<LinearLayout
android:id=“@+id/linearLayout1”
android:layout_height=“wrap_content”
android:layout_width=“match_parent”>

<TextView
android:text=“10”
android:id=“@+id/tvKesempatan”
android:layout_height=“wrap_content”
android:layout_width=“wrap_content”></TextView>

<Button
android:text=“Tebak!”
android:id=“@+id/btnTebak”
android:layout_height=“wrap_content”
android:layout_width=“wrap_content”></Button>

</LinearLayout>

<TextView
android:text=“——-“
android:id=“@+id/tvKota”
android:layout_height=“wrap_content”
android:layout_width=“wrap_content”></TextView>

</LinearLayout>

Mari kita telaah baris-baris XML di atas, kita akan menggunakan sebuah EditText dengan id etInput untuk masukan karakter tebakan di HangMan nya. Lalu sisa kesempatan dari pengguna ditampilkan di TextView dengan id tvKesempatan. Tombol untuk menebak menggunakan Button dengan id btnTebak. Dan terakhir kata hasil tebakan kita dimunculkan dalam TextView dengan id tvKota. Nah sisanya adalah konten-konten ga penting laah…

Nah dari XML itu kalau dari segi graphical layoutnya menjadi seperti berikut:

Lalu sekarang kita masuk ke bagian yang agak menyeramkan kodingnya, yaitu bagian Javanya. Bagian ini ada di folder proyek tepatnya di folder src>-namaproyekkita->namaproyekkita.java.

package cs.upi.ihangaman;

import java.lang.reflect.Array;

import java.lang.StringBuffer;

import android.app.Activity;

import android.os.Bundle;

import android.view.*;

import android.view.View.OnClickListener;

import android.widget.*;

import cs.upi.ihangaman.R;

public class ihangaman extends Activity {


/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button btnTebak=(Button) findViewById(R.id.btnTebak);

btnTebak.setOnClickListener(new btnTebakKlik());

}

class btnTebakKlik implements OnClickListener{

EditText etInput = (EditText) findViewById(R.id.etInput);

public TextView tvKota = (TextView) findViewById(R.id.tvKota);

public TextView tvKesempatan = (TextView) findViewById(R.id.tvKesempatan);

public String Sjawaban = tvKota.getText().toString();

public boolean benar=false;

//String jawaban=””;

char huruf;

boolean mati = false;

int kesempatan = 10;


/*

public String cekJawaban(String inputKota, char inputJawaban){

for (int i = 0; i < inputKota.length(); i++){

if (inputKota.charAt(i) == inputJawaban){

jawaban = jawaban + inputJawaban;

}else{

jawaban = jawaban + ‘-‘;

}

}

return jawaban;

}*/

public void onClick(View v){

if(kesempatan>=0){

String SKota = “BANDUNG”;

char Kota[] = SKota.toCharArray();

//String jawaban = “”;

char input = etInput.getText().toString().charAt(0);

/*    for (int i = 0; i < kota.length(); i++){

if (kota.charAt(i) == cekInput){

jawaban += cekInput;

}

else{

jawaban += ‘-‘;

}

}

jawaban = jawaban.replace(‘-‘, ‘x’);

tvKota.setText(jawaban);

*/

/*versi punya chupa 1.0 (cileup)

int lengthKota = 7;

char ViewKota[]=tvKota.getText().toString().toCharArray();

String SViewKota;

for(int i=1;i<=lengthKota;i++){

if(ViewKota[i]==’-‘){

if(input==Kota[i]){

ViewKota[i]=input;

} else {

ViewKota[i]=’-‘;

}

SViewKota = ViewKota.toString();

tvKota.setText(SViewKota);

}

}*/

int LengthKota = SKota.length();

char jawaban[]=Sjawaban.toCharArray();

char cekInput = etInput.getText().toString().charAt(0);

StringBuffer SBjawaban = new StringBuffer();

for(int i=0;i

if(jawaban[i]==’-‘){

if(cekInput==SKota.charAt(i)){

jawaban[i]=cekInput;

benar=true;

} else{

jawaban[i]=’-‘;

}

}

else{

jawaban[i]=jawaban[i];

}

SBjawaban.append(jawaban[i]);

}

Sjawaban=SBjawaban.toString();

tvKota.setText(Sjawaban);

if(benar==true){

benar=false;

}

else if(benar==false){

kesempatan–;

benar=false;

}

if(kesempatan<0){

tvKesempatan.setText(“0”);

tvKota.setText(“Anda toloo dan cileup. Sisa kesempatan Anda telah habis.”);

} else{

tvKesempatan.setText(String.valueOf(kesempatan));;

}

}

else{

tvKota.setText(“Woi udah abis wooi. -_______-“);

}

/* versi awal waktu praktikum (cileup)

int panjang = Kota.length();

String jawaban=””;

int kesempatan=5;

char cekInput = etInput.getText().toString().charAt(0);

for (int i=0;i<panjang;i++){

if(Kota.charAt(i)==’-‘){

if(cekInput==Kota.charAt(i)){

jawaban=jawaban+Kota.charAt(i);

} else{

jawaban=jawaban+”-“;

}

}

}

tvKota.setText(jawaban);*/

}

}

}

Nah itu source code yang kami kerjakan semalaman, sedikit ya? Kami lama oleh ngulik programming di Androidnya sih.. Maklum masih cupu.. Itu banyak kodingan yang berwarna hijau adalah sisa-sisa dari programming kami yang salah dan kami tidak tega menghapusnya, makanya dijadikan comment. Ini juga baru didesain untuk satu nama kota untuk ditebak saja, yaitu “BANDUNG”. Silahkan dimengerti sendiri saja, jika ada yang tidak dimengerti silahkan ditanyakan, akan dengan senang hati dijawab.. J

Hasilnya seperti berikut:

Comments
6 Responses to “Membuat Aplikasi Permainan HangMan untuk Android”
  1. mul14 mengatakan:

    Lambat juga gak sih Android emulator-nya?

    • Muhammad Yusuf mengatakan:

      Lambat dibanding dengan emulator smartphone lainnya.. Performancenya juga jelek..🙂

      • mul14 mengatakan:

        Iya… soalnya Android emulator, yang lain kan simulator.

      • Muhammad Yusuf mengatakan:

        Saya juga sering pakai Windows Phone 7 Emulator, dan Windows Phone 7 Emulator performance jauh lebih baik dan lebih cepat start-upnya. Kalau di Emulator Android kita scroll patah-patah, kalau di Emulator WP7 mulus-mulus aja.. Kalau dinilai Emulator Android vs Emulator WP7 = 10 vs 90 lah..

  2. Udei mengatakan:

    maaf kk…itu tebak katanya cuma 1 kata aja y…yaitu BANDUNG aja y….kalo mau masukin yang lebih banyak gimana….bisa g….

    • Muhammad Yusuf mengatakan:

      Iya..🙂
      Kalau mau banyak pakai array of String dan buat sebuah fungsi random untuk memilih String yang akan digunakan dan jangan lupa buat variabel panjang Stringnya dinamis tergantung panjang dari String yang sedang diambil..😀

We need your comment here. Please leave it below.

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: