Android Studio'da Java dilinde basit bir XOX (Tic-Tac-Toe) oyunu yapabiliriz. İşte adım adım bir rehber:
1. Yeni Proje Oluşturma
"Start a new Android Studio project" seçeneğini tıklayın.
"Empty Activity" şablonunu seçin ve "Next" butonuna tıklayın.
Projenize bir isim verin (örneğin, "XOXGame").
Dil olarak "Java" seçili olduğundan emin olun.
"Finish" butonuna tıklayarak projeyi oluşturun.
2. Arayüz Tasarımı (XML)
res/layout/activity_main.xml dosyasını açın ve aşağıdaki kodu ekleyerek basit bir XOX oyun tahtası oluşturun:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp">
<TextView
android:id="@+id/tvStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X'in Sırası"
android:textSize="24sp"
android:layout_marginBottom="16dp"/>
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rowCount="3"
android:columnCount="3">
<!-- Butonlar burada dinamik olarak oluşturulacak -->
</GridLayout>
<Button
android:id="@+id/btnReset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Yeniden Başlat"
android:layout_marginTop="16dp"/>
</LinearLayout>
3. Java Kodları
MainActivity.java dosyasını açın ve aşağıdaki kodu ekleyin:
package com.example.xoxgame;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private boolean isXTurn = true; // X'in sırası mı?
private String[][] board = new String[3][3]; // Oyun tahtası
private TextView tvStatus;
private GridLayout gridLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvStatus = findViewById(R.id.tvStatus);
gridLayout = findViewById(R.id.gridLayout);
Button btnReset = findViewById(R.id.btnReset);
// Oyun tahtasını başlat
initializeBoard();
// Yeniden başlat butonu
btnReset.setOnClickListener(v -> resetGame());
}
private void initializeBoard() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
Button button = new Button(this);
button.setLayoutParams(new GridLayout.LayoutParams());
button.setWidth(200);
button.setHeight(200);
button.setTextSize(24);
button.setOnClickListener(this::onCellClick);
gridLayout.addView(button);
board[i][j] = "";
}
}
}
private void onCellClick(View view) {
Button button = (Button) view;
int row = -1, col = -1;
// Tıklanan butonun pozisyonunu bul
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (gridLayout.getChildAt(i * 3 + j) == button) {
row = i;
col = j;
break;
}
}
}
if (row == -1 || col == -1 || !board[row][col].isEmpty()) {
return; // Geçersiz hamle veya hücre dolu
}
// Hücreyi işaretle
board[row][col] = isXTurn ? "X" : "O";
button.setText(board[row][col]);
// Kazanan var mı kontrol et
if (checkForWin()) {
tvStatus.setText((isXTurn ? "X" : "O") + " Kazandı!");
disableAllButtons();
return;
}
// Berabere mi kontrol et
if (isBoardFull()) {
tvStatus.setText("Berabere!");
return;
}
// Sırayı değiştir
isXTurn = !isXTurn;
tvStatus.setText((isXTurn ? "X" : "O") + "'in Sırası");
}
private boolean checkForWin() {
// Satırları kontrol et
for (int i = 0; i < 3; i++) {
if (board[i][0].equals(board[i][1]) && board[i][0].equals(board[i][2]) && !board[i][0].isEmpty()) {
return true;
}
}
// Sütunları kontrol et
for (int j = 0; j < 3; j++) {
if (board[0][j].equals(board[1][j]) && board[0][j].equals(board[2][j]) && !board[0][j].isEmpty()) {
return true;
}
}
// Çaprazları kontrol et
if (board[0][0].equals(board[1][1]) && board[0][0].equals(board[2][2]) && !board[0][0].isEmpty()) {
return true;
}
if (board[0][2].equals(board[1][1]) && board[0][2].equals(board[2][0]) && !board[0][2].isEmpty()) {
return true;
}
return false;
}
private boolean isBoardFull() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j].isEmpty()) {
return false;
}
}
}
return true;
}
private void disableAllButtons() {
for (int i = 0; i < gridLayout.getChildCount(); i++) {
gridLayout.getChildAt(i).setEnabled(false);
}
}
private void resetGame() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = "";
Button button = (Button) gridLayout.getChildAt(i * 3 + j);
button.setText("");
button.setEnabled(true);
}
}
isXTurn = true;
tvStatus.setText("X'in Sırası");
}
}
4. Uygulamayı Çalıştırma
Android Studio'da "Run" butonuna tıklayın.
Bir emülatör seçin veya fiziksel bir cihaz bağlayın.
Uygulama çalıştığında, XOX oyununu oynamaya başlayabilirsiniz.
Açıklamalar
GridLayout kullanarak 3x3'lük bir oyun tahtası oluşturduk.
Her hücreye tıklandığında, sırasıyla "X" veya "O" işaretleri yerleştirilir.
Kazanan veya berabere durumunda oyun sona erer ve butonlar devre dışı bırakılır.
"Yeniden Başlat" butonu ile oyun sıfırlanır.
Bu basit XOX oyunu, Android Studio'da Java kullanarak nasıl bir oyun yapabileceğinizi gösterir. Daha gelişmiş özellikler ekleyerek oyunu zenginleştirebilirsiniz.
İyi kodlamalar! 🚀