Cara Membuat Permainan Asas berasaskan Teks dalam C++

Cara Membuat Permainan Asas Berasaskan Teks Dalam C



Permainan berasaskan teks bergantung pada aksara teks dan antara muka baris arahan untuk interaksi dengan pemain. Mereka tidak mempunyai imej grafik, bunyi atau animasi. Pengguna memasukkan arahan melalui tetingkap konsol.

Cara Membuat Permainan Asas berasaskan Teks dalam C++

Permainan berasaskan teks dalam C++ membenarkan pemain memasukkan arahan melalui tetingkap konsol, dan program memproses pergerakan pemain. Di sini, saya telah mencipta permainan tic-tac-toe berasaskan teks yang membenarkan dua pilihan untuk dimainkan oleh pengguna. Pengguna boleh sama ada bermain dengan pengkompil C++ atau dengan sesama manusia. Permainan ini mempunyai ciri yang terus menambah markah untuk pemain yang menang. Selepas keputusan perlawanan pertama diumumkan, pilihan perlawanan semula tersedia.

Peraturan untuk Memenangi Permainan

Dua pemain bermain permainan tic-tac-toe, meletakkan X dan 0 secara alternatif dalam salah satu daripada sembilan ruang yang tersedia pada grid tiga demi tiga. Permainan ini dimenangi oleh pemain pertama yang memperoleh tiga markah berturut-turut dalam arah menegak, mendatar atau pepenjuru. Setiap pemain perlu berfikir dengan bijak dan melihat ke hadapan untuk langkah seterusnya pemain lain.







Kod untuk mereka bentuk permainan tic-tac-toe berasaskan teks mempunyai bahagian yang berbeza, dibahagikan berdasarkan kefungsian. Dalam bahagian pertama, pengguna memutuskan sama ada untuk bermain dengan komputer atau sesama manusia. Selepas memutuskan mod keuntungan, program meminta pengguna untuk input. Kedua-dua pemain memasukkan input satu demi satu.



//Ambil input daripada pemain
batal playerInput ( Pemain & pemain ) {
int pos ;
cout << endl ;
cout << ' \t ' << pemain. getName ( ) << 'Pusing:' ;
cout << ' \t Masukkan jawatan ' <> pos ;
pos - = 1 ;
jika ( kosongIndex [ pos ] == 1 ) {
cout << '-----Kedudukan tidak kosong-------' << endl ;
playerInput ( pemain ) ;
} lain {
kosongIndex [ pos ] = 1 ;
kosongCount - = 1 ;
pemain. getName ( ) . bandingkan ( 'Pemain I' ) == 0 ? papan [ pos ] = 'X' : papan [ pos ] = 'O' ;
}

}

Selepas mengambil input daripada pengguna, ia menyemak peraturan menang. Fungsi checkWin() mempunyai dua parameter p1 dan p2 untuk menyemak sama ada pemain telah menang atau tidak. Pembolehubah yang berbeza diisytiharkan dalam fungsi i, j, dan k ialah pembolehubah integer yang diisytiharkan untuk gelung dan bendera ialah fungsi Boolean untuk menyemak keadaan menang. Gelung bermula dari kedudukan pertama dan terus berulang untuk kesemua sembilan kedudukan. Simbol_pertama ialah aksara yang boleh menjadi 0 atau X jika ia benar maka semua kombinasi yang mungkin disemak untuk peraturan yang menang. Jika tidak, iterator bergerak ke kedudukan seterusnya, dan perkara yang sama berterusan sehingga semua kedudukan yang mungkin disemak. Jika bendera ditetapkan sebagai benar, maka pemenang diisytiharkan, dan program meminta untuk membuat pilihan sekali lagi.



