13 Temmuz 2014 Pazar

TicTacToe (XOX Oyunu)

Javada yazmış olduğum XOX oyunu.
package XOXoyunu;

import java.util.Scanner;

public class XOX {
 
 public static int satır,sütun;
 public static Scanner oku = new Scanner(System.in);
 public static char[][] tablo = new char[3][3];
 public static char sıra = 'X';

 
 public static void main(String[] args) {
  
  for (int i=0;i<3;i++)       //Mainde ilklemelerimizi yapıyoruz.
  {
   for (int j=0;j<3;j++) 
    tablo[i][j]='_';
  }
  
  Oyna();        //Oyunun gerçekleştirileceği alt program çalıştırılıyor.

 }
 
 public static void Oyna()
 {
  boolean devam = true;    
  TabloBoya();
  while (devam){      //Oyun bitmediği sürece devam edecek.
   
   satır =5;
   while (satır>3 || satır <0){   //Satır numarası giriliyor.
    System.out.println( sıra + " oyuncusu satır numarasını gir.");
    satır = oku.nextInt() -1;
   }
   sütun = 5;
   while (sütun>3 || sütun <0){   //Sütun numarası giriliyor.
    System.out.println( sıra + " oyuncusu sütun numarasını gir.");
    sütun = oku.nextInt() -1;
   }
   if(tablo[satır][sütun]=='_'){   //Seçilmiş koordinatın boş olup olmadığı kontrol ediliyor.
    
    tablo [satır][sütun] = sıra;  //Koordinata X veya O yerleştiriliyor.(Sıraya göre değişir.)
    TabloBoya();
   
    if (OyunBittimi(satır,sütun)){  //Oyunun bitip bitmediği kontrol ediliyor.
     System.out.print(sıra + " oyuncusu oyunu kazanmıştır.");
     devam = false;
    }
    
    if (sıra == 'X'){     //Sıra değiştirliyor.
     sıra = 'O';
    }else {
     sıra = 'X';
    }
   }else{         //Koordinat doluysa uyarı veriyor.
    System.out.println("Polemik çıkartma güzel kardeşim, düzgün gir!");
    TabloBoya();
   }
  }
 }
 public static void TabloBoya()     //Tablo çizer.
 {
  for (int i=0;i<3;i++){
   System.out.print("| ");
   for (int j=0;j<3;j++){
    System.out.print( tablo[i][j] + " | ");
   }
   System.out.println();
  }
 }
 
 public static boolean OyunBittimi(int oynananX, int oynananY)   //Oyunun bitip bitmediğini kontrol eder.
 {
  //Yatay ve dikey kontrol.
  if (tablo[0][oynananY] == tablo [1][oynananY] && tablo [1][oynananY] == tablo [2][oynananY])
   return true;
  if (tablo[oynananX][0] == tablo[oynananX][1] && tablo[oynananX][1] == tablo[oynananX][2])
   return true;
  //Çapraz kontrol.
  if (tablo[0][0] == tablo[1][1] && tablo[0][0] == tablo[2][2] && tablo[1][1] != '_')
   return true;
  if (tablo[0][2] == tablo[1][1] && tablo[0][2] == tablo[2][0] && tablo[1][1] != '_')
   return true;
  return false;
 }
}

Aytaç Demir Ege Üniversitesi Bilgisayar Mühendisliği Öğrencisi