728x90
제한시간이 있는 끝말잇기 게임을 구현해 보자.
[ 규칙 ]
▷ 제한시간 30초 동안 플레이어는 끝말잇기 규칙에 따라 단어를 입력
▷ 제한시간이 종료되면 게임을 종료시키고, 입력 한 단어의 개수를 출력
▷ 단, 한번 입력된 단어는 입력하지 못하게 하기 (중복체크)
제한시간 측정에 관해서는
시작시간과 종료시간의 시간차를 이용하여 초로 환산하여 계산해 주었다.
clock_t startTime = clock(); // 시작시간
clock_t endTime = clock(); // 종료시간
// 중략
// 시간차를 초로 환산하여 제한시간 30초 비교조건
if ((endTime - startTime) / CLOCKS_PER_SEC >= 30) {
// ...
실행코드
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <algorithm>
// 타임어택 끝말잇기 게임
using std::cout;
using std::cin;
using std::endl;
using std::string;
int main() {
int check[100] = { 0, };
int arySize = 0, nextWdSize = 0;
bool chkSame;
string beforeWord, nextWord;
std::vector<string> wordArray[100];
clock_t startTime = clock();
cout << " § 타임어택(30초) 끝말잇기 게임 STRAT § " << endl;
cout << " => 시작단어 : ";
wordArray->push_back("apple");
while (1) {
chkSame = false;
arySize = wordArray->size();
for (int i = 0; i < arySize; i++) {
cout << wordArray->at(i);
if (i == wordArray->size() - 1) {
cout << endl;
}
else {
cout << "->";
}
}
cout << "\n다음 단어를 입력하세요 : ";
cin >> nextWord;
// 제한시간 check !!
clock_t endTime = clock();
// 제한시간 30초
if ((endTime - startTime) / CLOCKS_PER_SEC >= 30) {
cout << "타임오버 !" << endl;
break;
}
arySize = wordArray->size();
beforeWord = wordArray->at(arySize - 1);
int size = beforeWord.size();
// 이전단어 마지막 문자와 다음단어 처음 문자 일치 여부 확인.
if (beforeWord[size - 1] == nextWord[0]) {
//중복체크
for (int i = 0; i < arySize; i++) {
if (nextWord == wordArray->at(i)) {
chkSame = true;
}
}
if (chkSame) {
cout << "중복된 단어입니다." << endl;
}
else {
wordArray->push_back(nextWord);
}
}
else {
cout << "잘못된 입력입니다." << endl;
}
}
cout << "\n게임 종료 !" << endl;
cout << "총 입력한 단어 개수 : " << wordArray->size() << endl;
}
실행결과
보완점
: 소켓 통신방법을 응용해서 혼자가 아닌 상대방과 2인으로 할 수 있는 게임으로도 구현해보고 싶다.
: 시작단어를 사용자가 지정해서 시작해도 되는 방법으로도 구현해 볼 수 있겠다.
728x90
반응형
'BE > C++' 카테고리의 다른 글
[C++] 숫자 야구 게임 ( 랜덤숫자 3개로 Strike, Ball ) (1) | 2023.11.09 |
---|---|
[C++] 마방진 만들기 (1) | 2023.11.09 |
[C++] 배열을 이용한 로또당첨 숫자 맞추기 (2) | 2023.10.26 |
[C++] 랜덤함수를 이용한 베스킨라빈스31 게임 (0) | 2023.10.26 |
[C++] dynamic_cast (타입 캐스트 연산자) (0) | 2023.09.15 |
댓글