Cách tạo trò chơi dựa trên văn bản cơ bản trong C++

Cach Tao Tro Choi Dua Tren Van Ban Co Ban Trong C



Trò chơi dựa trên văn bản dựa vào các ký tự văn bản và giao diện dòng lệnh để tương tác với người chơi. Chúng không có hình ảnh đồ họa, âm thanh hoặc hình ảnh động. Người dùng nhập lệnh thông qua cửa sổ giao diện điều khiển.

Cách tạo trò chơi dựa trên văn bản cơ bản trong C++

Trò chơi dựa trên văn bản trong C++ cho phép người chơi nhập lệnh thông qua cửa sổ bảng điều khiển và chương trình xử lý các bước di chuyển của người chơi. Ở đây, tôi đã tạo một trò chơi tic-tac-toe dựa trên văn bản cho phép người dùng chơi hai tùy chọn. Người dùng có thể chơi với trình biên dịch C++ hoặc với người khác. Trò chơi này có tính năng liên tục cộng điểm cho người chơi chiến thắng. Sau khi kết quả của trận đấu đầu tiên được công bố, tùy chọn đấu lại sẽ có sẵn.

Quy tắc để giành chiến thắng trong trò chơi

Hai người chơi chơi trò chơi tic-tac-toe, lần lượt đặt X và 0 vào một trong chín ô trống có sẵn trên lưới ba nhân ba. Trò chơi sẽ giành chiến thắng bởi người chơi đầu tiên đạt được ba điểm liên tiếp của mình theo hướng dọc, ngang hoặc chéo. Mỗi người chơi phải suy nghĩ thông minh và dự đoán trước bước đi tiếp theo của người chơi kia.







Mã thiết kế trò chơi tic-tac-toe dựa trên văn bản có các phần khác nhau, được phân chia dựa trên chức năng. Trong phần đầu tiên, người dùng quyết định nên chơi với máy tính hay với con người. Sau khi quyết định chế độ khuếch đại, chương trình sẽ yêu cầu người dùng nhập liệu. Cả hai người chơi lần lượt nhập thông tin vào.



//Lấy đầu vào từ người chơi
trống rỗng đầu vào máy nghe nhạc ( Người chơi & người chơi ) {
int tư thế ;
cout << kết thúc ;
cout << ' \t ' << người chơi. lấy tên ( ) << ' Xoay: ' ;
cout << ' \t Nhập vị trí ' <> tư thế ;
tư thế - = 1 ;
nếu như ( trống Index [ tư thế ] == 1 ) {
cout << '-----Vị trí không trống-------' << kết thúc ;
đầu vào máy nghe nhạc ( người chơi ) ;
} khác {
trống Index [ tư thế ] = 1 ;
trốngĐếm - = 1 ;
người chơi. lấy tên ( ) . so sánh ( 'Người chơi tôi' ) == 0 ? Cái bảng [ tư thế ] = 'X' : Cái bảng [ tư thế ] = 'Ồ' ;
}

}

Sau khi lấy đầu vào từ người dùng, nó sẽ kiểm tra quy tắc thắng. Hàm checkWin() có hai tham số p1 và p2 để kiểm tra xem người chơi có thắng hay không. Các biến khác nhau được khai báo trong hàm i, j, k là các biến số nguyên được khai báo cho vòng lặp và cờ là hàm Boolean để kiểm tra điều kiện thắng. Vòng lặp bắt đầu từ vị trí đầu tiên và tiếp tục lặp lại cho tất cả chín vị trí. First_symbol là một ký tự có thể là 0 hoặc X nếu nó đúng thì tất cả các kết hợp có thể có sẽ được kiểm tra để tìm quy tắc chiến thắng. Nếu không, trình vòng lặp sẽ di chuyển đến vị trí tiếp theo và quá trình tương tự sẽ tiếp tục cho đến khi tất cả các vị trí có thể được kiểm tra. Nếu cờ được đặt là đúng thì người chiến thắng sẽ được tuyên bố và chương trình sẽ yêu cầu thực hiện lại lựa chọn.



