.:: Jasa Membuat Aplikasi Website,Desktop,Android Order Now..!! | | Order Now..!! Jasa Membuat Project Arduino,Robotic,Print 3D ::.

BUKAN Program Dasar Game Tic Tac Toe Java AWT

0 komentar


بِسْــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم
bismillaahirrahmaanirrahiim

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
Assalamu'alaikum warahmatullahi wabarakatuh

Akhirnya kelar sudah lanjutan artikel Program Dasar Game Tic Tac Toe dengan Java AWT ini. Artikel ini bukan sambungannya lho... tapi perkembangannya... istilah kerennya : beda level! hehehe. Sebelum dilanjoootttt... mau minta maaf dulu soalnya source codenya acak-acakan karena desain web-nya kurang (eh yang desain orang lain lho) ;)

Oke kelengkapan yang dikembangkan dari program dasar sebelumnya :
  • new game
  • skor
  • pop up message (message box gitu loh)
  • milih X atau O
  • artificial intelligence / kecerdasan buatan (manusia vs komputer)
  • status bar
  • menu bar
Yang tetap belum ada : bayaran untuk penulis... hehehe... mau mendoakan biar banyak rejeki juga ga apa apa kok :)

Program masih dalam tampilan standar, pop message masih menggunakan Java AWT dan pakai class MsgBox buatan Real's How To. Class ini untuk menampilkan pop up message. Kemudian untuk AI-nya atawa kecerdasan buatan masih pakai fungsi random (acak) jadi kalau main lawan komputer bego hihihi. Menu dan Status juga masih sederhana bin simpel.

Untuk kecerdasan buatan atau artificial intelligence pada permainan tic tac toe, pada umumnya menggunakan algoritma kecerdasan buatan yang biasa digunakan pada permainan catur yaitu algoritma Alpha-Beta atau MinMax, yang termasuk kategori algoritma pencarian. Namun algoritma pencarian tersebut tidak diterapkan pada program ini.

