IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 01 Haziran 2016, 15:03   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Oyun Konsolu Kod tamamlama




Sa Arkadaşlar İnşaat mühendisliği okuyan bir arkadaşın projesi hoca bi ödev vermiş ödevin konusu şu 2 kişilik bir oyun tasarlandı oyunda eksik verilen kod fonksiyonları var bizden bu fonksiyonların tamamlanması isteniyor.
Detaylı açıklama aşşağıda verildi.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Aşağıda tanımlanmış olan oyun programını istenen şekilde tamamlayınız. Program 3x3 ebadındaki bir tahta üzerinde iki oyuncudan kutucuklar seçmesini isteyerek yarışmalarını istemektedir. Oyuncular her hamlede boş kutulardan istediklerini seçebilmektedir. Amaç diğer oyuncudan önce yatay, dikey veya çapraz bir satırın bütün kutucuklarını almaktır. Bunu ilk başaran oyunu kazanır. Bunu için hem savunma hem atak hamleleri düşünülmelidir. Program iki oyuncunun oynayacağı şekilde yazılmıştır. Sizden istenen oyunu bilgisayara karşı oynanabilecek hale getirmenizdir. Bunu yapacak taslak programda mevcuttur. Yapmanız gereken programdaki boş bırakılan üç adet fonksiyonu doğru bir şekilde tamamlamanızdır. Bu fonksiyonlar: Kazanma(): bilgisayara bir kazanma hamlesi bulduracak fonksiyondur. Engelleme(): bilgisayarın rakibin kazanma hamlesini algılayıp engellemesini sağlayacak fonksiyondur. Otomatik_hamle_seçme(): üstteki iki durum mevcut değilse, bilgisayara avantajlı bir hamle üretecek fonksiyondur. Programı çalıştırıp, iki kişilik oyu seçtiğinizde, program size verilen hali ile iki gerçek oyuncu için doğru bir şekilde çalışacaktır. Bilgisayara karşı oynamak için bahsedilen üç fonksiyonun tamamlanması gereklidir. #include <iostream> #include <time.h> using namespace std; //hamlelerin kaydedileceği dizi char pozisyonlar[10] = {'o','1','2','3','4','5','6','7','8','9'}; //bir hamleyi kaydeden fonksiyon, birinci kullanıcının aşdığı kutular X diğeri 0 ile gösteriliyor void hamle_kayit(int i, char c) { pozisyonlar[i] = c; } //verilen bir i hamlesninin geçerli olup olmadığını kontrol eden fonksiyon, eğer 1. kutu daha önce alınmışsa tekrar seçilemez int hamle_gecerlimi(int i) { if(i<=9 && i>=1 && pozisyonlar[i]!='X' && pozisyonlar[i]!='0') return 1; else return 0; } /*her hamleden sonra, oyuncunun kazanıp kazanmadığını bu fonksiyon ile kontrol ediyoruz. örneğin eğer 1. 2. ve 3. kutuların hepsi X ise 1. oyuncu kazanıyor, bütün ihtimalleri kontrol ediyoruz*/ int kazanma_kontrolu() { if (pozisyonlar[1] == pozisyonlar[2] && pozisyonlar[2] == pozisyonlar[3]) return 1; else if (pozisyonlar[4] == pozisyonlar[5] && pozisyonlar[5] == pozisyonlar[6]) return 1; else if (pozisyonlar[7] == pozisyonlar[8] && pozisyonlar[8] == pozisyonlar[9]) return 1; else if (pozisyonlar[1] == pozisyonlar[4] && pozisyonlar[4] == pozisyonlar[7]) return 1; else if (pozisyonlar[2] == pozisyonlar[5] && pozisyonlar[5] == pozisyonlar[8]) return 1; else if (pozisyonlar[3] == pozisyonlar[6] && pozisyonlar[6] == pozisyonlar[9]) return 1; else if (pozisyonlar[1] == pozisyonlar[5] && pozisyonlar[5] == pozisyonlar[9]) return 1; else if (pozisyonlar[3] == pozisyonlar[5] && pozisyonlar[5] == pozisyonlar[7]) return 1; else if (pozisyonlar[1] != '1' && pozisyonlar[2] != '2' && pozisyonlar[3] != '3' && pozisyonlar[4] != '4' && pozisyonlar[5] != '5' && pozisyonlar[6] != '6' && pozisyonlar[7] != '7' && pozisyonlar[8] != '8' && pozisyonlar[9] != '9') return 0; else return -1; } //oyun tahtasını çizen fonksiyon. her hamleden sonra oyun tahtasını bu fonksiyonu çağırarak tekrar gösteriyoruz void tahta() { system("cls"); cout << "Player 1 (X) - Player 2 (O)" << endl << endl; cout << endl; cout << " | | " << endl; cout << " " << pozisyonlar[1] << " | " << pozisyonlar[2] << " | " << pozisyonlar[3] << endl; cout << "_____|_____|_____" << endl; cout << " | | " << endl; cout << " " << pozisyonlar[4] << " | " << pozisyonlar[5] << " | " << pozisyonlar[6] << endl; cout << "_____|_____|_____" << endl; cout << " | | " << endl; cout << " " << pozisyonlar[7] << " | " << pozisyonlar[8] << " | " << pozisyonlar[9] << endl; cout << " | | " << endl << endl; } int kazanma() { //burada bilgisayarın o ana kadar koydugu işaretlere bakarak, sıradaki hamle ile kazanabileceği durumları kontrol edeceksiniz. //eğer böyle bir durum var ise o hamleyi geri döndüreceksiniz //geri döndüreceğiniz bu değer, bilgisayarın sıradaki hamlesi olacak ve bilgisayar bu hamle ile oyunu kazanacak return -1; } int engelleme() { //burada bilgisayarın eğer kazanma hamlesi yok ise, rakibin kazanma hamlesini kontrol edeceksiniz //eğer rakip bir hamle ile oyunu kazanacak durumda ise, bilgisayarın sıradaki hamlesi olmak üzere, rakibin o hamlesini geri döndüreceksiniz //bu bilgisayarın sıradaki hamlesi olacak ve bilgisayar rakibin kazanmasını engellemiş olacak return -1; } int otomatik_hamle_secme() { //burada üstteki iki durumun olmaması durumunda bilgisayarın sıradaki hamlesini belirleyeceksiniz //eğer bilgisayarı kazandıracak bir hamle yoksa ve rakip de kazanma hamlesine sahip değilse o zaman bilgisayara avantaj sağlayacak bir hamle //dondıreceksiniz. Bu bilgisayarın sıradaki hamlesi olacak ve bilgisayara avantaj sağlamaya çalışacaksınız. //burayı nasıl en etkili şekilde yapacağınızı düşünmeniz gereklidir. örneğim eğer bilgisayar 1. kutucuğu almış ise ve aynı zamanda 2. ve 3. kutular boş ise // o zaman 2. kutucuğu alarak bilgisayara sıra tekrar geldiğinde bir kazanma hamlesi sağlamış olacaksınız. return 5; } int main() { srand (time(NULL)); int player, i=-1, hamle; int oyun_tipi=0; //Tek kişilik veya iki kişilik oyun seçme while(oyun_tipi!=1 && oyun_tipi!=2) { system("cls"); cout<<"\t1. iki oyuncu\n\t2. Bilgisayara karsi\n"; cout<<"\tSecim yapin (1 veya 2):"; std::cin>>oyun_tipi; } char mark; //ilk hamle yapacak oyuncu rastgele seçiliyor player= rand() % 2+1; while(i==-1) { tahta(); if(oyun_tipi==2 && player==2) //bu if ifadesi 2. oyuncunun bilgisayarmı gerçek kişimi olduğunu kontrol ediyor eğer bilgisayar ise bahsedilen sizin yazacağınız fonksiyonlar kullanılarak en uygun hamle seçilecek { hamle=kazanma(); if(hamle==-1) hamle=engelleme(); if(hamle==-1) hamle=otomatik_hamle_secme(); } else { cout << "Player " << player << ", bir sayi gir: "; std::cin >> hamle; } while(!hamle_gecerlimi(hamle))//hamlenin geçerli olup olmadığı kontrol ediliyor { tahta(); std::cout<<"\Gecersiz hamle girdiniz. Tekrar deneyin\n"; cout << "Player " << player << ", bir sayi gir: "; std::cin >> hamle; } if(player == 1) mark='X'; else mark='&'; hamle_kayit(hamle,mark);//girilen hamle kaydediliyor i=kazanma_kontrolu(); //girilen hamle ile oyuncunun oynu kazanıp kazanmadığı kontrol ediliyor if(i==-1) { if(player==1)//sonraki hamle için oyuncu değiştiriliyor player=2; else player=1; } } tahta();//tahta güncelleniyor if(i==1)//kazanan oyuncu ekranda gösteriliyor cout<<"==>\aPlayer "<<player<<" kazandi "; else cout<<"==>\aBerabere"; return 0; }


 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
Cevapla

Etiketler
c++, kodu, oyun


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
İşte ASUS ROG GR8 Oyun Konsolu! Deep Diğer Oyun Konsolları 0 09 Kasım 2014 03:56
Oyun konsolu çılgınlığı yaSmin Oyun Dünyasından Son Haberler 0 28 Şubat 2014 02:10
Sony’den ‘mini’ oyun konsolu! Zen Oyun Dünyasından Son Haberler 0 12 Eylül 2013 14:34
Hem ofis hem oyun konsolu! Deep Cep Telefonlar 0 28 Şubat 2012 16:14
Oyun Konsolu IrCbaStarD mIRC Scripting Hazır Kodlar 15 22 Şubat 2008 03:42