0. 랜덤(rand)
rand(); // 0 ~ 32767
rand를 여러번 실행해도 동일한 결과가 나온다. 따라서 srand를 사용하여 시드 값을 지정한다.
srand(time(0)); // 시드 설정 - 시간에 따라 다르게
1. switch-case를 사용
랜덤 값을 3으로 나눈 나머지를 구해서 0, 1, 2를 추출한다.
int main()
{
srand(time(0));
const int PAPER = 3;
const int ROCK = 2;
const int SCISSORS = 1;
int input;
while (true)
{
cout << "가위(1) 바위(2) 보(3)를 골라주세요." << endl;
cin >> input;
int value = 1 + (rand() % 3);
switch (input)
{
case ROCK:
cout << "바위를 냈습니다. " << endl;
if (value == ROCK)
cout << "컴퓨터가 바위를 내어 비겼습니다." << endl << endl;
else if (value == SCISSORS)
cout << "컴퓨터가 가위를 내어 내가 이겼습니다." << endl << endl;
else
cout << "컴퓨터가 보를 내어 내가 졌습니다." << endl << endl;
break;
case PAPER:
cout << "보를 냈습니다." << endl;
if (value == PAPER)
cout << "컴퓨터가 보를 내어 비겼습니다." << endl << endl;
else if (value == ROCK)
cout << "컴퓨터가 바위를 내어 내가 이겼습니다." << endl << endl;
else
cout << "컴퓨터가 가위를 내어 내가 졌습니다." << endl << endl;
break;
case SCISSORS:
cout << "가위를 냈습니다." << endl;
if (value == SCISSORS)
cout << "컴퓨터가 가위를 내어 비겼습니다." << endl << endl;
else if (value == PAPER)
cout << "컴퓨터가 바위를 내어 내가 이겼습니다." << endl << endl;
else
cout << "컴퓨터가 보를 내어 내가 졌습니다." << endl << endl;
break;
default:
cout << "잘못 입력하셨습니다." << endl;
}
}
}
2. 승률 계산하기
#include <iostream>
using namespace std;
int main() {
srand(time(0));
const int PAPER = 3;
const int ROCK = 2;
const int SCISSORS = 1;
int input;
int win = 0;
int round = 0;
while (true) {
if (round == 0) {
cout << "가위(1) 바위(2) 보(3)를 골라주세요." << endl << "현재 승률 : 없음" << endl;
}
else {
int winrate = (win * 100) / round ;
cout << "가위(1) 바위(2) 보(3)를 골라주세요." << endl << "현재 승률 : " << winrate << endl;
}
cin >> input;
int value = 1 + (rand() % 3);
switch (input) {
case ROCK:
cout << "바위를 냈습니다. " << endl;
if (value == ROCK) {
cout << "컴퓨터가 바위를 내어 비겼습니다." << endl << endl;
}
else if (value == SCISSORS) {
cout << "컴퓨터가 가위를 내어 내가 이겼습니다." << endl << endl;
win++;
round++;
}
else {
cout << "컴퓨터가 보를 내어 내가 졌습니다." << endl << endl;
round++;
}
break;
case PAPER:
cout << "보를 냈습니다." << endl;
if (value == PAPER) {
cout << "컴퓨터가 보를 내어 비겼습니다." << endl << endl;
}
else if (value == ROCK) {
cout << "컴퓨터가 바위를 내어 내가 이겼습니다." << endl << endl;
win++;
round++;
}
else {
cout << "컴퓨터가 가위를 내어 내가 졌습니다." << endl << endl;
round++;
}
break;
case SCISSORS:
cout << "가위를 냈습니다." << endl;
if (value == SCISSORS) {
cout << "컴퓨터가 가위를 내어 비겼습니다." << endl << endl;
}
else if (value == PAPER) {
cout << "컴퓨터가 보를 내어 내가 이겼습니다." << endl << endl;
round++;
win++;
}
else {
cout << "컴퓨터가 바위를 내어 내가 졌습니다." << endl << endl;
round++;
}
break;
default:
cout << "잘못 입력하셨습니다." << endl;
}
}
}
승률 계산 시 나눗셈을 계산할 때, 100을 분자에 먼저 곱해주면 정상적으로 값을 구할 수 있다.
또는 나누는 수나 나눠지는 수를 float으로 생성해도 된다.
'기초 C++ 스터디' 카테고리의 다른 글
3-1. 함수(Function) (0) | 2023.05.09 |
---|---|
2-5. 열거형(enum) (0) | 2023.05.04 |
2-2. 반복문(For, While) (0) | 2023.05.04 |
2-1. 분기문(If) (0) | 2023.05.04 |
1-8. 데이터에 관한 여러가지 팁 (0) | 2023.05.02 |