C++'da Temel Metin Tabanlı Oyun Nasıl Oluşturulur

C Da Temel Metin Tabanli Oyun Nasil Olusturulur



Metin tabanlı oyunlar, oyuncuyla etkileşim için metin karakterlerine ve komut satırı arayüzüne dayanır. Grafik görüntüleri, sesleri veya animasyonları yoktur. Kullanıcı komutu konsol penceresinden girer.

C++'da Temel Metin Tabanlı Oyun Nasıl Oluşturulur

C++'daki metin tabanlı oyunlar, oyuncunun bir konsol penceresi aracılığıyla komut girmesine olanak tanır ve program, oyuncunun hareketlerini işler. Burada, kullanıcının oynaması için iki seçeneğe izin veren, metin tabanlı bir tic-tac-toe oyunu oluşturdum. Kullanıcı C++ derleyicisiyle veya başka bir insanla oynayabilir. Bu oyun, kazanan oyuncunun puanını sürekli olarak artıran bir özelliğe sahiptir. İlk oyunun sonucu açıklandıktan sonra rövanş seçeneği mevcuttur.

Oyunu Kazanmanın Kuralları

İki oyuncu, X ve 0'ı alternatif olarak üçe üçlük bir ızgaradaki mevcut dokuz alandan birine yerleştiren bir tic-tac-toe oyunu oynar. Oyunu dikey, yatay veya çapraz yönde ardışık üç işaretini alan ilk oyuncu kazanır. Her oyuncunun akıllıca düşünmesi ve diğer oyuncunun bir sonraki hamlesine bakması gerekir.







Metin tabanlı bir tic-tac-toe oyunu tasarlama kodu, işlevselliğe göre bölünmüş farklı bölümlere sahiptir. İlk bölümde kullanıcı bir bilgisayarla mı yoksa bir insanla mı oynayacağına karar verir. Kazanç moduna karar verdikten sonra program kullanıcıdan girdi ister. Her iki oyuncu da birbiri ardına girdiye girer.



//Oyunculardan girdi alın
geçersiz oyuncuGirişi ( oyuncu & oyuncu ) {
int poz ;
cout << sonunda ;
cout << ' \T ' << oyuncu. getName ( ) << ' Dönüş: ' ;
cout << ' \T Pozisyonu girin ' <> poz ;
poz - = 1 ;
eğer ( emptyIndex [ poz ] == 1 ) {
cout << '-----Konum boş değil----------' << sonunda ;
oyuncuGirişi ( oyuncu ) ;
} başka {
emptyIndex [ poz ] = 1 ;
emptyCount - = 1 ;
oyuncu. getName ( ) . karşılaştırmak ( 'Oyuncu Ben' ) == 0 ? pano [ poz ] = 'X' : pano [ poz ] = 'Ö' ;
}

}

Kullanıcıdan girdi aldıktan sonra kazanma kuralını kontrol eder. checkWin() işlevi, oyuncunun kazanıp kazanmadığını kontrol etmek için p1 ve p2 olmak üzere iki parametreye sahiptir. Fonksiyonda farklı değişkenler bildirilir i, j ve k, döngü için bildirilen tamsayı değişkenlerdir ve bayrak, kazanma koşulunu kontrol etmek için bir Boolean işlevidir. Döngü ilk pozisyondan başlar ve dokuz pozisyonun tümü için yinelenmeye devam eder. İlk_sembol 0 veya X olabilen bir karakterdir, eğer doğruysa, kazanma kuralı için tüm olası kombinasyonlar kontrol edilir. Aksi halde yineleyici bir sonraki konuma geçer ve tüm olası konumlar kontrol edilene kadar aynı işlem devam eder. Bayrak doğru olarak ayarlanırsa kazanan ilan edilir ve program seçimi yeniden yapmanızı ister.



