C++로 기본 텍스트 기반 게임을 만드는 방법

C Lo Gibon Tegseuteu Giban Geim Eul Mandeuneun Bangbeob



텍스트 기반 게임은 플레이어와의 상호 작용을 위해 텍스트 문자와 명령줄 인터페이스를 사용합니다. 그래픽 이미지, 사운드 또는 애니메이션이 없습니다. 사용자는 콘솔 창을 통해 명령을 입력합니다.

C++로 기본 텍스트 기반 게임을 만드는 방법

C++의 텍스트 기반 게임을 통해 플레이어는 콘솔 창을 통해 명령을 입력할 수 있으며 프로그램은 플레이어의 동작을 처리합니다. 여기서는 사용자가 두 가지 옵션으로 플레이할 수 있는 텍스트 기반 tic-tac-toe 게임을 만들었습니다. 사용자는 C++ 컴파일러나 동료와 함께 플레이할 수 있습니다. 이 게임에는 승리한 플레이어의 점수를 계속 합산하는 기능이 있습니다. 첫 번째 게임의 결과가 발표된 후 재대결 옵션을 사용할 수 있습니다.

게임 승리를 위한 규칙

두 명의 플레이어가 틱택토 게임을 하며 3x3 격자의 9개 사용 가능한 공간 중 하나에 X와 0을 교대로 배치합니다. 게임은 수직, 수평, 대각선 방향으로 연속 마크 3개를 먼저 획득한 플레이어가 승리합니다. 각 플레이어는 현명하게 생각하고 다른 플레이어의 다음 움직임을 미리 살펴봐야 합니다.







텍스트 기반 tic-tac-toe 게임을 디자인하기 위한 코드는 기능에 따라 나누어진 다양한 섹션으로 구성되어 있습니다. 첫 번째 섹션에서 사용자는 컴퓨터와 함께 플레이할지 아니면 다른 사람과 플레이할지 결정합니다. 이득 모드를 결정한 후 프로그램은 사용자에게 입력을 요청합니다. 두 플레이어 모두 차례로 입력을 입력합니다.



//플레이어로부터 입력을 받습니다.
무효의 플레이어 입력 ( 플레이어 & 플레이어 ) {
정수 포스 ;
시합 << ;
시합 << ' \티 ' << 플레이어. getName ( ) << ' 회전하다: ' ;
시합 << ' \티 위치를 입력하십시오 ' <> 포스 ;
포스 - = 1 ;
만약에 ( 빈 인덱스 [ 포스 ] == 1 ) {
시합 << '------위치가 비어 있지 않습니다-------' << ;
플레이어 입력 ( 플레이어 ) ;
} 또 다른 {
빈 인덱스 [ 포스 ] = 1 ;
비어있는 개수 - = 1 ;
플레이어. getName ( ) . 비교하다 ( '플레이어 I' ) == 0 ? 판자 [ 포스 ] = '엑스' : 판자 [ 포스 ] = '영형' ;
}

}

사용자로부터 입력을 받은 후 승리 규칙을 확인합니다. checkWin() 함수에는 플레이어의 승리 여부를 확인하기 위한 두 개의 매개변수 p1과 p2가 있습니다. i, j, k는 루프에 대해 선언된 정수 변수이고 플래그는 승리 조건을 확인하기 위한 부울 함수입니다. 루프는 첫 번째 위치부터 시작하여 9개 위치 모두에 대해 계속 반복됩니다. first_symbol은 0 또는 X일 수 있는 문자입니다. 만약 이것이 사실이라면 가능한 모든 조합이 승리 규칙인지 확인됩니다. 그렇지 않으면 반복자는 다음 위치로 이동하고 가능한 모든 위치가 확인될 때까지 동일한 작업이 계속됩니다. 플래그가 true로 설정되면 승자가 선언되고 프로그램은 다시 선택하도록 요청합니다.



