Sesuai janji, kali ini saya akan posting source code yang saya kumpulkan sebagai tugas 2 mata kuliah PBO (Pemrograman Beriorentasi Objek)(Kami menggunakan Java). Tugas 2 yang diberikan yaitu membuat sebuah game Applet tictactoe tanpa AI(Artificial Inteligent) dan tanpa aturan menang, sehingga hanya untuk diklik-klik saja. Namun bagi mereka yang membuat sistem aturan menang yang apabila posisinya berjajar 5 kali secara berturut-turut maka akan menang. Sebelumnya saya sudah posting source code yang dimiliki dosen. (baca: Source Code Java Applet 1 Game TicTacToe).
Mungkin tugas ini tidak terlalu sulit, karena selain sudah berhasil mendapatkan source code punya robot si dosen, saya juga berhasil mendapatkan berbagai contoh java applet tictactoe dari hasil googling, ada lumayan banyak sampai belasan gitu. Jadi saya hanya tinggal memilih dan sedikit melakukan modifikasi. adapun hasil akhir yang saya kumpulkan yaitu:
/*--------------------------------------------------------*/
/*-----Author : Ahmad Ariful Amri-----------------------*/
/*-----Program : Applet Tictactoe------------------------*/
/*------------http://go-program.blogspot.com--------------*/
/*--------------------------------------------------------*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
public class TicTacToe extends JApplet
{
private char whoseTurn = 'X';
private Cell[][] cells = new Cell[10][10];
private JLabel jlblStatus = new JLabel("Giliran Pemain X");
public TicTacToe()
{
GridLayout grid = new GridLayout(10, 10, 0, 0);
JPanel p = new JPanel(grid);
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
p.add(cells[i][j] = new Cell());
p.setBorder(new LineBorder(Color.black, 1));
jlblStatus.setBorder(new LineBorder(Color.gray, 1));
add(p, BorderLayout.CENTER);
add(jlblStatus, BorderLayout.SOUTH);
}
public boolean isFull()
{
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
if (cells[i][j].getToken() == ' ')
return false;
return true;
}
public boolean isWon(char token) //Penentuan aturan menang
{ /*-----------------------------------------------------------------------------------------------------Kondisi Menang Horizontal--------------------------------------------------------------------------------------------------------------------------*/
for (int i = 0; i < 10; i++)
{
if ((cells[i][0].getToken() == token) && (cells[i][1].getToken() == token) && (cells[i][2].getToken() == token) && (cells[i][3].getToken() == token) && (cells[i][4].getToken() == token)) { return true;} /*Horizontal dari baris 1 sampai baris 5*/
else if((cells[i][1].getToken() == token) && (cells[i][2].getToken() == token) && (cells[i][3].getToken() == token) && (cells[i][4].getToken() == token) && (cells[i][5].getToken() == token)){return true;} /*Horizontal dari baris 2 sampai baris 6*/
else if((cells[i][2].getToken() == token) && (cells[i][3].getToken() == token) && (cells[i][4].getToken() == token) && (cells[i][5].getToken() == token) && (cells[i][6].getToken() == token)){return true;} /*Horizontal dari baris 3 sampai baris 7*/
else if((cells[i][3].getToken() == token) && (cells[i][4].getToken() == token) && (cells[i][5].getToken() == token) && (cells[i][6].getToken() == token) && (cells[i][7].getToken() == token)){return true;} /*Horizontal dari baris 4 sampai baris 8*/
else if((cells[i][4].getToken() == token) && (cells[i][5].getToken() == token) && (cells[i][6].getToken() == token) && (cells[i][7].getToken() == token) && (cells[i][8].getToken() == token)){return true;} /*Horizontal dari baris 5 sampai baris 9*/
else if((cells[i][5].getToken() == token) && (cells[i][6].getToken() == token) && (cells[i][7].getToken() == token) && (cells[i][8].getToken() == token) && (cells[i][9].getToken() == token)){return true;} /*Horizontal dari baris 6 sampai baris 10*/
}
/*-----------------------------------------------------------------------------------------------------Kondisi Menang Vertikal----------------------------------------------------------------------------------------------------------------------------*/
for (int j = 0; j < 10; j++)
{
if ((cells[0][j].getToken() == token) && (cells[1][j].getToken() == token) && (cells[2][j].getToken() == token) && (cells[3][j].getToken() == token) && (cells[4][j].getToken() == token)) {return true;} /*Vertikal dari kolom 1 sampai kolom 5*/
else if ((cells[1][j].getToken() == token) && (cells[2][j].getToken() == token) && (cells[3][j].getToken() == token) && (cells[4][j].getToken() == token) && (cells[5][j].getToken() == token)){return true;} /*vertikal dari kolom 2 sampai kolom 6*/
else if ((cells[2][j].getToken() == token) && (cells[3][j].getToken() == token) && (cells[4][j].getToken() == token) && (cells[5][j].getToken() == token) && (cells[6][j].getToken() == token)){return true;} /*vertikal dari kolom 3 sampai kolom 7*/
else if ((cells[3][j].getToken() == token) && (cells[4][j].getToken() == token) && (cells[5][j].getToken() == token) && (cells[6][j].getToken() == token) && (cells[7][j].getToken() == token)){return true;} /*vertikal dari kolom 4 sampai kolom 8*/
else if ((cells[4][j].getToken() == token) && (cells[5][j].getToken() == token) && (cells[6][j].getToken() == token) && (cells[7][j].getToken() == token) && (cells[8][j].getToken() == token)){return true;} /*vertikal dari kolom 5 sampai kolom 9*/
else if ((cells[5][j].getToken() == token) && (cells[6][j].getToken() == token) && (cells[7][j].getToken() == token) && (cells[8][j].getToken() == token) && (cells[9][j].getToken() == token)){return true;} /*vertikal dari kolom 6 sampai kolom 10*/
}
/*------------------------------------------------------------------------------------------------------Kondisi Menang Kiri atas ke Kanan Bawah-----------------------------------------------------------------------------------------------------------*/
if ((cells[0][0].getToken() == token) && (cells[1][1].getToken() == token) && (cells[2][2].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][4].getToken() == token)) {return true;} /*serong dari kiri atas ke kanan bawah dari kolom 1 sampai kolom 5*/
else if((cells[1][1].getToken() == token) && (cells[2][2].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][5].getToken() == token)){return true;} /*serong dari kiri atas ke kanan bawah dari kolom 2 sampai kolom 6*/
else if((cells[2][2].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][6].getToken() == token)){return true;} /*serong dari kiri atas ke kanan bawah dari kolom 3 sampai kolom 7*/
else if((cells[3][3].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][6].getToken() == token) && (cells[7][7].getToken() == token)){return true;} /*serong dari kiri atas ke kanan bawah dari kolom 4 sampai kolom 8*/
else if((cells[4][4].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][6].getToken() == token) && (cells[7][7].getToken() == token) && (cells[8][8].getToken() == token)){return true;} /*serong dari kiri atas ke kanan bawah dari kolom 5 sampai kolom 9*/
else if((cells[5][5].getToken() == token) && (cells[6][6].getToken() == token) && (cells[7][7].getToken() == token) && (cells[8][8].getToken() == token) && (cells[9][9].getToken() == token)){return true;} /*serong dari kiri atas ke kanan bawah dari kolom 6 sampai kolom 10*/
if ((cells[0][0].getToken() == token) && (cells[1][1].getToken() == token) && (cells[2][2].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][4].getToken() == token)) {return true;} /*00 - 44*/
else if ((cells[0][1].getToken() == token) && (cells[1][2].getToken() == token) && (cells[2][3].getToken() == token) && (cells[3][4].getToken() == token) && (cells[4][5].getToken() == token)) {return true;} /*01 - 45*/
else if ((cells[0][2].getToken() == token) && (cells[1][3].getToken() == token) && (cells[2][4].getToken() == token) && (cells[3][5].getToken() == token) && (cells[4][6].getToken() == token)) {return true;} /*02 - 46*/
else if ((cells[0][3].getToken() == token) && (cells[1][4].getToken() == token) && (cells[2][5].getToken() == token) && (cells[3][6].getToken() == token) && (cells[4][7].getToken() == token)) {return true;} /*03 - 47*/
else if ((cells[0][4].getToken() == token) && (cells[1][5].getToken() == token) && (cells[2][6].getToken() == token) && (cells[3][7].getToken() == token) && (cells[4][8].getToken() == token)) {return true;} /*04 - 48*/
else if ((cells[0][5].getToken() == token) && (cells[1][6].getToken() == token) && (cells[2][7].getToken() == token) && (cells[3][8].getToken() == token) && (cells[4][9].getToken() == token)) {return true;} /*05 - 49*/
else if ((cells[1][0].getToken() == token) && (cells[2][1].getToken() == token) && (cells[3][2].getToken() == token) && (cells[4][3].getToken() == token) && (cells[5][4].getToken() == token)) {return true;} /*10 - 54*/
else if ((cells[1][1].getToken() == token) && (cells[2][2].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][5].getToken() == token)) {return true;} /*11 - 55*/
else if ((cells[1][2].getToken() == token) && (cells[2][3].getToken() == token) && (cells[3][4].getToken() == token) && (cells[4][5].getToken() == token) && (cells[5][6].getToken() == token)) {return true;} /*12 - 56*/
else if ((cells[1][3].getToken() == token) && (cells[2][4].getToken() == token) && (cells[3][5].getToken() == token) && (cells[4][6].getToken() == token) && (cells[5][7].getToken() == token)) {return true;} /*13 - 57*/
else if ((cells[1][4].getToken() == token) && (cells[2][5].getToken() == token) && (cells[3][6].getToken() == token) && (cells[4][7].getToken() == token) && (cells[5][8].getToken() == token)) {return true;} /*14 - 58*/
else if ((cells[1][5].getToken() == token) && (cells[2][6].getToken() == token) && (cells[3][7].getToken() == token) && (cells[4][8].getToken() == token) && (cells[5][9].getToken() == token)) {return true;} /*15 - 59*/
else if ((cells[2][0].getToken() == token) && (cells[3][1].getToken() == token) && (cells[4][2].getToken() == token) && (cells[5][3].getToken() == token) && (cells[6][4].getToken() == token)) {return true;} /*20 - 64*/
else if ((cells[2][1].getToken() == token) && (cells[3][2].getToken() == token) && (cells[4][3].getToken() == token) && (cells[5][4].getToken() == token) && (cells[6][5].getToken() == token)) {return true;} /*21 - 65*/
else if ((cells[2][2].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][6].getToken() == token)) {return true;} /*22 - 66*/
else if ((cells[2][3].getToken() == token) && (cells[3][4].getToken() == token) && (cells[4][5].getToken() == token) && (cells[5][6].getToken() == token) && (cells[6][7].getToken() == token)) {return true;} /*23 - 67*/
else if ((cells[2][4].getToken() == token) && (cells[3][5].getToken() == token) && (cells[4][6].getToken() == token) && (cells[5][7].getToken() == token) && (cells[6][8].getToken() == token)) {return true;} /*24 - 68*/
else if ((cells[2][5].getToken() == token) && (cells[3][6].getToken() == token) && (cells[4][7].getToken() == token) && (cells[5][8].getToken() == token) && (cells[6][9].getToken() == token)) {return true;} /*25 - 69*/
else if ((cells[3][0].getToken() == token) && (cells[4][1].getToken() == token) && (cells[5][2].getToken() == token) && (cells[6][3].getToken() == token) && (cells[7][4].getToken() == token)) {return true;} /*30 - 74*/
else if ((cells[3][1].getToken() == token) && (cells[4][2].getToken() == token) && (cells[5][3].getToken() == token) && (cells[6][4].getToken() == token) && (cells[7][5].getToken() == token)) {return true;} /*31 - 75*/
else if ((cells[3][2].getToken() == token) && (cells[4][3].getToken() == token) && (cells[5][4].getToken() == token) && (cells[6][5].getToken() == token) && (cells[7][6].getToken() == token)) {return true;} /*32 - 76*/
else if ((cells[3][3].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][6].getToken() == token) && (cells[7][7].getToken() == token)) {return true;} /*33 - 77*/
else if ((cells[3][4].getToken() == token) && (cells[4][5].getToken() == token) && (cells[5][6].getToken() == token) && (cells[6][7].getToken() == token) && (cells[7][8].getToken() == token)) {return true;} /*34 - 78*/
else if ((cells[3][5].getToken() == token) && (cells[4][6].getToken() == token) && (cells[5][7].getToken() == token) && (cells[6][8].getToken() == token) && (cells[7][9].getToken() == token)) {return true;} /*35 - 79*/
else if ((cells[4][0].getToken() == token) && (cells[5][1].getToken() == token) && (cells[6][2].getToken() == token) && (cells[7][3].getToken() == token) && (cells[8][4].getToken() == token)) {return true;} /*40 - 84*/
else if ((cells[4][1].getToken() == token) && (cells[5][2].getToken() == token) && (cells[6][3].getToken() == token) && (cells[7][4].getToken() == token) && (cells[8][5].getToken() == token)) {return true;} /*41 - 85*/
else if ((cells[4][2].getToken() == token) && (cells[5][3].getToken() == token) && (cells[6][4].getToken() == token) && (cells[7][5].getToken() == token) && (cells[8][6].getToken() == token)) {return true;} /*42 - 86*/
else if ((cells[4][3].getToken() == token) && (cells[5][4].getToken() == token) && (cells[6][5].getToken() == token) && (cells[7][6].getToken() == token) && (cells[8][7].getToken() == token)) {return true;} /*43 - 87*/
else if ((cells[4][4].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][6].getToken() == token) && (cells[7][7].getToken() == token) && (cells[8][8].getToken() == token)) {return true;} /*44 - 88*/
else if ((cells[4][5].getToken() == token) && (cells[5][6].getToken() == token) && (cells[6][7].getToken() == token) && (cells[7][8].getToken() == token) && (cells[8][9].getToken() == token)) {return true;} /*45 - 89*/
else if ((cells[5][0].getToken() == token) && (cells[6][1].getToken() == token) && (cells[7][2].getToken() == token) && (cells[8][3].getToken() == token) && (cells[9][4].getToken() == token)) {return true;} /*50 - 94*/
else if ((cells[5][1].getToken() == token) && (cells[6][2].getToken() == token) && (cells[7][3].getToken() == token) && (cells[8][4].getToken() == token) && (cells[9][5].getToken() == token)) {return true;} /*51 - 95*/
else if ((cells[5][2].getToken() == token) && (cells[6][3].getToken() == token) && (cells[7][4].getToken() == token) && (cells[8][5].getToken() == token) && (cells[9][6].getToken() == token)) {return true;} /*52 - 96*/
else if ((cells[5][3].getToken() == token) && (cells[6][4].getToken() == token) && (cells[7][5].getToken() == token) && (cells[8][6].getToken() == token) && (cells[9][7].getToken() == token)) {return true;} /*53 - 97*/
else if ((cells[5][4].getToken() == token) && (cells[6][5].getToken() == token) && (cells[7][6].getToken() == token) && (cells[8][7].getToken() == token) && (cells[9][8].getToken() == token)) {return true;} /*54 - 98*/
else if ((cells[5][5].getToken() == token) && (cells[6][6].getToken() == token) && (cells[7][7].getToken() == token) && (cells[8][8].getToken() == token) && (cells[9][9].getToken() == token)) {return true;} /*55 - 99*/
/*------------------------------------------------------------------------------------------------------Kondisi Menang Kiri bawah ke Kanan atas-----------------------------------------------------------------------------------------------------------*/
if ((cells[0][4].getToken() == token) && (cells[1][3].getToken() == token) && (cells[2][2].getToken() == token) && (cells[3][1].getToken() == token) && (cells[4][0].getToken() == token)) { return true;} /*04 - 40*/
else if ((cells[0][5].getToken() == token) && (cells[1][4].getToken() == token) && (cells[2][3].getToken() == token) && (cells[3][2].getToken() == token) && (cells[4][1].getToken() == token)) {return true;} /*05 - 41*/
else if ((cells[0][6].getToken() == token) && (cells[1][5].getToken() == token) && (cells[2][4].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][2].getToken() == token)) {return true;} /*06 - 42*/
else if ((cells[0][7].getToken() == token) && (cells[1][6].getToken() == token) && (cells[2][5].getToken() == token) && (cells[3][4].getToken() == token) && (cells[4][3].getToken() == token)) {return true;} /*07 - 43*/
else if ((cells[0][8].getToken() == token) && (cells[1][7].getToken() == token) && (cells[2][6].getToken() == token) && (cells[3][5].getToken() == token) && (cells[4][4].getToken() == token)) {return true;} /*08 - 44*/
else if ((cells[0][9].getToken() == token) && (cells[1][8].getToken() == token) && (cells[2][7].getToken() == token) && (cells[3][6].getToken() == token) && (cells[4][5].getToken() == token)) {return true;} /*09 - 45*/
else if ((cells[1][4].getToken() == token) && (cells[2][3].getToken() == token) && (cells[3][2].getToken() == token) && (cells[4][1].getToken() == token) && (cells[5][0].getToken() == token)) {return true;} /*19 - 55*/
else if ((cells[1][5].getToken() == token) && (cells[2][4].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][2].getToken() == token) && (cells[5][1].getToken() == token)) {return true;} /*15 - 51*/
else if ((cells[1][6].getToken() == token) && (cells[2][5].getToken() == token) && (cells[3][4].getToken() == token) && (cells[4][3].getToken() == token) && (cells[5][2].getToken() == token)) {return true;} /*16 - 52*/
else if ((cells[1][7].getToken() == token) && (cells[2][6].getToken() == token) && (cells[3][5].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][3].getToken() == token)) {return true;} /*17 - 53*/
else if ((cells[1][8].getToken() == token) && (cells[2][7].getToken() == token) && (cells[3][6].getToken() == token) && (cells[4][5].getToken() == token) && (cells[5][4].getToken() == token)) {return true;} /*18 - 54*/
else if ((cells[1][9].getToken() == token) && (cells[2][8].getToken() == token) && (cells[3][7].getToken() == token) && (cells[4][6].getToken() == token) && (cells[5][5].getToken() == token)) {return true;} /*19 - 55*/
else if ((cells[2][4].getToken() == token) && (cells[3][3].getToken() == token) && (cells[4][2].getToken() == token) && (cells[5][1].getToken() == token) && (cells[6][0].getToken() == token)) {return true;} /*29 - 65*/
else if ((cells[2][5].getToken() == token) && (cells[3][4].getToken() == token) && (cells[4][3].getToken() == token) && (cells[5][2].getToken() == token) && (cells[6][1].getToken() == token)) {return true;} /*25 - 61*/
else if ((cells[2][6].getToken() == token) && (cells[3][5].getToken() == token) && (cells[4][4].getToken() == token) && (cells[5][3].getToken() == token) && (cells[6][2].getToken() == token)) {return true;} /*26 - 62*/
else if ((cells[2][7].getToken() == token) && (cells[3][6].getToken() == token) && (cells[4][5].getToken() == token) && (cells[5][4].getToken() == token) && (cells[6][3].getToken() == token)) {return true;} /*27 - 63*/
else if ((cells[2][8].getToken() == token) && (cells[3][7].getToken() == token) && (cells[4][6].getToken() == token) && (cells[5][5].getToken() == token) && (cells[6][4].getToken() == token)) {return true;} /*28 - 64*/
else if ((cells[2][9].getToken() == token) && (cells[3][8].getToken() == token) && (cells[4][7].getToken() == token) && (cells[5][6].getToken() == token) && (cells[6][5].getToken() == token)) {return true;} /*29 - 65*/
else if ((cells[3][4].getToken() == token) && (cells[4][3].getToken() == token) && (cells[5][2].getToken() == token) && (cells[6][1].getToken() == token) && (cells[7][0].getToken() == token)) {return true;} /*39 - 75*/
else if ((cells[3][5].getToken() == token) && (cells[4][4].getToken() == token) &
Agak panjang, agar tampilannya lebih rapi, silahkan copas saja ke tect editor atau pengolahan source code kesayangan anda.
Program diatas sudah dilengkapi dengan aturan kemenagan, jika pemain dapat menyusun posisi sebanyak 5 deret secara berturut-turut, maka akan menang. Untuk memainkannya silahkan menuju ke: http://cs.unsyiah.ac.id/~alamri/belajar/TicTacToe/ (KLIK).
Semoga source code diatas dapat berguna, lebih dan kurang saya mohon maaf. Wassalam. ~ Ahmad Ariful Amri
Semoga source code diatas dapat berguna, lebih dan kurang saya mohon maaf. Wassalam. ~ Ahmad Ariful Amri
Post a Comment