geçersiz checkKazanmak ( oyuncu & p1,Oyuncu & p2 ) {
int ben,j,k ;
bool bayrak = YANLIŞ ;
karakter ilk_symbol ;
için ( Ben = 0 ; Ben < 8 ; Ben ++ ) {
ilk_symbol = pano [ kazanan listesi [ Ben ] . sıra [ 0 ] ] ;

eğer ( ( ilk_symbol ! = 'X' ) && ( ilk_symbol ! = 'Ö' ) ) {
bayrak = YANLIŞ ;
devam etmek ;
}
bayrak = doğru ;
için ( J = 0 ; J < 3 ; J ++ ) {
eğer ( ilk_symbol ! = pano [ kazanan listesi [ Ben ] . sıra [ J ] ] ) {
bayrak = YANLIŞ ;
kırmak ;
}
}
eğer ( bayrak ) {
oyunAçık = 0 ;
eğer ( ilk_symbol == 'X' ) {
cout << '--------------------------' << sonunda ;
cout << ' \T KAZANDIĞIM Oyuncu' << sonunda ;
cout << '--------------------------' << sonunda ;
s1. kazanmak ( ) ;
} başka {
p2. kazanmak ( ) ;
eğer ( Bilgisayara karşı ) {
cout << '--------------------------' << sonunda ;
cout << ' \T Bilgisayar KAZANDI' << sonunda ;
cout << '--------------------------' << sonunda ;
} başka {
cout << '--------------------------' << sonunda ;
cout << ' \T Oyuncu II KAZANDI' << sonunda ;
cout << '--------------------------' << sonunda ;

}
}
ekranScore ( p1,p2 ) ;
kırmak ;
}

Kodun bu kısmı oyunun skorunu gösterir. Oyun bilgisayara karşı oynanıyorsa, oyuncu 1'in ve bilgisayarın puanı görüntülenir, aksi takdirde oyuncu 1 ve oyuncu 2'nin puanı görüntülenir.





geçersiz ekranScore ( oyuncu & p1, Oyuncu & p2 ) {
cout << sonunda ;
cout << ' \T GOL: \T ' ;
eğer ( Bilgisayara karşı )
cout << 'Oyuncu I:' << s1. puan almak ( ) << ' \T Bilgisayar: ' << p2. puan almak ( ) << sonunda ;
başka
cout << 'Oyuncu I:' << s1. puan almak ( ) << ' \T Oyuncu II: ' << p2. puan almak ( ) << sonunda ;
}

Bu, iki oyuncu için tic-tac-toe oyununun yürütülmesine yönelik ana koddur. Kullanıcı, switch case ifadesini kullanarak gerçekleştirilecek çeşitli prosedürler arasından seçim yapabilir. Bu kod, C++ derleyicisinde oyun oynamak için kullanıcı dostu bir arayüz sağlar ve kullanıcı çıkış seçeneğini seçene kadar kod çalışmaya devam eder.

int ana ( )
{
int ch ;

sırasında ( 1 ) {
cout << ' ----------MENÜ----------' << sonunda ;
cout << ' \T 1. 1 Oyunculu oyun' << sonunda ;
cout << ' \T 2. 2 Oyunculu oyun' << sonunda ;
cout << ' \T 3. Çıkmak için ' << sonunda ;
cout << '      ----------' << sonunda ;
cout << sonunda ;
cout << ' \T Bir seçenek seçin' <> ch ;
anahtar ( ch ) {
dava 1 : {
Oyun * oyun = yeni Oyun ;
oyun - > sıcaklık ( ) ;
oyun - > tek Oyunculu Oyun ( ) ;
}
kırmak ;
dava 2 : {
Oyun * oyun = yeni Oyun ;
oyun - > sıcaklık ( ) ;
oyun - > iki KişilikOyun ( ) ;
}
kırmak ;
dava 3 :
geri dönmek 0 ;
varsayılan :
cout << 'OOP Geçersiz Seçenek! YENİDEN DENEYİN' ;
}

}
geri dönmek 0 ;
}

Metin Tabanlı Tic-Tac-Toc Oyununun Tam Kodu

Bu, metin tabanlı bir tic-tac-toe oyununun tasarımı ve yürütülmesi için eksiksiz bir koddur.



#include
#include
#include
#include
#include
kullanarak ad alanı std ;

typedef yapı {
int * sıra ;
} Kazanma Listesi ;


sınıf oyuncu {
özel :
dize adı ;
int Gol ;
halk :
oyuncu ( ) : oyuncu { '' } { }
oyuncu ( dize ) : Gol { 0 } , isim { N } { }

geçersiz kazanmak ( ) {
//puanını arttır
Gol ++ ;
}
int puan almak ( ) { geri dönmek Bu - > Gol ; }

dize getName ( ) { geri dönmek Bu - > isim ; }
} ;

sınıf Oyun {
özel :
karakter pano [ 9 ] ;
int emptyIndex [ 9 ] ;
int GameOn, karşıBilgisayar ;
int emptyCount ;
WinList kazanan listesi [ 8 ] ;

geçersiz ekran kartı ( ) {
cout << sonunda ;
cout << '   |   |   ' << sonunda ;
cout << ' ' << pano [ 0 ] << ' | ' << pano [ 1 ] << ' | ' << pano [ 2 ] << sonunda ;
cout << '   |   |   ' << sonunda ;
cout << '-----------' << sonunda ;
cout << '   |   |   ' << sonunda ;
cout << ' ' << pano [ 3 ] << ' | ' << pano [ 4 ] << ' | ' << pano [ 5 ] << sonunda ;
cout << '   |   |   ' << sonunda ;
cout << '-----------' << sonunda ;
cout << '   |   |   ' << sonunda ;
cout << ' ' << pano [ 6 ] << ' | ' << pano [ 7 ] << ' | ' << pano [ 8 ] << sonunda ;
cout << '   |   |   ' << sonunda ;
cout << sonunda ;
}

geçersiz bilgisayarGirişi ( ) {
int poz ;
poz = rand ( ) % 10 ;
eğer ( emptyIndex [ poz ] == 1 ) {
eğer ( emptyCount < 0 )
geri dönmek ;
bilgisayarGirişi ( ) ;
} başka {
cout << 'Bilgisayar seç: ' << poz + 1 << sonunda ;
emptyIndex [ poz ] = 1 ;
emptyCount - = 1 ;
pano [ poz ] = 'Ö' ;
}

}

geçersiz oyuncuGirişi ( oyuncu & oyuncu ) {
int poz ;
cout << sonunda ;
cout << ' \T ' << oyuncu. getName ( ) << ' Dönüş: ' ;
cout << ' \T Pozisyonu girin ' <> poz ;
poz - = 1 ;
eğer ( emptyIndex [ poz ] == 1 ) {
cout << '-----Konum boş değil----------' << sonunda ;
oyuncuGirişi ( oyuncu ) ;
} başka {
emptyIndex [ poz ] = 1 ;
emptyCount - = 1 ;
oyuncu. getName ( ) . karşılaştırmak ( 'Oyuncu Ben' ) == 0 ? pano [ poz ] = 'X' : pano [ poz ] = 'Ö' ;
}

}

geçersiz checkKazanmak ( oyuncu & p1,Oyuncu & p2 ) {
int ben,j,k ;
bool bayrak = YANLIŞ ;
karakter ilk_symbol ;
için ( Ben = 0 ; Ben < 8 ; Ben ++ ) {
ilk_symbol = pano [ kazanan listesi [ Ben ] . sıra [ 0 ] ] ;

eğer ( ( ilk_symbol ! = 'X' ) && ( ilk_symbol ! = 'Ö' ) ) {
bayrak = YANLIŞ ;
devam etmek ;
}
bayrak = doğru ;
için ( J = 0 ; J < 3 ; J ++ ) {
eğer ( ilk_symbol ! = pano [ kazanan listesi [ Ben ] . sıra [ J ] ] ) {
bayrak = YANLIŞ ;
kırmak ;
}
}
eğer ( bayrak ) {
oyunAçık = 0 ;
eğer ( ilk_symbol == 'X' ) {
cout << '--------------------------' << sonunda ;
cout << ' \T KAZANDIĞIM Oyuncu' << sonunda ;
cout << '--------------------------' << sonunda ;
s1. kazanmak ( ) ;
} başka {
p2. kazanmak ( ) ;
eğer ( Bilgisayara karşı ) {
cout << '--------------------------' << sonunda ;
cout << ' \T Bilgisayar KAZANDI' << sonunda ;
cout << '--------------------------' << sonunda ;
} başka {
cout << '--------------------------' << sonunda ;
cout << ' \T Oyuncu II KAZANDI' << sonunda ;
cout << '--------------------------' < 0 ) && ( oyunAçık ! = 0 ) ) {

eğer ( Bilgisayara karşı )
el == 1 ? bilgisayarGirişi ( ) : oyuncuGirişi ( p2 ) ;
başka
el == 1 ? oyuncuGirişi ( p1 ) : oyuncuGirişi ( p2 ) ;
el = ! el ;
ekran kartı ( ) ;
checkKazanmak ( p1,p2 ) ;
}
eğer ( emptyCount <= 0 ) {
cout << '      --------------------------' << sonunda ;
cout << ' \T KAZANAN YOK' << sonunda ;
cout << '      --------------------------' << sonunda ;
}
cout << sonunda ;
cout <> Rövanş ;
eğer ( ( Rövanş == 'VE' ) || ( Rövanş == 'Ve' ) ) {
sıcaklık ( ) ;
oynamak ( p1,p2 ) ;
}

}
geçersiz ekranScore ( oyuncu & p1, Oyuncu & p2 ) {
cout << sonunda ;
cout << ' \T GOL: \T ' ;
eğer ( Bilgisayara karşı )
cout << 'Oyuncu I:' << s1. puan almak ( ) << ' \T Bilgisayar: ' << p2. puan almak ( ) << sonunda ;
başka
cout << 'Oyuncu I:' << s1. puan almak ( ) << ' \T Oyuncu II: ' << p2. puan almak ( ) << sonunda ;
}

halk :
Oyun ( ) : emptyCount { 0 } , oyun Açık { 1 } , Bilgisayara karşı { 0 } {
sıcaklık ( ) ;
kazanan listesi [ 0 ] . sıra = yeni int [ 3 ] { 0 , 1 , 2 } ;
kazanan listesi [ 1 ] . sıra = yeni int [ 3 ] { 3 , 4 , 5 } ;
kazanan listesi [ 2 ] . sıra = yeni int [ 3 ] { 6 , 7 , 8 } ;
kazanan listesi [ 3 ] . sıra = yeni int [ 3 ] { 0 , 3 , 6 } ;
kazanan listesi [ 4 ] . sıra = yeni int [ 3 ] { 1 , 4 , 7 } ;
kazanan listesi [ 5 ] . sıra = yeni int [ 3 ] { 2 , 5 , 8 } ;
kazanan listesi [ 6 ] . sıra = yeni int [ 3 ] { 0 , 4 , 8 } ;
kazanan listesi [ 7 ] . sıra = yeni int [ 3 ] { 2 , 4 , 6 } ;
}

geçersiz sıcaklık ( ) {
oyunAçık = 1 ;

emptyCount = 0 ;
küçük parça ( zaman ( 0 ) ) ;
için ( size_t Ben = 0 ; Ben < 10 ; Ben ++ ) {
emptyIndex [ Ben ] = 0 ;
pano [ Ben ] = ( Ben + 1 ) + '0' ;
emptyCount ++ ;
}
emptyCount -- ;
}

geçersiz tek Oyunculu Oyun ( ) {
//Oynatıcı Oluşturuluyor
Oyuncu p ( 'Oyuncu Ben' ) ;
Oyuncu c ( 'Bilgisayar' ) ;
cout << '       ------------' << sonunda ;
cout << ' \T Oyuncu I: X \T Bilgisayar: O' << sonunda ;
cout << '       ------------' << sonunda ;
cout << sonunda ;
Bilgisayara karşı = 1 ;
oynamak ( c,p ) ;

}

geçersiz iki KişilikOyun ( ) {
//Oynatıcı Oluşturuluyor
Oyuncu p ( 'Oyuncu Ben' ) ;
Oyuncu c ( 'Oyuncu II' ) ;
cout << '       ------------' << sonunda ;
cout << ' \T Oyuncu I: X \T Oyuncu II: O' << sonunda ;
cout << '       ------------' << sonunda ;
cout << sonunda ;
Bilgisayara karşı = 0 ;
oynamak ( c,p ) ;
}
} ;

int ana ( )
{
int ch ;

sırasında ( 1 ) {
cout << ' ----------MENÜ----------' << sonunda ;
cout << ' \T 1. 1 Oyunculu oyun' << sonunda ;
cout << ' \T 2. 2 Oyunculu oyun' << sonunda ;
cout << ' \T 3. Çıkmak için ' << sonunda ;
cout << '      ----------' << sonunda ;
cout << sonunda ;
cout << ' \T Bir seçenek seçin' <> ch ;
anahtar ( ch ) {
dava 1 : {
Oyun * oyun = yeni Oyun ;
oyun - > sıcaklık ( ) ;
oyun - > tek Oyunculu Oyun ( ) ;
}
kırmak ;
dava 2 : {
Oyun * oyun = yeni Oyun ;
oyun - > sıcaklık ( ) ;
oyun - > iki KişilikOyun ( ) ;
}
kırmak ;
dava 3 :
geri dönmek 0 ;
varsayılan :
cout << 'OOP Geçersiz Seçenek! YENİDEN DENEYİN' ;
}

}
geri dönmek 0 ;
}

Bu, bir bilgisayarla veya bir insanla olmak üzere iki modda oynanabilen tic-tac-toe oyununun yürütülmesine yönelik eksiksiz bir koddur. Bu, tüm olası komutları içeren çok yönlü bir koddur. Kullanıcı halihazırda doldurulmuş bir pozisyon girdiğinde bu pozisyonun üzerine yazılmaz ve bu hamleyi geçersiz sayar.

Şu ana kadar birinci oyuncu ilk kutuyu seçti ve bir sonraki turda bilgisayar altıncı kutuyu işaretledi:

Şu ana kadar her iki oyuncu da iki kutuyu seçmiştir ve bir sonraki turda I. oyuncu yedinci kutuyu seçer ve bu da ardışık bir dikey model oluşturur:

Kullanıcı oyun oynamak için bilgisayarı kullanmayı seçer, böylece üç hamle yaptıktan sonra kullanıcı bilgisayardan kazanır ve bir puan 1. oyuncunun kaydına eklenir. İlk maç bittikten sonra derleyici rövanş ister. Kullanıcı seçenekler arasından karar verir ve program ana bölüme döner. Üçüncü seçeneği seçtikten sonra derleyici kodun yürütülmesine geçer.

Çözüm

Metin tabanlı oyunlar, oyuncuyla etkileşim için metin karakterlerine ve komut satırı arayüzüne dayanır. Grafik görüntüleri, sesleri veya animasyonları yoktur. Kullanıcı komutu konsol penceresinden girer. Kullanıcı dostu metin tabanlı tic-tac-toe oyunu C++ kullanılarak oluşturulmuştur. Bir bilgisayarla veya başka bir oyuncuyla oynanabilecek bir oyun yapmak için farklı komutlar kullanır.