무효의 체크윈 ( 플레이어 & p1,플레이어 & p2 ) {
정수 나,제이,케이 ;
부울 깃발 = 거짓 ;
첫 번째_기호 ;
~을 위한 ( = 0 ; < 8 ; ++ ) {
첫 번째_기호 = 판자 [ 승리 목록 [ ] . [ 0 ] ] ;

만약에 ( ( 첫 번째_기호 ! = '엑스' ) && ( 첫 번째_기호 ! = '영형' ) ) {
깃발 = 거짓 ;
계속하다 ;
}
깃발 = 진실 ;
~을 위한 ( 제이 = 0 ; 제이 < ; 제이 ++ ) {
만약에 ( 첫 번째_기호 ! = 판자 [ 승리 목록 [ ] . [ 제이 ] ] ) {
깃발 = 거짓 ;
부서지다 ;
}
}
만약에 ( 깃발 ) {
게임온 = 0 ;
만약에 ( 첫 번째_기호 == '엑스' ) {
시합 << '------------' << ;
시합 << ' \티 내가 이겼던 선수' << ;
시합 << '------------' << ;
p1. 이겼다 ( ) ;
} 또 다른 {
p2. 이겼다 ( ) ;
만약에 ( 반대컴퓨터 ) {
시합 << '------------' << ;
시합 << ' \티 컴퓨터가 승리했습니다' << ;
시합 << '------------' << ;
} 또 다른 {
시합 << '------------' << ;
시합 << ' \티 플레이어 II가 승리했습니다.' << ;
시합 << '------------' << ;

}
}
디스플레이점수 ( p1,p2 ) ;
부서지다 ;
}

이 코드 부분은 게임 점수를 보여줍니다. 컴퓨터와의 게임인 경우 플레이어 1과 컴퓨터의 점수가 표시되고, 그렇지 않은 경우 플레이어 1과 플레이어 2의 점수가 표시됩니다.

무효의 디스플레이점수 ( 플레이어 & p1, 플레이어 & p2 ) {
시합 << ;
시합 << ' \티 점수: \티 ' ;
만약에 ( 반대컴퓨터 )
시합 << ' 플레이어 I: ' << p1. 점수 얻기 ( ) << ' \티 컴퓨터: ' << p2. 점수 얻기 ( ) << ;
또 다른
시합 << ' 플레이어 I: ' << p1. 점수 얻기 ( ) << ' \티 플레이어 II: ' << p2. 점수 얻기 ( ) << ;
}

2인용 tic-tac-toe 게임을 실행하기 위한 주요 코드입니다. 사용자는 switch Case 문을 사용하여 수행할 다양한 절차 중에서 선택할 수 있습니다. 이 코드는 C++ 컴파일러에서 게임을 플레이하기 위한 사용자 친화적인 인터페이스를 제공하며 사용자가 종료 옵션을 선택할 때까지 코드가 계속 실행됩니다.

정수 기본 ( )
{
정수 채널 ;

~하는 동안 ( 1 ) {
시합 << '      ----------메뉴----------' << ;
시합 << ' \티 1. 1인용 게임' << ;
시합 << ' \티 2. 2인용 게임' << ;
시합 << ' \티 3. 종료하려면 ' << ;
시합 << '      ----------' << ;
시합 << ;
시합 << ' \티 옵션을 선택하세요' <> 채널 ;
스위치 ( 채널 ) {
사례 1 : {
게임 * 게임 = 새로운 게임 ;
게임 - > ( ) ;
게임 - > 원플레이어게임 ( ) ;
}
부서지다 ;
사례 2 : {
게임 * 게임 = 새로운 게임 ;
게임 - > ( ) ;
게임 - > twoPlayer게임 ( ) ;
}
부서지다 ;
사례 :
반품 0 ;
기본 :
시합 << '앗, 잘못된 옵션입니다! 다시 시도해 보세요.' ;
}

}
반품 0 ;
}

텍스트 기반 Tic-Tac-Toc 게임을 위한 완전한 코드

이는 텍스트 기반 tic-tac-toe 게임의 설계 및 실행을 위한 완전한 코드입니다.

#include
#include<목록>
#include
#include<문자열>
#include
사용하여 네임스페이스 성병 ;

형식 정의 구조체 {
정수 * ;
} WinList ;


수업 플레이어 {
사적인 :
문자열 이름 ;
정수 점수 ;
공공의 :
플레이어 ( ) : 플레이어 { '' } { }
플레이어 ( 문자열 n ) : 점수 { 0 } , 이름 { N } { }

무효의 이겼다 ( ) {
//점수 증가
점수 ++ ;
}
정수 점수 얻기 ( ) { 반품 이것 - > 점수 ; }

문자열 getName ( ) { 반품 이것 - > 이름 ; }
} ;

수업 게임 {
사적인 :
판자 [ 9 ] ;
정수 빈 인덱스 [ 9 ] ;
정수 gameOn, 반대컴퓨터 ;
정수 비어있는 개수 ;
윈리스트 윈리스트 [ 8 ] ;

무효의 전광판 ( ) {
시합 << ;
시합 << '   |   |   ' << ;
시합 << ' ' << 판자 [ 0 ] << ' | ' << 판자 [ 1 ] << ' | ' << 판자 [ 2 ] << ;
시합 << '   |   |   ' << ;
시합 << '------------' << ;
시합 << '   |   |   ' << ;
시합 << ' ' << 판자 [ ] << ' | ' << 판자 [ 4 ] << ' | ' << 판자 [ 5 ] << ;
시합 << '   |   |   ' << ;
시합 << '------------' << ;
시합 << '   |   |   ' << ;
시합 << ' ' << 판자 [ 6 ] << ' | ' << 판자 [ 7 ] << ' | ' << 판자 [ 8 ] << ;
시합 << '   |   |   ' << ;
시합 << ;
}

무효의 컴퓨터입력 ( ) {
정수 포스 ;
포스 = 랜드 ( ) % 10 ;
만약에 ( 빈 인덱스 [ 포스 ] == 1 ) {
만약에 ( 비어있는 개수 < 0 )
반품 ;
컴퓨터입력 ( ) ;
} 또 다른 {
시합 << '컴퓨터 선택: ' << 포스 + 1 << ;
빈 인덱스 [ 포스 ] = 1 ;
비어있는 개수 - = 1 ;
판자 [ 포스 ] = '영형' ;
}

}

무효의 플레이어 입력 ( 플레이어 & 플레이어 ) {
정수 포스 ;
시합 << ;
시합 << ' \티 ' << 플레이어. getName ( ) << ' 회전하다: ' ;
시합 << ' \티 위치를 입력하십시오 ' <> 포스 ;
포스 - = 1 ;
만약에 ( 빈 인덱스 [ 포스 ] == 1 ) {
시합 << '------위치가 비어 있지 않습니다-------' << ;
플레이어 입력 ( 플레이어 ) ;
} 또 다른 {
빈 인덱스 [ 포스 ] = 1 ;
비어있는 개수 - = 1 ;
플레이어. getName ( ) . 비교하다 ( '플레이어 I' ) == 0 ? 판자 [ 포스 ] = '엑스' : 판자 [ 포스 ] = '영형' ;
}

}

무효의 체크윈 ( 플레이어 & p1,플레이어 & p2 ) {
정수 나,제이,케이 ;
부울 깃발 = 거짓 ;
첫 번째_기호 ;
~을 위한 ( = 0 ; < 8 ; ++ ) {
첫 번째_기호 = 판자 [ 승리 목록 [ ] . [ 0 ] ] ;

만약에 ( ( 첫 번째_기호 ! = '엑스' ) && ( 첫 번째_기호 ! = '영형' ) ) {
깃발 = 거짓 ;
계속하다 ;
}
깃발 = 진실 ;
~을 위한 ( 제이 = 0 ; 제이 < ; 제이 ++ ) {
만약에 ( 첫 번째_기호 ! = 판자 [ 승리 목록 [ ] . [ 제이 ] ] ) {
깃발 = 거짓 ;
부서지다 ;
}
}
만약에 ( 깃발 ) {
게임온 = 0 ;
만약에 ( 첫 번째_기호 == '엑스' ) {
시합 << '------------' << ;
시합 << ' \티 내가 이겼던 선수' << ;
시합 << '------------' << ;
p1. 이겼다 ( ) ;
} 또 다른 {
p2. 이겼다 ( ) ;
만약에 ( 반대컴퓨터 ) {
시합 << '------------' << ;
시합 << ' \티 컴퓨터가 승리했습니다' << ;
시합 << '------------' << ;
} 또 다른 {
시합 << '------------' << ;
시합 << ' \티 플레이어 II가 승리했습니다.' << ;
시합 << '------------' < 0 ) && ( 게임온 ! = 0 ) ) {

만약에 ( 반대컴퓨터 )
== 1 ? 컴퓨터입력 ( ) : 플레이어 입력 ( p2 ) ;
또 다른
== 1 ? 플레이어 입력 ( p1 ) : 플레이어 입력 ( p2 ) ;
= ! ;
전광판 ( ) ;
체크윈 ( p1,p2 ) ;
}
만약에 ( 비어있는 개수 <= 0 ) {
시합 << '      ------------' << ;
시합 << ' \티 승자는 없어' << ;
시합 << '      ------------' << ;
}
시합 << ;
시합 <> 재대결 ;
만약에 ( ( 재대결 == '그리고' ) || ( 재대결 == '그리고' ) ) {
( ) ;
놀다 ( p1,p2 ) ;
}

}
무효의 디스플레이점수 ( 플레이어 & p1, 플레이어 & p2 ) {
시합 << ;
시합 << ' \티 점수: \티 ' ;
만약에 ( 반대컴퓨터 )
시합 << ' 플레이어 I: ' << p1. 점수 얻기 ( ) << ' \티 컴퓨터: ' << p2. 점수 얻기 ( ) << ;
또 다른
시합 << ' 플레이어 I: ' << p1. 점수 얻기 ( ) << ' \티 플레이어 II: ' << p2. 점수 얻기 ( ) << ;
}

공공의 :
게임 ( ) : 비어있는 개수 { 0 } , 게임온 { 1 } , 반대컴퓨터 { 0 } {
( ) ;
승리 목록 [ 0 ] . = 새로운 정수 [ ] { 0 , 1 , 2 } ;
승리 목록 [ 1 ] . = 새로운 정수 [ ] { , 4 , 5 } ;
승리 목록 [ 2 ] . = 새로운 정수 [ ] { 6 , 7 , 8 } ;
승리 목록 [ ] . = 새로운 정수 [ ] { 0 , , 6 } ;
승리 목록 [ 4 ] . = 새로운 정수 [ ] { 1 , 4 , 7 } ;
승리 목록 [ 5 ] . = 새로운 정수 [ ] { 2 , 5 , 8 } ;
승리 목록 [ 6 ] . = 새로운 정수 [ ] { 0 , 4 , 8 } ;
승리 목록 [ 7 ] . = 새로운 정수 [ ] { 2 , 4 , 6 } ;
}

무효의 ( ) {
게임온 = 1 ;

비어있는 개수 = 0 ;
모래 ( 시간 ( 0 ) ) ;
~을 위한 ( size_t = 0 ; < 10 ; ++ ) {
빈 인덱스 [ ] = 0 ;
판자 [ ] = ( + 1 ) + '0' ;
비어있는 개수 ++ ;
}
비어있는 개수 -- ;
}

무효의 원플레이어게임 ( ) {
//플레이어 생성
플레이어 p ( '플레이어 I' ) ;
플레이어 c ( '컴퓨터' ) ;
시합 << '       ----------' << ;
시합 << ' \티 플레이어 I: X \티 컴퓨터: 오' << ;
시합 << '       ----------' << ;
시합 << ;
반대컴퓨터 = 1 ;
놀다 ( c,p ) ;

}

무효의 twoPlayer게임 ( ) {
//플레이어 생성
플레이어 p ( '플레이어 I' ) ;
플레이어 c ( '플레이어 II' ) ;
시합 << '       ----------' << ;
시합 << ' \티 플레이어 I: X \티 플레이어 II: O' << ;
시합 << '       ----------' << ;
시합 << ;
반대컴퓨터 = 0 ;
놀다 ( c,p ) ;
}
} ;

정수 기본 ( )
{
정수 채널 ;

~하는 동안 ( 1 ) {
시합 << '      ----------메뉴----------' << ;
시합 << ' \티 1. 1인용 게임' << ;
시합 << ' \티 2. 2인용 게임' << ;
시합 << ' \티 3. 종료하려면 ' << ;
시합 << '      ----------' << ;
시합 << ;
시합 << ' \티 옵션을 선택하세요' <> 채널 ;
스위치 ( 채널 ) {
사례 1 : {
게임 * 게임 = 새로운 게임 ;
게임 - > ( ) ;
게임 - > 원플레이어게임 ( ) ;
}
부서지다 ;
사례 2 : {
게임 * 게임 = 새로운 게임 ;
게임 - > ( ) ;
게임 - > twoPlayer게임 ( ) ;
}
부서지다 ;
사례 :
반품 0 ;
기본 :
시합 << '앗, 잘못된 옵션입니다! 다시 시도해 보세요.' ;
}

}
반품 0 ;
}

이것은 컴퓨터나 다른 사람과 함께 두 가지 모드로 플레이할 수 있는 tic-tac-toe 게임 실행을 위한 완전한 코드입니다. 이것은 가능한 모든 명령을 포함하는 다목적 코드입니다. 사용자가 이미 채워진 포지션을 입력하면 이 포지션을 덮어쓰지 않으며 이 이동이 유효하지 않은 것으로 간주됩니다.

지금까지 플레이어 1은 첫 번째 상자를 선택했고 다음 차례에는 컴퓨터가 여섯 번째 상자를 표시했습니다.

두 플레이어 모두 지금까지 두 개의 상자를 선택했으며 다음 차례에는 플레이어 I가 일곱 번째 상자를 선택하여 연속적인 수직 패턴을 생성합니다.

사용자는 게임을 하기 위해 컴퓨터를 사용하기로 선택했기 때문에 세 번의 수를 거친 후에 사용자가 컴퓨터에서 승리하고 플레이어 1의 기록에 1개의 점수가 추가됩니다. 첫 번째 경기가 끝난 후 컴파일러는 재대결을 요청합니다. 사용자는 옵션 중에서 결정하고 프로그램은 메인 섹션으로 돌아갑니다. 옵션 3을 선택한 후 컴파일러는 코드 실행을 시작합니다.

결론

텍스트 기반 게임은 플레이어와의 상호 작용을 위해 텍스트 문자와 명령줄 인터페이스를 사용합니다. 그래픽 이미지, 사운드 또는 애니메이션이 없습니다. 사용자는 콘솔 창을 통해 명령을 입력합니다. 사용자 친화적인 텍스트 기반 tic-tac-toe 게임은 C++를 사용하여 제작되었습니다. 컴퓨터나 다른 동료 플레이어와 함께 플레이할 수 있는 게임을 만들기 위해 다양한 명령을 사용합니다.