Java

Java ile Amiral Battı Oyunu

Merhaba arkadaşlar bugün Java ile Amiral Battı oyununu kodlayacağız. Oyun alanımız 10*10 luk bir büyüklükte olacak. Gerekli açıklamaları kodun aralarına bırakacağım. Şimdiden iyi oyunlar.

Kodu seçmek için kod editörüne çift tıklayın!

import java.util.Scanner;
public class Amiralbattızz {
public static void main(String args[]) throws Exception
{
java.util.Random generator =
new java.util.Random(System.currentTimeMillis());
//gemilerin yerleştirildiği matris
int gemiler[][] = new int [10][10];
//oyuncunun hamlelerinin tutulduğu matris
int oyuncu[][] = new int [10][10];
//gemilerin adedini tutan dizi
//0 nolu eleman kullanılmıyor
int gemi[] = {0, 4, 3, 2, 1};
int i, j, row, col, size;
int num, dir, gemiSize, count, r, c, rl, cl, flag;
int right, down, vurus;
row = 10;
col = 10;
size = 5;
count = 0;
gemiSize = 1;
while (gemiSize <= 4) {
//yon üretiliyor (0 sağa, 1 aşağıya)
dir = generator.nextInt(2);
//yöne göre satır sütun sınırları ve
//yerleştirilecek
// geminin sınırları belirleniyor
if (dir == 0) {
rl = row;
cl = col - gemiSize + 1;
right = 2 + gemiSize;
down = 3;
}
else {
rl = row - gemiSize + 1;
cl = col;
right = 3;
down = 2 + gemiSize;
}
//geminin nereye
// yerleştirileceği üretiliyor
r = generator.nextInt(rl);
c = generator.nextInt(cl);
//geminin yerleştirileceği yerin
//boş olup olmadığına bakılıyor
flag = 0;
for (i = r-1; i < (r-1) + down; i = i + 1)
for (j = c-1; j < (c-1) + right; j = j + 1)
if (i >=0 && i < row && j >= 0 && j < col)
if (gemiler[i][j] != 0)
flag = 1;
//flag'in 0'a eşit olması geminin
// yerleştirileceği yerin
//boş olduğunu gösteriyor.
if (flag == 0) {
//gemi yerleştiriliyor
for (i = r; i < r + down - 2; i = i + 1)
for (j = c; j < c + right - 2; j = j + 1)
gemiler[i][j] = gemiSize;
//adet bir arttırılıyor
count = count + 1;
//gemiden istenen adet
// yerleştirilmişse
//bir sonraki gemiye geçiliyor
if (gemi[gemiSize] == count) {
gemiSize = gemiSize + 1;
count = 0;
}
}
}
//gemilerin yerleştirildiği
// matris yazdırılıyor
for (i = 0; i < row; i = i + 1) {
for (j = 0; j < col; j = j + 1)
System.out.print(gemiler[i][j] + " ");
System.out.println();
}
System.out.println();
//toplam 20 isabetli atış
// yapıldığında oyun bitiyor
count = 0;
vurus = 0;
while(vurus < 20) {
//atış sayısı bir arttırılıyor
count = count + 1;
//atış yapılıyor
Scanner input=new Scanner(System.in);
System.out.print("Satiri giriniz : ");
r = input.nextInt();
System.out.print("Sutunu giriniz : ");
c = input.nextInt();
//atışın isabetli olup
// olmadığına bakılıyor
//eğer isabetli ise
// oyuncunun matrisine
//gemi numarası yazdırılıyor
//değilse 9 sayısı yazdırılıyor
if (gemiler[r]
!= 0){
vurus = vurus + 1;
oyuncu[r]
= gemiler[r]
;
}
else
oyuncu[r]
 = 9;
//gemilerin matrisi yazdırılıyor
for (i = 0; i < row; i = i + 1) {
for (j = 0; j < col; j = j + 1)
System.out.print(gemiler[i][j] + " ");
System.out.println();
}
System.out.println();
//oyuncunun matrisi yazdırılıyor
for (i = 0; i < row; i = i + 1) {
for (j = 0; j < col; j = j + 1)
System.out.print(oyuncu[i][j] + " ");
System.out.println();
}
}
System.out.println("Tebrikler! " + count + " adimda bildiniz.");
}
}
mertinko

Yazılım hakkında bildiklerini anlatan sıradan biri.

Share
Published by
mertinko

Recent Posts

‘Microsoft.ACE.OLEDB.12.0’ Sağlayıcısı Yerel Makineye Kayıtlı Değil Hatası ve Çözümü (2025)

microsoft ace oledb 12.0 hatası,oledb 12.0 provider not registered,microsoft access database engine indir,accessdatabaseengine.exe indir,oledb provider…

2 hafta ago

Windows Uzak Masaüstü Uygulaması Kullanımdan Kaldırılıyor: İşte Son Tarih!

Microsoft, uzaktan farklı cihazları kontrol etmeye yarayan Uzak Masaüstü uygulamasına desteği keseceğini duyurdu. Onun yerine…

4 hafta ago

Office 2021 Etkinleştirme ve Ürün Anahtarı Rehberi (2025 Güncel)

office 2021 etkinleştirme, office 2021 lisans anahtarı, office 2021 ürün anahtarı, office 2021 aktivasyon, office…

1 ay ago

Office 2016 Etkinleştirme ve Ürün Anahtarı Rehberi (2025 Güncel)

Microsoft Office 2016, güçlü özellikleri ve kullanıcı dostu arayüzü ile hala popülerliğini koruyan bir ofis…

1 ay ago

Office 2019 Etkinleştirme ve Ürün Anahtarı Rehberi (2025 Güncel)

Office 2019 etkinleştirme, Office 2019 ürün anahtarı, Office 2019 lisans, Office 2019 serial key, Office…

1 ay ago

2025 E-İmza Rehberi: E-İmza Nedir, Nasıl Alınır? (Başvuru, Ücretler ve Kullanım Alanları)

2025 e-imza, e-imza nedir, e-imza nasıl alınır, e-imza başvurusu, e-imza ücreti 2025, e-imza fiyatları, e-imza…

2 ay ago