[c++] 타이머를 이용한 끝말잇기 게임 만들기

정제철·2023년 4월 9일
0

[포스코x코딩온]

목록 보기
2/16
post-thumbnail

타이머를 이용한 끝말잇기 게임 만들기

이번에는 프로젝트 과제로 나온 끝말잇기 게임을 만들어 봤다.

< 규칙 >
1. 제한 시간 30초 동안 플레이어는 끝말잇기 규칙에 따라 단어를 입력
2. 제한 시간이 종료되면 게임을 종료 시키고, 입력한 단어의 개수를 출력

타이머를 통해 30초가 지났을 경우에 게임이 종료되도록 한다.
입력받은 단어의 마지막 알파벳과 입력되어있던 단어의 마지막 알파벳을 비교하여 다를 경우 "마지막 알파벳을 다시 확인해주세요."라는 문구와 함께 다시 입력하도록 한다.

타이머를 사용하기 위해서 관련 함수에 대해서 배웠다.
시작 시간을 측정하고 종료 시간을 측정하여 두 값의 차이를 '초'로 환산하여 나타내주는 logic을 가지고 있다.

clock_t startTime = clock(); //시작 시간
clock_t endTime = clock(); //종료 시간
int timer = (endTime - startTime) / CLOCKS_PER_SEC; //시간의 차

실행화면

남은 시간은 '30 - timer'을 사용하여 단어 입력시마다 출력해주어서 공지해주었고, 30초가 지날경우 자동으로 종료되고, 제시어를 제외한 입력한 단어 수를 카운트하여 입력한 단어 개수를 출력해주었다. 제시어가 출력 단어에 속할지 안 속할지를 고민해봤지만 제외하는 것으로 결정하였다.

전체 코드

#include <iostream>
#include<cstdlib>
#include <ctime>

using namespace std;

int main()
{
	string input, output; //입력값과 기존값
	int timer = 0; //타이머
	int count = 0; //성공횟수 class를 쓴다면 static으로!
	string name_in; //휴먼의 닉네임
	cout << "***************************************" << endl;
	cout << " 30초간 끝말잇기 게임하기 " << endl;
	cout << "▶휴먼의 닉네임을 입력하시오. : ";
	cin >> name_in;
	cout << "**************************************" << endl;

	cout << "▶시작 제시어를 입력하세요 : ";
	cin >> output;
	cout << "▶게임 시작!! ";

	clock_t startTime = clock(); //시작 시간

	while (1)
	{

		int output_size = output.size();
		cout << output << endl;

		cout << "▶다음 단어를 입력하세요 : ";
		cin >> input;

		clock_t endTime = clock(); //종료 시간
		int timer = (endTime - startTime) / CLOCKS_PER_SEC; //시간의 차

		if (timer > 30)
		{
			cout << endl << "▶30초가 지났습니다 게임 종료!!" << endl;
			cout << "총 입력한 단어 개수 : " << count << endl;
			break;
		}
		else if (input[0] == output[output_size - 1])
		{
			output += " -> " + input;
			count++;
		}
		else
		{
			cout << "마지막 알파벳를 다시 확인해주세요. \n";
		}
		cout << "남은 시간 : " << 30 - timer << endl << endl; //남은 시간 출력
	}
	return 0;
}
profile
성공의 반대는 실패가 아닌 도전하지 않는 것이다.

0개의 댓글