Senin, 04 April 2011

Tic Tac Toe

Bagi yang ingin tau tentang programming dari permainan tic tac toe bisa dilihat di bawah ini. Sebenarnya logika dalam membuatnya bermacam-macam, dan ini adalah salah satunya dari mahasiswa S1 Sistem Informasi UA.


Class Tic Tac Toe

public class TicTacToe {

Scanner input = new Scanner(System.in);
private String[][] data = new String[3][3];
private int row, column, turn = 1;
private boolean playOver = false;

TicTacToe(){
//mengisi default papan tic tac toe
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
data[i][j] = " ";
}
}

public void play(){
display(); // menampilkan papan tic tac toe
while(!playOver){ //selama permainan belum selesai
System.out.println("--Player "+turn+"'s turn--");
insert(); // mengisi papan tic tac toe
if(turn == 1) data[row][column] = "O"; // simbol O untuk player 1
else data[row][column] = "X"; // simbol X untuk player 2
System.out.println("\n");
display();

//mengecek baris dan kolom jika ada pemenang
if(checkRow()) System.out.println("Play over, the winner is Player "+turn);
else if(checkColumn()) System.out.println("Play over, the winner is Player "+turn);
else if(checkDiag1()) System.out.println("Play over, the winner is Player "+turn);
else if(checkDiag2()) System.out.println("Play over, the winner is Player "+turn);
else if(full()) {System.out.println("Play over, DRAW");
playOver = true;
}
// ganti giliran
else if(turn == 1) turn = 2;
else turn = 1;
}
}

// untuk mengisi papan tic tac toe
private void insert(){
do {
System.out.print("Insert row : ");
row = input.nextInt() - 1;
if(row<0 || row >2) System.out.println("Wrong input, try again");
} while (row<0 || row >2); // ulang jika baris yang dimasukkan tidak sesuai

do {
System.out.print("Insert column : ");
column = input.nextInt() - 1;
if(column<0 || column >2) System.out.println("Wrong input, try again");
} while (column<0 || column >2); // ulang jika kolom yang dimasukkan tidak sesuai

if(data[row][column].equals("O") || data[row][column].equals("X")) {
System.out.println("The place you chooose has been taken, choose another one");
insert(); // ulang jika baris dan kolom yang dipilih sudah diisi
}
}

// untuk mengecek jika papan full
private boolean full(){
String test = "test";
int i = 0, j = 0;

// memeriksa jika ada tempat yang masih kosong
while(test.equals("test") && i<3 && j<3){ if(data[i][j].equals(" ")) test = data[i][j]; // jika kotak yang diperiksa kosong
j++;
if(j==3){ // jika kolom sudah mencapai ujung, ganti baris
i++; j = 0;
}
}
if(test.equals("test")) return true; // return true jika papan penuh
else return false; // return false jika masih ada yang kosong
}

// memeriksa baris
private boolean checkRow(){
int temp = 0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
if(turn==1){
if(data[i][j].equals("O")) temp++;
else temp = 0;
}
else{
if(data[i][j].equals("X")) temp++;
else temp = 0;
}
if(temp==3) playOver = true;
}
return playOver;
}

// memeriksa kolom
private boolean checkColumn(){
int temp = 0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
if(turn==1)
if(data[j][i].equals("O")) temp++;
else temp = 0;
else
if(data[j][i].equals("X")) temp++;
else temp = 0;
if(temp==3) playOver = true;
}
return playOver;
}

//memeriksa diagonal 1
private boolean checkDiag1(){
if(turn==1){
if(data[0][0].equals("O") && data[1][1].equals("O") && data[2][2].equals("O"))
return(playOver = true);
else return(playOver = false);
}
else{
if(data[0][0].equals("X") &&; data[1][1].equals("X") && data[2][2].equals("X"))
return(playOver = true);
else return(playOver = false);
}
}

// memeriksa diagonal 2
private boolean checkDiag2(){
if(turn==1){
if(data[0][2].equals("O") && data[1][1].equals("O") && data[2][0].equals("O"))
return(playOver = true);
else return(playOver = false);
}
else{
if(data[0][2].equals("X") && data[1][1].equals("X") && data[2][0].equals("X"))
return(playOver = true);
else return(playOver = false);
}
}

// menampilkan papan tic tac toe
public void display(){
System.out.println("===================");
System.out.println("| "+data[0][0]+" | "+data[0][1]+" | "+data[0][2]+" |");
System.out.println("-------------------");
System.out.println("| "+data[1][0]+" | "+data[1][1]+" | "+data[1][2]+" |");
System.out.println("-------------------");
System.out.println("| "+data[2][0]+" | "+data[2][1]+" | "+data[2][2]+" |");
System.out.println("===================");
}
}



Class Main

public class Main {

public static void main(String[] args) {
TicTacToe t = new TicTacToe();
t.play();
}

}

d'Ark "12"

3 komentar:

  1. coba pake interface, pasti lebih bagus...
    heehehhehehe
    nice try :D

    BalasHapus
  2. mslh interface belum nyoba, soalnya ini br logika dl..
    nanti klo da waktu kami coba interface dgn JOption dulu..

    BalasHapus
  3. buat : atas, kalo ada interface nya, boleh dong di share dimari

    BalasHapus