Matlab'ta amiral battı ödevi

süleyman akbaş

Centipat
Katılım
23 Nisan 2020
Mesajlar
1
Matlab dersimin vize ödevi olarak bizden amiral battıyı kodlamamız isteniyor. Seviyemin çok üstünde olduğu için yapamadım. Yardımcı olursanız sevinirim. Uzun göründüğüne bakmayın kolay aslında :)

kurallar:

- Oyun alanı (en az 10x10) MXM boyutlarından oluşan bir kare matristir. Boyut isteğe göre değiştirilebilecektir.
- Oyun alanını oluştururken iki boyutlu dizi kullanılacaktır.
- Toplam filo 1, 2, 3 ve 4 karelik (birimlik) birer gemiden oluşmaktadır.
- Gemiler oyun alanına dikey veya yatay (her gemi bağımsız olarak düşünülecek, yani bir gemi dikey yerleşirken bir diğeri yatay olabilir) şekillerde; oyun alanının dışına çıkmayacak ve üst üste konumlarda olmayacak şekillerde yerleşir.
- Gemiler oyun alanına rastgele yerleştirilecektir, gemi yönleri de (dikey-yatay) rastgele olacaktır.
- Gemiler oyun alanına yerleştirildikten sonra kullanıcıya oyun alanı 2 mod ile gösterilebilecektir (her iki modun sunulması zorunludur).
1- gizli mod: kullanıcı gemilerin nerede olduğunu bilmeyecektir.
2- açık mod: gemilerin yerleri oyun alanında görünecektir.
- Oyun alanında açılmayan kareler (hücreler)? İle gösterilecektir. Karavanalar (yani yapılan seçim boş ise bir gemi parçasını tutturamadıysa) * ile gösterilecektir. İsabetli atışların olduğu kareler (yapılan seçim geminin bir kısmını vurdu ise) X ile gösterilecektir.
- Yapılan her atış için kullanıcıya mesaj verilecektir. Atış isabetli ise “tebrikler bir gemi vurdunuz”, isabetsiz ise “maalesef isabet edemediniz” şeklinde mesajlar olacaktır. Ayrıca isabetli bir atış yapıldığında söz konusu geminin tüm bölümleri vuruldu ise ek olarak “tebrikler bir gemi batırdınız” şeklinde mesaj verilecektir.
- Yapılan her atış için oyun alanının görünümü güncellenecektir (her atıştan sonra konsol temizlenebilir ve oyun alanının yeni hali ekrana yazdırılabilir).
- Daha önce hedef alınan bir konum seçilirse kullanıcıya başka bir konum seçmesi için bilgi verilecektir.
- Kullanıcıya atış hakkı olarak oyun alanı büyüklüğünün 1/3’ü kadar hak verilecektir. Örnek: 10x10 (100) büyüklüğünde bir alan için atış hakkı = 100/3 = 33 olacaktır.
- Oyun iki şekilde sona erecektir. Kullanıcı tüm haklarını kullanır ve gemilerin hepsini batıramaz. Bu durumda “maalesef kaybettiniz” mesajı verilir. Diğer durumda ise hakları sona ermeden tüm gemiler batırılır. Bu durumda kullanıcının puanı hesaplanır ve “tebrikler 12 puan ile oyunu kazandınız” şeklinde mesaj verilir. Oyun puanı toplam haktan yapılan atışlar çıkarılarak hesaplanır.
- Oyun bittikten sonra kullanıcıya yeni oyun oynamak için veya çıkmak için tercih sunulur.
 
Son düzenleyen: Moderatör:

Yeni konular

Geri
Yukarı