Yuk liat source code-nya :
/*
* TikTakTuk3.java
*
* Created on November 8, 2011, 12:49 PM
*
* Author : ilmubiner

import java.awt.*;
import java.awt.event.*;

public class TikTakTuk3 extends Frame implements ActionListener {

Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
String giliran, pemain;
int modeMain, skorX, skorO;
Panel pnlBtn = new Panel(); // kontainer utk Button
Label lblStatus = new Label(); // utk menampilkan status
MenuBar mnuBar = new MenuBar(); // kontainer utk Menu
Menu mnuGame = new Menu("Permainan");
Menu mnuNew = new Menu("Baru");
MenuItem mnuPvsP = new MenuItem("Manusia vs Manusia");
MenuItem mnuPvsC = new MenuItem("Manusia vs Komputer");
MenuItem mnuExit = new MenuItem("Keluar");
MsgBox pesan, pil;
boolean menang = false;

// konstruktor
public TikTakTuk3() {
super.setTitle("TikTakTuk v3");
this.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});

this.setMenuBar(mnuBar); //pasang objek MenuBar pd Frame
mnuBar.add(mnuGame); //pasang objek Menu pd MenuBar
mnuGame.add(mnuNew); //pasang objek (sub) Menu pd Menu
mnuPvsP.addActionListener(this); //registrasi ActionListener
mnuNew.add(mnuPvsP); //pasang objek MenuItem pd (sub) Menu
mnuPvsC.addActionListener(this); //registrasi ActionListener
mnuNew.add(mnuPvsC); //pasang objek MenuItem pd (sub) Menu
mnuGame.addSeparator(); //menambahkan garis pemisah horizontal
mnuExit.addActionListener(this); //registrasi ActionListener
mnuGame.add(mnuExit); // pasang objek MenuItem pd (sub) Menu

pnlBtn.setLayout(new GridLayout(3, 3)); // menentukan layout

btn1 = new Button(); // membuat objek Button
btn1.setFont(new Font("Dialog", 2, 40)); // mengubah font
btn1.addActionListener(this); // registrasi ActionListener
pnlBtn.add(btn1); // menambahkan Button ke Panel

btn2 = new Button();
btn2.setFont(new Font("Dialog", 2, 40));
btn2.addActionListener(this);
pnlBtn.add(btn2);

btn3 = new Button();
btn3.setFont(new Font("Dialog", 2, 40));
btn3.addActionListener(this);
pnlBtn.add(btn3);

btn4 = new Button();
btn4.setFont(new Font("Dialog", 2, 40));
btn4.addActionListener(this);
pnlBtn.add(btn4);

btn5 = new Button();
btn5.setFont(new Font("Dialog", 2, 40));
btn5.addActionListener(this);
pnlBtn.add(btn5);

btn6 = new Button();
btn6.setFont(new Font("Dialog", 2, 40));
btn6.addActionListener(this);
pnlBtn.add(btn6);

btn7 = new Button();
btn7.setFont(new Font("Dialog", 2, 40));
btn7.addActionListener(this);
pnlBtn.add(btn7);

btn8 = new Button();
btn8.setFont(new Font("Dialog", 2, 40));
btn8.addActionListener(this);
pnlBtn.add(btn8);

btn9 = new Button();
btn9.setFont(new Font("Dialog", 2, 40));
btn9.addActionListener(this);
pnlBtn.add(btn9);

this.setLayout(new BorderLayout(5, 5));
add(pnlBtn, BorderLayout.CENTER);
add(lblStatus, BorderLayout.SOUTH);

modeMain = 0; // 0 = blm ada mode, 1 = human vs human, 2 = human vs computer
skorX = 0;
skorO = 0;
//giliran = "X";
lblStatus.setText("Skor : X = " + skorX + " , O = " + skorO + " , giliran = " +
giliran);
btnEnabled(false);
}

public void actionPerformed(ActionEvent e) {
Boolean ganti = false;

/// awal : kontrol pemilihan MenuItem
String label = e.getActionCommand();
if (label.equals("Manusia vs Manusia")) {
menang = false;
resetSkor(1);
pilGacoan(1);
} else if (label.equals("Manusia vs Komputer")) {
menang = false;
resetSkor(2);
pilGacoan(2);
if (giliran.equals("X") && pemain.equals("K")) {
komputerJalan();
}
} else if (label.equals("Keluar")) {
System.exit(0);
}
/// akhir : kontrol pemilihan MenuItem

/// awal : deteksi Button yg diklik & pengecekan label pd Button
// ganti = true : flag utk menunjukkan ada perubahan pd label Button
// label Button yg sdh berisi tidak dapat diubah lagi labelnya
if (e.getSource() == btn1 && btn1.getLabel().equals("")) {
btn1.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn2 && btn2.getLabel().equals("")) {
btn2.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn3 && btn3.getLabel().equals("")) {
btn3.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn4 && btn4.getLabel().equals("")) {
btn4.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn5 && btn5.getLabel().equals("")) {
btn5.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn6 && btn6.getLabel().equals("")) {
btn6.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn7 && btn7.getLabel().equals("")) {
btn7.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn8 && btn8.getLabel().equals("")) {
btn8.setLabel(giliran);
ganti = true;
} else if (e.getSource() == btn9 && btn9.getLabel().equals("")) {
btn9.setLabel(giliran);
ganti = true;
}
/// akhir : deteksi Button yang diklik dan pengecekan label pd Button

if (pemain.equals("M")||pemain.equals("-")) cekMenangSeri();

if (ganti == true) {
if (giliran.equals("X")) giliran = "O"; else giliran = "X";
if (pemain.equals("M")) pemain = "K"; else pemain = "M";
}

lblStatus.setText("Skor : X = " + skorX + " , O = " + skorO + " , giliran = " +
giliran);

if (ganti==true && pemain.equals("K") && menang == false){
komputerJalan();
cekMenangSeri();
}
}

void resetSkor(int modeSkrg) {
if (modeMain != modeSkrg) {
skorX = 0;
skorO = 0;
} else {
MsgBox tanya = new MsgBox(this, "Reset skor?", true);
if (tanya.isOk) {
skorX = 0;
skorO = 0;
}
}
modeMain = modeSkrg;
btnClear();
btnEnabled(true);
}

void btnEnabled(boolean ss) {
btn1.setEnabled(ss);
btn2.setEnabled(ss);
btn3.setEnabled(ss);
btn4.setEnabled(ss);
btn5.setEnabled(ss);
btn6.setEnabled(ss);
btn7.setEnabled(ss);
btn8.setEnabled(ss);
btn9.setEnabled(ss);
}

void btnClear() {
btn1.setLabel("");
btn2.setLabel("");
btn3.setLabel("");
btn4.setLabel("");
btn5.setLabel("");
btn6.setLabel("");
btn7.setLabel("");
btn8.setLabel("");
btn9.setLabel("");
}

void pilGacoan(int n){
if (n==1){
MsgBox pil = new MsgBox(this, "Pemain pertama memilih X ??", true);
if (pil.isOk) giliran = "X";
else giliran = "O";
pemain = "-";
} else if (n==2){
int x = ((int)(Math.random()*1)) + 1; // menentukan Manusia atau Komputer jalan duluan
if (x==1){
MsgBox pil = new MsgBox(this, "Manusia jalan duluan.\nManusia memilih X ??", true);
if (pil.isOk) giliran = "X";
else giliran = "O";
pemain = "M";
} else {
MsgBox pil = new MsgBox(this, "Komputer jalan duluan.\nKomputer memilih X.", true);
giliran = "X";
pemain = "K";
}
}
}

void cekMenangSeri(){
/// awal : pengecekan menang atau seri
// tiga Button di setiap baris, kolom, & diagonal dicek apakah memiliki label ygsama
// jika tiga Button sebaris / sekolom / sediagonal, labelnya sama berarti pemain menang
if ((btn1.getLabel().equals(giliran) && btn2.getLabel().equals(giliran) &&
btn3.getLabel().equals(giliran))
|| (btn4.getLabel().equals(giliran) && btn5.getLabel().equals(giliran) &&
btn6.getLabel().equals(giliran))
|| (btn7.getLabel().equals(giliran) && btn8.getLabel().equals(giliran) &&
btn9.getLabel().equals(giliran))
|| (btn1.getLabel().equals(giliran) && btn4.getLabel().equals(giliran) &&
btn7.getLabel().equals(giliran))
|| (btn2.getLabel().equals(giliran) && btn5.getLabel().equals(giliran) &&
btn8.getLabel().equals(giliran))
|| (btn3.getLabel().equals(giliran) && btn6.getLabel().equals(giliran) &&
btn9.getLabel().equals(giliran))
|| (btn1.getLabel().equals(giliran) && btn5.getLabel().equals(giliran) &&
btn9.getLabel().equals(giliran))
|| (btn3.getLabel().equals(giliran) && btn5.getLabel().equals(giliran) &&
btn7.getLabel().equals(giliran))) {

MsgBox msgBox = new MsgBox(this, giliran + " menang!!", false);
menang = true;
btnEnabled(false);
if (giliran.equals("X")) {
++skorX;
} else {
++skorO;
}
} else if (!btn1.getLabel().equals("")&&!btn2.getLabel().equals("")
&& !btn3.getLabel().equals("")
&& !btn4.getLabel().equals("")
&& !btn5.getLabel().equals("")
&& !btn6.getLabel().equals("")
&& !btn7.getLabel().equals("")
&& !btn8.getLabel().equals("")
&& !btn9.getLabel().equals("")) {
MsgBox msgBox = new MsgBox(this, "Seri!!!", false);
}
/// akhir : pengecekan menang atau seri
}

void komputerJalan(){
/// awal : kecerdasan buatan
if (modeMain==2 && pemain.equals("K")){
boolean ada = true;
do {
int posBtn = ((int)(Math.random()*8)) + 1;
switch (posBtn){
case 1:
if (btn1.getLabel().equals("")) { btn1.setLabel(giliran); ada =
false; }
break;
case 2:
if (btn2.getLabel().equals("")) { btn2.setLabel(giliran); ada =
false; }
break;
case 3:
if (btn3.getLabel().equals("")) { btn3.setLabel(giliran); ada =
false; }
break;
case 4:
if (btn4.getLabel().equals("")) { btn4.setLabel(giliran); ada =
false; }
break;
case 5:
if (btn5.getLabel().equals("")) { btn5.setLabel(giliran); ada =
false; }
break;
case 6:
if (btn6.getLabel().equals("")) { btn6.setLabel(giliran); ada =
false; }
break;
case 7:
if (btn7.getLabel().equals("")) { btn7.setLabel(giliran); ada =
false; }
break;
case 8:
if (btn8.getLabel().equals("")) { btn8.setLabel(giliran); ada =
false; }
break;
case 9:
if (btn9.getLabel().equals("")) { btn9.setLabel(giliran); ada =
false; }
break;
default :
}
} while (ada==true);
if (giliran.equals("X")) giliran = "O"; else giliran = "X";
if (pemain.equals("M")) pemain = "K"; else pemain = "M";
lblStatus.setText("Skor : X = " + skorX + " , O = " + skorO + " , giliran = "
+ giliran);
}
/// akhir : kecerdasan buatan
}

public static void main(String[] args) {

TikTakTuk3 frm = new TikTakTuk3();

frm.setSize(300, 365);
frm.setVisible(true);

}
}

Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
NB :: Bila Sobat tertarik Ingin membuat software, membeli software, membeli source code, membeli hardware elektronika untuk kepentingan Perusahaan maupun Tugas Akhir (TA/SKRIPSI), Insyaallah Saya siap membantu, untuk Respon Cepat dapat menghubungi kami, melalui :

No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com


atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :

ٱلْحَمْدُ لِلَّهِ رَبِّ ٱلْعَٰلَمِين
Alhamdulilah hirobil alamin

وَ السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
wassalamualaikum warahmatullahi wabarakatuh


Artikel BUKAN Program Dasar Game Tic Tac Toe Java AWT, Diterbitkan oleh scodeaplikasi pada Rabu, 16 November 2011. Semoga artikel ini dapat menambah wawasan Anda. Website ini dipost dari beberapa sumber, bisa cek disini sumber, Sobat diperbolehkan mengcopy paste / menyebar luaskan artikel ini, karena segala yang dipost di public adalah milik public. Bila Sobat tertarik Ingin membuat software, membeli software, membeli source code ,Dengan Cara menghubungi saya Ke Email: Fajarudinsidik@gmail.com, atau No Hp/WA : (fajar) : 085369237896, (puat) : 085267792168.

Tawk.to