batal checkWin ( Pemain & p1,Pemain & p2 ) {
int i,j,k ;
bool bendera = salah ;
char simbol_pertama ;
untuk ( i = 0 ; i < 8 ; i ++ ) {
simbol_pertama = papan [ senarai menang [ i ] . barisan [ 0 ] ] ;

jika ( ( simbol_pertama ! = 'X' ) && ( simbol_pertama ! = 'O' ) ) {
bendera = salah ;
teruskan ;
}
bendera = benar ;
untuk ( j = 0 ; j < 3 ; j ++ ) {
jika ( simbol_pertama ! = papan [ senarai menang [ i ] . barisan [ j ] ] ) {
bendera = salah ;
rehat ;
}
}
jika ( bendera ) {
permainanOn = 0 ;
jika ( simbol_pertama == 'X' ) {
cout << '-----------------------' << endl ;
cout << ' \t Pemain SAYA MENANG' << endl ;
cout << '-----------------------' << endl ;
p1. menang ( ) ;
} lain {
p2. menang ( ) ;
jika ( melawanKomputer ) {
cout << '-----------------------' << endl ;
cout << ' \t Komputer MENANG' << endl ;
cout << '-----------------------' << endl ;
} lain {
cout << '-----------------------' << endl ;
cout << ' \t Pemain II MENANG' << endl ;
cout << '-----------------------' << endl ;

}
}
displayScore ( p1,p2 ) ;
rehat ;
}

Bahagian kod ini menunjukkan skor permainan. Jika permainan menentang komputer, maka markah untuk pemain 1 dan komputer dipaparkan, jika tidak, markah untuk pemain 1 dan pemain 2 dipaparkan.





batal displayScore ( Pemain & p1, Pemain & p2 ) {
cout << endl ;
cout << ' \t SKOR: \t ' ;
jika ( melawanKomputer )
cout << 'Pemain I:' << p1. getScore ( ) << ' \t Komputer: ' << p2. getScore ( ) << endl ;
lain
cout << 'Pemain I:' << p1. getScore ( ) << ' \t Pemain II: ' << p2. getScore ( ) << endl ;
}

Ini adalah kod utama untuk pelaksanaan permainan tic-tac-toe untuk dua pemain. Pengguna boleh memilih daripada pelbagai prosedur yang akan dijalankan menggunakan pernyataan kes suis. Kod ini menyediakan antara muka mesra pengguna untuk bermain permainan pada pengkompil C++, dan kod itu terus dilaksanakan sehingga pengguna memilih pilihan keluar.

int utama ( )
{
int ch ;

sementara ( 1 ) {
cout << '      ----------MENU-----------' << endl ;
cout << ' \t 1. Permainan 1 pemain' << endl ;
cout << ' \t 2. Permainan 2 pemain' << endl ;
cout << ' \t 3. Untuk keluar ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Pilih satu pilihan' <> ch ;
suis ( ch ) {
kes 1 : {
Permainan * permainan = baru Permainan ;
permainan - > haba ( ) ;
permainan - > onePlayerGame ( ) ;
}
rehat ;
kes 2 : {
Permainan * permainan = baru Permainan ;
permainan - > haba ( ) ;
permainan - > twoPlayerGame ( ) ;
}
rehat ;
kes 3 :
kembali 0 ;
lalai :
cout << 'OOPs Pilihan Tidak Sah! CUBA LAGI' ;
}

}
kembali 0 ;
}

Kod Lengkap untuk Permainan Tic-Tac-Toc Berasaskan Teks

Ini ialah kod lengkap untuk reka bentuk dan pelaksanaan permainan tic-tac-toe berasaskan teks.



#include
#include
#include
#include
#include
menggunakan ruang nama std ;

typedef struct {
int * barisan ;
} WinList ;


kelas Pemain {
persendirian :
nama rentetan ;
int skor ;
awam :
Pemain ( ) : Pemain { '' } { }
Pemain ( rentetan n ) : skor { 0 } , nama { n } { }

batal menang ( ) {
//menaikkan markah
skor ++ ;
}
int getScore ( ) { kembali ini - > skor ; }

rentetan getName ( ) { kembali ini - > nama ; }
} ;

kelas Permainan {
persendirian :
char papan [ 9 ] ;
int kosongIndex [ 9 ] ;
int gameOn, againstComputer ;
int kosongCount ;
Senarai menang WinList [ 8 ] ;

batal papan paparan ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << papan [ 0 ] << ' | ' << papan [ 1 ] << ' | ' << papan [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << papan [ 3 ] << ' | ' << papan [ 4 ] << ' | ' << papan [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << papan [ 6 ] << ' | ' << papan [ 7 ] << ' | ' << papan [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

batal komputerInput ( ) {
int pos ;
pos = rand ( ) % 10 ;
jika ( kosongIndex [ pos ] == 1 ) {
jika ( kosongCount < 0 )
kembali ;
komputerInput ( ) ;
} lain {
cout << 'Pilih komputer:' << pos + 1 << endl ;
kosongIndex [ pos ] = 1 ;
kosongCount - = 1 ;
papan [ pos ] = 'O' ;
}

}

batal playerInput ( Pemain & pemain ) {
int pos ;
cout << endl ;
cout << ' \t ' << pemain. getName ( ) << 'Pusing:' ;
cout << ' \t Masukkan jawatan ' <> pos ;
pos - = 1 ;
jika ( kosongIndex [ pos ] == 1 ) {
cout << '-----Kedudukan tidak kosong-------' << endl ;
playerInput ( pemain ) ;
} lain {
kosongIndex [ pos ] = 1 ;
kosongCount - = 1 ;
pemain. getName ( ) . bandingkan ( 'Pemain I' ) == 0 ? papan [ pos ] = 'X' : papan [ pos ] = 'O' ;
}

}

batal checkWin ( Pemain & p1, Pemain & p2 ) {
int i,j,k ;
bool bendera = salah ;
char simbol_pertama ;
untuk ( i = 0 ; i < 8 ; i ++ ) {
simbol_pertama = papan [ senarai menang [ i ] . barisan [ 0 ] ] ;

jika ( ( simbol_pertama ! = 'X' ) && ( simbol_pertama ! = 'O' ) ) {
bendera = salah ;
teruskan ;
}
bendera = benar ;
untuk ( j = 0 ; j < 3 ; j ++ ) {
jika ( simbol_pertama ! = papan [ senarai menang [ i ] . barisan [ j ] ] ) {
bendera = salah ;
rehat ;
}
}
jika ( bendera ) {
permainanOn = 0 ;
jika ( simbol_pertama == 'X' ) {
cout << '-----------------------' << endl ;
cout << ' \t Pemain SAYA MENANG' << endl ;
cout << '-----------------------' << endl ;
p1. menang ( ) ;
} lain {
p2. menang ( ) ;
jika ( melawanKomputer ) {
cout << '-----------------------' << endl ;
cout << ' \t Komputer MENANG' << endl ;
cout << '-----------------------' << endl ;
} lain {
cout << '-----------------------' << endl ;
cout << ' \t Pemain II MENANG' << endl ;
cout << '-----------------------' < 0 ) && ( permainanOn ! = 0 ) ) {

jika ( melawanKomputer )
tangan == 1 ? komputerInput ( ) : playerInput ( p2 ) ;
lain
tangan == 1 ? playerInput ( p1 ) : playerInput ( p2 ) ;
tangan = ! tangan ;
papan paparan ( ) ;
checkWin ( p1,p2 ) ;
}
jika ( kosongCount <= 0 ) {
cout << '      -----------------------' << endl ;
cout << ' \t Tiada PEMENANG' << endl ;
cout << '      -----------------------' << endl ;
}
cout << endl ;
cout <> perlawanan semula ;
jika ( ( perlawanan semula == 'DAN' ) || ( perlawanan semula == 'dan' ) ) {
haba ( ) ;
bermain ( p1,p2 ) ;
}

}
batal displayScore ( Pemain & p1, Pemain & p2 ) {
cout << endl ;
cout << ' \t SKOR: \t ' ;
jika ( melawanKomputer )
cout << 'Pemain I:' << p1. getScore ( ) << ' \t Komputer: ' << p2. getScore ( ) << endl ;
lain
cout << 'Pemain I:' << p1. getScore ( ) << ' \t Pemain II: ' << p2. getScore ( ) << endl ;
}

awam :
Permainan ( ) : kosongCount { 0 } , permainanOn { 1 } , melawanKomputer { 0 } {
haba ( ) ;
senarai menang [ 0 ] . barisan = baru int [ 3 ] { 0 , 1 , 2 } ;
senarai menang [ 1 ] . barisan = baru int [ 3 ] { 3 , 4 , 5 } ;
senarai menang [ 2 ] . barisan = baru int [ 3 ] { 6 , 7 , 8 } ;
senarai menang [ 3 ] . barisan = baru int [ 3 ] { 0 , 3 , 6 } ;
senarai menang [ 4 ] . barisan = baru int [ 3 ] { 1 , 4 , 7 } ;
senarai menang [ 5 ] . barisan = baru int [ 3 ] { 2 , 5 , 8 } ;
senarai menang [ 6 ] . barisan = baru int [ 3 ] { 0 , 4 , 8 } ;
senarai menang [ 7 ] . barisan = baru int [ 3 ] { 2 , 4 , 6 } ;
}

batal haba ( ) {
permainanOn = 1 ;

kosongCount = 0 ;
srand ( masa ( 0 ) ) ;
untuk ( saiz_t i = 0 ; i < 10 ; i ++ ) {
kosongIndex [ i ] = 0 ;
papan [ i ] = ( i + 1 ) + '0' ;
kosongCount ++ ;
}
kosongCount -- ;
}

batal onePlayerGame ( ) {
//Mencipta Pemain
Pemain p ( 'Pemain I' ) ;
Pemain c ( 'Komputer' ) ;
cout << '       ------------------------' << endl ;
cout << ' \t Pemain I: X \t Komputer: O' << endl ;
cout << '       ------------------------' << endl ;
cout << endl ;
melawanKomputer = 1 ;
bermain ( c,hlm ) ;

}

batal twoPlayerGame ( ) {
//Mencipta Pemain
Pemain p ( 'Pemain I' ) ;
Pemain c ( 'Pemain II' ) ;
cout << '       ------------------------' << endl ;
cout << ' \t Pemain I: X \t Pemain II: O' << endl ;
cout << '       ------------------------' << endl ;
cout << endl ;
melawanKomputer = 0 ;
bermain ( c,hlm ) ;
}
} ;

int utama ( )
{
int ch ;

sementara ( 1 ) {
cout << '      ----------MENU-----------' << endl ;
cout << ' \t 1. Permainan 1 pemain' << endl ;
cout << ' \t 2. Permainan 2 pemain' << endl ;
cout << ' \t 3. Untuk keluar ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Pilih satu pilihan' <> ch ;
suis ( ch ) {
kes 1 : {
Permainan * permainan = baru Permainan ;
permainan - > haba ( ) ;
permainan - > onePlayerGame ( ) ;
}
rehat ;
kes 2 : {
Permainan * permainan = baru Permainan ;
permainan - > haba ( ) ;
permainan - > twoPlayerGame ( ) ;
}
rehat ;
kes 3 :
kembali 0 ;
lalai :
cout << 'OOPs Pilihan Tidak Sah! CUBA LAGI' ;
}

}
kembali 0 ;
}

Ini adalah kod lengkap untuk pelaksanaan permainan tic-tac-toe, yang boleh dimainkan dalam dua mod, sama ada dengan komputer atau sesama manusia. Ini adalah kod serba boleh, termasuk semua arahan yang mungkin. Apabila pengguna memasukkan kedudukan yang telah diisi, ia tidak akan menimpa kedudukan ini dan menganggap langkah ini tidak sah.

Sehingga kini pemain satu telah memilih kotak pertama dan kemudian pada giliran seterusnya komputer menandakan kotak keenam:

Kedua-dua pemain telah memilih dua kotak sehingga sekarang dan seterusnya pemain saya memilih kotak ketujuh yang menghasilkan corak menegak berturut-turut:

Pengguna memilih untuk menggunakan komputer untuk bermain permainan, jadi selepas mengambil tiga gerakan, pengguna menang dari komputer dan satu markah ditambah pada rekod pemain 1. Selepas perlawanan pertama tamat, penyusun meminta perlawanan semula. Pengguna membuat keputusan daripada pilihan dan program kembali ke bahagian utama. Selepas memilih pilihan tiga, pengkompil wujud pelaksanaan kod.

Kesimpulan

Permainan berasaskan teks bergantung pada aksara teks dan antara muka baris arahan untuk interaksi dengan pemain. Mereka tidak mempunyai imej grafik, bunyi atau animasi. Pengguna memasukkan arahan melalui tetingkap konsol. Permainan tic-tac-toe berasaskan teks mesra pengguna dibina menggunakan C++. Ia menggunakan arahan yang berbeza untuk membuat permainan yang sama ada boleh dimainkan dengan komputer atau pemain lain.