Feb 22, 2015

Tutorial membuat game hangman dengan Eclipse Part 2 #android


Berikut ini adalah lanjutan dari Tutorial membuat game hangman di android Part 1
Setelah temen-temen mengikuti step by stepnya pada Tutorial membuat game hangman di android Part 1 kemudian ikuti step by step pada Part 2 ini

1. masuk ke "MainActivity.java" ganti dengan source code dibawah ini
package com.example.hangman;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
//import android.view.Menu;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.RatingBar;

/**
 * - Android SDK: Create a Hangman Game
 * 
 * Setia budi - July 2014
 */

public class MainActivity extends Activity  implements OnClickListener {

 MediaPlayer audioBackground;
 Button help;
 Button rate;
 private AlertDialog helpAlert;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  Button playBtn = (Button)findViewById(R.id.playBtn);
  playBtn.setOnClickListener(this);
  
  audioBackground = MediaPlayer.create(this, R.raw.seram);
  audioBackground.setLooping(true);
        audioBackground.setVolume(1,1);
        //Memulai audio
        audioBackground.start();
        
        help=(Button) findViewById(R.id.help1);
        help.setOnClickListener(new View.OnClickListener() {
         
        @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   showHelp();
  }
 });
        
        rate=(Button) findViewById(R.id.rate1);
        rate.setOnClickListener(new View.OnClickListener() {
         
        @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   showRate();
  }
 });
 }
        public void showHelp(){
      AlertDialog.Builder helpBuild = new AlertDialog.Builder(this);
      helpBuild.setTitle("Help");
      helpBuild.setMessage("Menebak kata dengan memilih huruf.\n\n"
    + "Anda hanya memiliki 7 kesempatan jika anda salah \n\n"
    + "maka satu persatu gambar akan keluar mulai dari kepala sampai kaki,\n\n"
    + " maka permainan akan berakhir!");
helpBuild.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { helpAlert.dismiss(); }}); helpAlert = helpBuild.create(); helpBuild.show(); } public void showRate(){ AlertDialog.Builder rateBuild = new AlertDialog.Builder(this); rateBuild.setTitle("Rate"); final RatingBar rating = new RatingBar(this); rating.setMax(6); rateBuild.setIcon(android.R.drawable.btn_star_big_on); rateBuild.setView(rating); //t1.setTitle(String.valueOf(rating)); rateBuild.setMessage("Please Rate Us"); rateBuild.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { helpAlert.dismiss(); }}); helpAlert = rateBuild.create(); rateBuild.show(); } public void onBackPressed() { exit();//Pergi ke method exit } private void exit() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Exit !!!"); builder.setMessage("Yakin ingin Keluar") .setCancelable(false) //jika pilih ya .setPositiveButton("Ya", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { audioBackground.stop(); finish(); } }) //jika pilih tidak .setNegativeButton("Tidak", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }).show(); } @Override public void onClick(View view) { //handle clicks if(view.getId()==R.id.playBtn){ Intent playIntent = new Intent(this, GameActivity.class); this.startActivity(playIntent); { audioBackground.setVolume(0, 0); } } } }

2.create class baru beri nama "GameActivity.java" kemudian pastekan source code dibawah
package com.example.hangman;

import java.util.Random;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
//import android.widget.RatingBar;
import android.widget.TextView;

/**
 * - Android SDK: Create a Hangman Game
 * 
 * Setia budi - July 2014
 */
public class GameActivity extends Activity {
 
 MediaPlayer audioBackground;

 //the words
 private String[] words;
 //random for word selection
 private Random rand;
 //store the current word
 private String currWord;
 //the layout holding the answer
 private LinearLayout wordLayout;
 //text views for each letter in the answer
 private TextView[] charViews;
 //letter button grid
 private GridView letters;
 //letter button adapter
 private LetterAdapter ltrAdapt;
 //body part images
 private ImageView[] bodyParts;
 //total parts
 private int numParts=6;
 //current part
 private int currPart;
 //num chars in word
 private int numChars;
 //num correct so far
 private int numCorr;
 //help
 private AlertDialog helpAlert;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_game);

  Resources res = getResources();
  words = res.getStringArray(R.array.words);

  rand = new Random();
  currWord="";

  wordLayout = (LinearLayout)findViewById(R.id.word);

  letters = (GridView)findViewById(R.id.letters);
  
  bodyParts = new ImageView[numParts];
  bodyParts[0] = (ImageView)findViewById(R.id.head);
  bodyParts[1] = (ImageView)findViewById(R.id.body);
  bodyParts[2] = (ImageView)findViewById(R.id.arm1);
  bodyParts[3] = (ImageView)findViewById(R.id.arm2);
  bodyParts[4] = (ImageView)findViewById(R.id.leg1);
  bodyParts[5] = (ImageView)findViewById(R.id.leg2);
  
  playGame();
  
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
  case android.R.id.home:
   NavUtils.navigateUpFromSameTask(this);
   return true;
  case R.id.action_help:
   showHelp();
   return true;
  }
  return super.onOptionsItemSelected(item);
 }
