Anasayfa

C ve Sistem Programcıları Derneği

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

menü

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

e-posta ile bilgilendirme.

Derneğimizdeki etkinliklerden haberdar olun!

Haber mektubu üyeliğiniz

Kimler çevrimiçi

Şu an 0 kullanıcı ve 12 ziyaretçi çevrimiçi.
""
dreamhost
Anasayfa

Amiral Battı Oyunu (Programlamaya Giriş)

25.03.2010 - 13:39 tarihinde vefa gönderdi
  • Oyun 10 x 10'luk bir matriste oynanıyor.
  • 1'lik, 2'lik, 3'lük ve 4'lük olmak üzere 4 farklı boyutta gemi vardır.
  • 1'lik gemiden 4 tane, 2'lik gemiden 3 tane, 3'lük gemiden 2 tane, 4'lük gemiden 1 tane vardır.
  • Gemiler rasgele yerleştiriliyor.
  • Gemilerin yönü yatay ve dikey olabilir, çapraz olamaz.
  • Gemiler bitişik olamaz.
Örnek ekran çıktısı: 

0 0 0 0 3 0 1 0 0 4
0 0 0 0 3 0 0 0 0 4
0 0 0 0 3 0 0 0 0 4
2 0 0 0 0 0 0 0 0 4
2 0 0 0 2 0 0 1 0 0
0 0 1 0 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 2 2 0 3 3 3 0
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Satiri giriniz : 0
Sutunu giriniz : 2

Kaynak kod: 
class Admiral {
   public static void main(String args[]) throws Exception
   {
 
      java.util.Random generator =
            new java.util.Random(System.currentTimeMillis());
 
      //gemilerin yerleştirildiği matris
      int board[][] = new int [10][10];
 
      //oyuncunun hamlelerinin tutulduğu matris
      int player[][] = new int [10][10];
 
      //gemilerin adedini tutan dizi    
      //0 nolu eleman kullanılmıyor   
      int ship[] = {0, 4, 3, 2, 1};
 
      int i, j, row, col, size;
      int num, dir, shipSize, count, r, c, rl, cl, flag;
      int right, down, hit;
 
      row = 10;
      col = 10;
      size = 5;
 
      count = 0;
      shipSize = 1;
 
      while (shipSize <= 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 - shipSize + 1;
            right = 2 + shipSize;
            down = 3;
         }
         else {
            rl = row - shipSize + 1;
            cl = col;
            right = 3;
            down = 2 + shipSize;
         }
 
         //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 (board[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)
                  board[i][j] = shipSize;
 
            //adet bir arttırılıyor
            count = count + 1;
 
            //gemiden istenen adet yerleştirilmişse
            //bir sonraki gemiye geçiliyor
            if (ship[shipSize] == count) {
               shipSize = shipSize + 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(board[i][j] + " ");
         System.out.println();
      }
 
      System.out.println();
 
      //toplam 20 isabetli atış yapıldığında oyun bitiyor
      count = 0;
      hit = 0;
      while(hit < 20) {
         //atış sayısı bir arttırılıyor
         count = count + 1;
 
         //atış yapılıyor
         System.out.print("Satiri giriniz : ");
         r = Keyboard.readInt();
         System.out.print("Sutunu giriniz : ");
         c = Keyboard.readInt();
 
 
 
         //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 (board[r][c] != 0){
            hit = hit + 1;
            player[r][c] = board[r][c];
         }
         else
            player[r][c] = 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(board[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(player[i][j] + " ");
            System.out.println();
         }
      }
      System.out.println("Tebrikler! " + count + " adimda bildiniz."); 
   }
}
  • Yazıcı uyumluYazıcı uyumlu
  • Arkadaşa gönderArkadaşa gönder
  • PDFPDF
Etiketler:
  • Java
  • programlamaya giriş

Adres: 2.Taşocağı Cd. Oğuz Sk. Barbaros Apt. No: 11/2 PK: 34387  Mecidiyeköy / İSTANBUL
Tel: 0 533 527 43 38 & 0 542 222 07 93 & (212) 274 63 60 & (212) 274 99 89 & (212) 288 35 20
E-Posta: csystem@csystem.org

İçerik yayınları
Fervens Drupal theme by Leow Kah Thong. Designed by Design Disease and brought to you by Smashing Magazine.