trống rỗng kiểm tra Win ( Người chơi & p1,Người chơi & p2 ) {
int tôi, j, k ;
bool lá cờ = SAI ;
ký tự biểu tượng đầu tiên ;
( Tôi = 0 ; Tôi < số 8 ; Tôi ++ ) {
biểu tượng đầu tiên = Cái bảng [ danh sách thắng [ Tôi ] . hàng ngang [ 0 ] ] ;

nếu như ( ( biểu tượng đầu tiên ! = 'X' ) && ( biểu tượng đầu tiên ! = 'Ồ' ) ) {
lá cờ = SAI ;
Tiếp tục ;
}
lá cờ = ĐÚNG VẬY ;
( j = 0 ; j < 3 ; j ++ ) {
nếu như ( biểu tượng đầu tiên ! = Cái bảng [ danh sách thắng [ Tôi ] . hàng ngang [ j ] ] ) {
lá cờ = SAI ;
phá vỡ ;
}
}
nếu như ( lá cờ ) {
trò chơiBật = 0 ;
nếu như ( biểu tượng đầu tiên == 'X' ) {
cout << '--------------' << kết thúc ;
cout << ' \t Người chơi TÔI THẮNG' << kết thúc ;
cout << '--------------' << kết thúc ;
p1. thắng ( ) ;
} khác {
p2. thắng ( ) ;
nếu như ( chống lại máy tính ) {
cout << '--------------' << kết thúc ;
cout << ' \t Máy tính THẮNG' << kết thúc ;
cout << '--------------' << kết thúc ;
} khác {
cout << '--------------' << kết thúc ;
cout << ' \t Người chơi II THẮNG' << kết thúc ;
cout << '--------------' << kết thúc ;

}
}
điểm hiển thị ( p1,p2 ) ;
phá vỡ ;
}

Phần mã này hiển thị điểm của trò chơi. Nếu trận đấu diễn ra với máy tính thì điểm của người chơi 1 và máy tính sẽ được hiển thị, nếu không, điểm của người chơi 1 và người chơi 2 sẽ được hiển thị.





trống rỗng điểm hiển thị ( Người chơi & p1, Người chơi & p2 ) {
cout << kết thúc ;
cout << ' \t ĐIỂM: \t ' ;
nếu như ( chống lại máy tính )
cout << 'Người chơi tôi:' << p1. nhận được điểm ( ) << ' \t Máy tính: ' << p2. nhận được điểm ( ) << kết thúc ;
khác
cout << 'Người chơi tôi:' << p1. nhận được điểm ( ) << ' \t Người chơi II: ' << p2. nhận được điểm ( ) << kết thúc ;
}

Đây là mã chính để thực hiện trò chơi tic-tac-toe cho hai người chơi. Người dùng có thể chọn từ nhiều thủ tục khác nhau sẽ được thực hiện bằng cách sử dụng câu lệnh switch case. Mã này cung cấp giao diện thân thiện với người dùng để chơi trò chơi trên trình biên dịch C++ và mã tiếp tục thực thi cho đến khi người dùng chọn tùy chọn thoát.

int chủ yếu ( )
{
int ch ;

trong khi ( 1 ) {
cout << ' ----------THỰC ĐƠN----------' << kết thúc ;
cout << ' \t 1. Trò chơi 1 người chơi' << kết thúc ;
cout << ' \t 2. Trò chơi 2 người chơi' << kết thúc ;
cout << ' \t 3. Để thoát ' << kết thúc ;
cout << '      ----------' << kết thúc ;
cout << kết thúc ;
cout << ' \t Chọn một tùy chọn' <> ch ;
công tắc ( ch ) {
trường hợp 1 : {
Trò chơi * trò chơi = mới Trò chơi ;
trò chơi - > nhiệt ( ) ;
trò chơi - > onePlayerGame ( ) ;
}
phá vỡ ;
trường hợp 2 : {
Trò chơi * trò chơi = mới Trò chơi ;
trò chơi - > nhiệt ( ) ;
trò chơi - > twoPlayerGame ( ) ;
}
phá vỡ ;
trường hợp 3 :
trở lại 0 ;
mặc định :
cout << 'Rất tiếc Tùy chọn không hợp lệ! THỬ LẠI' ;
}

}
trở lại 0 ;
}

Mã hoàn chỉnh cho trò chơi Tic-Tac-Toc dựa trên văn bản

Đây là mã hoàn chỉnh để thiết kế và thực hiện trò chơi tic-tac-toe dựa trên văn bản.



#include
#include
#include
#include
#include
sử dụng không gian tên tiêu chuẩn ;

typedef cấu trúc {
int * hàng ngang ;
} Danh sách thắng ;


lớp học Người chơi {
riêng tư :
tên chuỗi ;
int điểm ;
công cộng :
Người chơi ( ) : Người chơi { '' } { }
Người chơi ( chuỗi n ) : điểm { 0 } , tên { N } { }

trống rỗng thắng ( ) {
// tăng điểm
điểm ++ ;
}
int nhận được điểm ( ) { trở lại cái này - > điểm ; }

chuỗi getName ( ) { trở lại cái này - > tên ; }
} ;

lớp học Trò chơi {
riêng tư :
ký tự Cái bảng [ 9 ] ;
int trống Index [ 9 ] ;
int gameOn, chống lại máy tính ;
int trốngĐếm ;
Danh sách thắng WinList [ số 8 ] ;

trống rỗng bảng hiển thị ( ) {
cout << kết thúc ;
cout << '   |   |   ' << kết thúc ;
cout << ' ' << Cái bảng [ 0 ] << ' | ' << Cái bảng [ 1 ] << ' | ' << Cái bảng [ 2 ] << kết thúc ;
cout << '   |   |   ' << kết thúc ;
cout << '----------' << kết thúc ;
cout << '   |   |   ' << kết thúc ;
cout << ' ' << Cái bảng [ 3 ] << ' | ' << Cái bảng [ 4 ] << ' | ' << Cái bảng [ 5 ] << kết thúc ;
cout << '   |   |   ' << kết thúc ;
cout << '----------' << kết thúc ;
cout << '   |   |   ' << kết thúc ;
cout << ' ' << Cái bảng [ 6 ] << ' | ' << Cái bảng [ 7 ] << ' | ' << Cái bảng [ số 8 ] << kết thúc ;
cout << '   |   |   ' << kết thúc ;
cout << kết thúc ;
}

trống rỗng máy tínhĐầu vào ( ) {
int tư thế ;
tư thế = rand ( ) % 10 ;
nếu như ( trống Index [ tư thế ] == 1 ) {
nếu như ( trốngĐếm < 0 )
trở lại ;
máy tínhĐầu vào ( ) ;
} khác {
cout << 'Máy tính chọn:' << tư thế + 1 << kết thúc ;
trống Index [ tư thế ] = 1 ;
trốngĐếm - = 1 ;
Cái bảng [ tư thế ] = 'Ồ' ;
}

}

trống rỗng đầu vào máy nghe nhạc ( Người chơi & người chơi ) {
int tư thế ;
cout << kết thúc ;
cout << ' \t ' << người chơi. lấy tên ( ) << ' Xoay: ' ;
cout << ' \t Nhập vị trí ' <> tư thế ;
tư thế - = 1 ;
nếu như ( trống Index [ tư thế ] == 1 ) {
cout << '-----Vị trí không trống-------' << kết thúc ;
đầu vào máy nghe nhạc ( người chơi ) ;
} khác {
trống Index [ tư thế ] = 1 ;
trốngĐếm - = 1 ;
người chơi. lấy tên ( ) . so sánh ( 'Người chơi tôi' ) == 0 ? Cái bảng [ tư thế ] = 'X' : Cái bảng [ tư thế ] = 'Ồ' ;
}

}

trống rỗng kiểm tra Win ( Người chơi & p1,Người chơi & p2 ) {
int tôi, j, k ;
bool lá cờ = SAI ;
ký tự biểu tượng đầu tiên ;
( Tôi = 0 ; Tôi < số 8 ; Tôi ++ ) {
biểu tượng đầu tiên = Cái bảng [ danh sách thắng [ Tôi ] . hàng ngang [ 0 ] ] ;

nếu như ( ( biểu tượng đầu tiên ! = 'X' ) && ( biểu tượng đầu tiên ! = 'Ồ' ) ) {
lá cờ = SAI ;
Tiếp tục ;
}
lá cờ = ĐÚNG VẬY ;
( j = 0 ; j < 3 ; j ++ ) {
nếu như ( biểu tượng đầu tiên ! = Cái bảng [ danh sách thắng [ Tôi ] . hàng ngang [ j ] ] ) {
lá cờ = SAI ;
phá vỡ ;
}
}
nếu như ( lá cờ ) {
trò chơiBật = 0 ;
nếu như ( biểu tượng đầu tiên == 'X' ) {
cout << '--------------' << kết thúc ;
cout << ' \t Người chơi TÔI THẮNG' << kết thúc ;
cout << '--------------' << kết thúc ;
p1. thắng ( ) ;
} khác {
p2. thắng ( ) ;
nếu như ( chống lại máy tính ) {
cout << '--------------' << kết thúc ;
cout << ' \t Máy tính THẮNG' << kết thúc ;
cout << '--------------' << kết thúc ;
} khác {
cout << '--------------' << kết thúc ;
cout << ' \t Người chơi II THẮNG' << kết thúc ;
cout << '--------------' < 0 ) && ( trò chơiBật ! = 0 ) ) {

nếu như ( chống lại máy tính )
tay == 1 ? máy tínhĐầu vào ( ) : đầu vào máy nghe nhạc ( p2 ) ;
khác
tay == 1 ? đầu vào máy nghe nhạc ( p1 ) : đầu vào máy nghe nhạc ( p2 ) ;
tay = ! tay ;
bảng hiển thị ( ) ;
kiểm tra Win ( p1,p2 ) ;
}
nếu như ( trốngĐếm <= 0 ) {
cout << '      --------------' << kết thúc ;
cout << ' \t Không có NGƯỜI CHIẾN THẮNG' << kết thúc ;
cout << '      --------------' << kết thúc ;
}
cout << kết thúc ;
cout <> tái đấu ;
nếu như ( ( tái đấu == 'VÀ' ) || ( tái đấu == 'Và' ) ) {
nhiệt ( ) ;
chơi ( p1,p2 ) ;
}

}
trống rỗng điểm hiển thị ( Người chơi & p1, Người chơi & p2 ) {
cout << kết thúc ;
cout << ' \t ĐIỂM: \t ' ;
nếu như ( chống lại máy tính )
cout << 'Người chơi tôi:' << p1. nhận được điểm ( ) << ' \t Máy tính: ' << p2. nhận được điểm ( ) << kết thúc ;
khác
cout << 'Người chơi tôi:' << p1. nhận được điểm ( ) << ' \t Người chơi II: ' << p2. nhận được điểm ( ) << kết thúc ;
}

công cộng :
Trò chơi ( ) : trốngĐếm { 0 } , trò chơiOn { 1 } , chống lại máy tính { 0 } {
nhiệt ( ) ;
danh sách thắng [ 0 ] . hàng ngang = mới int [ 3 ] { 0 , 1 , 2 } ;
danh sách thắng [ 1 ] . hàng ngang = mới int [ 3 ] { 3 , 4 , 5 } ;
danh sách thắng [ 2 ] . hàng ngang = mới int [ 3 ] { 6 , 7 , số 8 } ;
danh sách thắng [ 3 ] . hàng ngang = mới int [ 3 ] { 0 , 3 , 6 } ;
danh sách thắng [ 4 ] . hàng ngang = mới int [ 3 ] { 1 , 4 , 7 } ;
danh sách thắng [ 5 ] . hàng ngang = mới int [ 3 ] { 2 , 5 , số 8 } ;
danh sách thắng [ 6 ] . hàng ngang = mới int [ 3 ] { 0 , 4 , số 8 } ;
danh sách thắng [ 7 ] . hàng ngang = mới int [ 3 ] { 2 , 4 , 6 } ;
}

trống rỗng nhiệt ( ) {
trò chơiBật = 1 ;

trốngĐếm = 0 ;
mảnh vụn ( thời gian ( 0 ) ) ;
( kích thước_t Tôi = 0 ; Tôi < 10 ; Tôi ++ ) {
trống Index [ Tôi ] = 0 ;
Cái bảng [ Tôi ] = ( Tôi + 1 ) + '0' ;
trốngĐếm ++ ;
}
trốngĐếm -- ;
}

trống rỗng onePlayerGame ( ) {
//Tạo trình phát
Người chơi p ( 'Người chơi tôi' ) ;
Người chơi c ( 'Máy tính' ) ;
cout << '       --------------' << kết thúc ;
cout << ' \t Người chơi I: X \t Máy tính: Ô' << kết thúc ;
cout << '       --------------' << kết thúc ;
cout << kết thúc ;
chống lại máy tính = 1 ;
chơi ( c,p ) ;

}

trống rỗng twoPlayerGame ( ) {
//Tạo trình phát
Người chơi p ( 'Người chơi tôi' ) ;
Người chơi c ( 'Người chơi II' ) ;
cout << '       --------------' << kết thúc ;
cout << ' \t Người chơi I: X \t Người chơi II: O' << kết thúc ;
cout << '       --------------' << kết thúc ;
cout << kết thúc ;
chống lại máy tính = 0 ;
chơi ( c,p ) ;
}
} ;

int chủ yếu ( )
{
int ch ;

trong khi ( 1 ) {
cout << ' ----------THỰC ĐƠN----------' << kết thúc ;
cout << ' \t 1. Trò chơi 1 người chơi' << kết thúc ;
cout << ' \t 2. Trò chơi 2 người chơi' << kết thúc ;
cout << ' \t 3. Để thoát ' << kết thúc ;
cout << '      ----------' << kết thúc ;
cout << kết thúc ;
cout << ' \t Chọn một tùy chọn' <> ch ;
công tắc ( ch ) {
trường hợp 1 : {
Trò chơi * trò chơi = mới Trò chơi ;
trò chơi - > nhiệt ( ) ;
trò chơi - > onePlayerGame ( ) ;
}
phá vỡ ;
trường hợp 2 : {
Trò chơi * trò chơi = mới Trò chơi ;
trò chơi - > nhiệt ( ) ;
trò chơi - > twoPlayerGame ( ) ;
}
phá vỡ ;
trường hợp 3 :
trở lại 0 ;
mặc định :
cout << 'Rất tiếc Tùy chọn không hợp lệ! THỬ LẠI' ;
}

}
trở lại 0 ;
}

Đây là mã hoàn chỉnh để thực hiện trò chơi tic-tac-toe, có thể chơi ở hai chế độ, với máy tính hoặc với người khác. Đây là một mã đa năng, bao gồm tất cả các lệnh có thể. Khi người dùng nhập một vị trí đã được lấp đầy, nó sẽ không ghi đè lên vị trí này và coi việc di chuyển này không hợp lệ.

Cho đến bây giờ, người chơi đã chọn ô đầu tiên và ở lượt tiếp theo, máy tính sẽ đánh dấu ô thứ sáu:

Cả hai người chơi đã chọn hai ô cho đến bây giờ và ở lượt tiếp theo, người chơi tôi chọn ô thứ bảy dẫn đến việc tạo ra một mẫu dọc liên tiếp:

Người dùng chọn sử dụng máy tính để chơi trò chơi nên sau khi thực hiện ba nước đi, người dùng thắng từ máy tính và một điểm được cộng vào hồ sơ của người chơi 1. Sau khi trận đầu tiên kết thúc, trình biên dịch sẽ yêu cầu trận tái đấu. Người dùng quyết định từ các tùy chọn và chương trình sẽ quay lại phần chính. Sau khi chọn tùy chọn thứ ba, trình biên dịch sẽ thực thi mã.

Phần kết luận

Trò chơi dựa trên văn bản dựa vào các ký tự văn bản và giao diện dòng lệnh để tương tác với người chơi. Chúng không có hình ảnh đồ họa, âm thanh hoặc hình ảnh động. Người dùng nhập lệnh thông qua cửa sổ giao diện điều khiển. Trò chơi tic-tac-toe dựa trên văn bản thân thiện với người dùng được xây dựng bằng C++. Nó sử dụng các lệnh khác nhau để tạo một trò chơi có thể chơi bằng máy tính hoặc một người chơi khác.