//play a new game
 private void playGame(){

  
  String newWord = words[rand.nextInt(words.length)]; 
  while(newWord.equals(currWord)) newWord = words[rand.nextInt(words.length)];
  currWord = newWord;
 
  charViews = new TextView[currWord.length()];

  wordLayout.removeAllViews();
 
  for(int c=0; c<currWord.length(); c++){
   charViews[c] = new TextView(this);
  
   charViews[c].setText(""+currWord.charAt(c));
   
   charViews[c].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
     LayoutParams.WRAP_CONTENT));
   charViews[c].setGravity(Gravity.CENTER);
   charViews[c].setTextColor(Color.WHITE);
   charViews[c].setBackgroundResource(R.drawable.letter_bg);
   
   wordLayout.addView(charViews[c]);
  }

  
  ltrAdapt=new LetterAdapter(this);
  letters.setAdapter(ltrAdapt);

  currPart=0;
  numChars=currWord.length();
  numCorr=0;

  for(int p=0; p<numParts; p++){
   bodyParts[p].setVisibility(View.INVISIBLE);
  }
 }

 //letter pressed method
 public void letterPressed(View view){
  //find out which letter was pressed
  String ltr=((TextView)view).getText().toString();
  char letterChar = ltr.charAt(0);
  view.setEnabled(false);
  view.setBackgroundResource(R.drawable.letter_down);
 
  boolean correct=false;
  for(int k=0; k<currWord.length(); k++){ 
   if(currWord.charAt(k)==letterChar){
    correct=true;
    numCorr++;
    charViews[k].setTextColor(Color.BLUE);
   }
  }
  if(correct){
   if(numCorr==numChars){
    //disable all buttons
    disableBtns();
    AlertDialog.Builder winBuild = new AlertDialog.Builder(this);
    winBuild.setTitle("YOU WIN");
    winBuild.setMessage("Jawaban : "+currWord);
    winBuild.setPositiveButton("Main Lagi", 
      new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
      GameActivity.this.playGame();
     }});
    winBuild.setNegativeButton("Keluar", 
      new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
      GameActivity.this.finish();
     }});
    winBuild.setIcon(R.drawable.sukses);
    winBuild.show();
   }
  }
  //check if user still has guesses
  else if(currPart<numParts){
   bodyParts[currPart].setVisibility(View.VISIBLE);
   currPart++;
  }
  else{
   //user has lost
   disableBtns();
   AlertDialog.Builder loseBuild = new AlertDialog.Builder(this);
   loseBuild.setTitle("YOU LOSE");
   loseBuild.setMessage("Jawaban : "+currWord);
   loseBuild.setPositiveButton("Main Lagi", 
     new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
     GameActivity.this.playGame();
    }});
   loseBuild.setNegativeButton("Keluar", 
     new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
     GameActivity.this.finish();
    }});
   loseBuild.setIcon(R.drawable.fail);
   loseBuild.show();
  }
 }

 //disable letter buttons
 public void disableBtns(){ 
  int numLetters = letters.getChildCount();
  for(int l=0; l<numLetters; l++){
   letters.getChildAt(l).setEnabled(false);
  }
 }
 //show help information
 public void showHelp(){
  AlertDialog.Builder helpBuild = new AlertDialog.Builder(this);
  helpBuild.setTitle("Help");
  helpBuild.setMessage("Menebak kata dengan memilih huruf.\n\n"
    + "Anda hanya memiliki 7 kesempatan jika anda salah \n\n"
    + "maka satu persatu gambar akan keluar mulai dari kepala sampai kaki,\n\n"
    + " maka permainan akan berakhir!");
  helpBuild.setPositiveButton("OK", 
    new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int id) {
    helpAlert.dismiss();
   }});
  helpAlert = helpBuild.create();
  helpBuild.show();
 }
}
3.create class baru lagi beri nama "LatterAdapter.java" kemudian pastekan source code dibawah
package com.example.hangman;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;

/**
 * - Android SDK: Create a Hangman Game
 * 
 * setia budi - July 2014
 */

public class LetterAdapter extends BaseAdapter {

 //store letters
 private String[] letters;
 //inflater for button layout
 private LayoutInflater letterInf;

 public LetterAdapter(Context c) {
  //instantiate alphabet array
  letters=new String[26];
  for(int a=0; a<letters.length; a++){
   letters[a]=""+(char)(a+'A');
  }
  //specify layout to inflate
  letterInf = LayoutInflater.from(c);
 }

 @Override
 public int getCount() {
  return letters.length;
 }

 @Override
 public Object getItem(int arg0) {
  return null;
 }

 @Override
 public long getItemId(int arg0) {
  return 0;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  //create a button for the letter at this position in the alphabet
  Button letterBtn;
  if (convertView == null) {  
   //inflate the button layout
   letterBtn = (Button)letterInf.inflate(R.layout.letter, parent, false);
  } else {
   letterBtn = (Button) convertView;
  }
  //set the text to this letter
  letterBtn.setText(letters[position]);
  return letterBtn;
 }

}


4.kemudian masuk ke "AndroidManifest" ganti source code tersebut dengan source code dibawah ini


    

    
        
            
                

                
            
        
        
    



5. Running project tersebut jangan lupa save all terlebih dahulu
screenshot :







semoga bermanfaat :)

NOTE :

Jika sobat blogger ingin full project hangman ini bisa komen dibawah ini sertakan email kalian.Terima kasih :)

About the Author

Setia Budi

Author & Editor

Terima kasih sudah berkunjung :)

1 komentar:

  1. gan boleh minta full projectnya..
    email saya beardw8@gmail.com
    terimakasih

    ReplyDelete

 
Setia Budi © 2015 - Designed by Templateism