1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <time.h> //time 사용을 위한 헤더파일
 
int main(int argc, const char * argv[]) {
    int human, computer, option, totalgame = 0, hw = 0, cw = 0, hl = 0, cl = 0, hh = 0, cc = 0;
    srand(time(NULL)); //매번 다른 난수 발생을 위해 시드값 사용 *time을 이용해 시간을 시드값으로 사용
    do { // 게임을 한번 시작 후 종료 트리거 실행을 위해 do while문 사용
        option = 0// 2,147,483,648 이상 입력시 무한루프에 빠지는데 0 초기화값을 주면 루프돌지 않고 종료됨
        std::cout << "계속 할꺼면 1 입력 (0 입력시 종료)";
        std::cin >> option; // 0 입력시 종료하고 그 외 숫자, 문자 입력시 게임 시작
        human = rand() % 6 + 1// 인간 1부터 6까지 난수 발생 후 저장
        computer = rand() % 6 + 1// 컴퓨터 1부터 6까지 난수 발생 후 저장
        if (human>computer) {
            std::cout << human << ":" << computer << " 이세돌 승\n";
            hw += 1, cl += 1// hw - 인간 승, cl - 컴퓨터 배패
        }
        else if (computer>human) {
            std::cout << human << ":" << computer << " 알파고 승\n";
            cw += 1, hl += 1// cw - 컴퓨터 승, hl - 인간 패배
        }
        else {
            std::cout << human << ":" << computer << " 무승부\n";
            hh += 1, cc += 1// hh, cc - 무승부
        }
        totalgame += 1// 총 게임수 계산
    } while (option != 0); // 0 입력시 종료
    std::cout.precision(3); // 승률 소수점 세자리 고정 
    std::cout << "\n이세돌 승:" << hw << " 패:" << hl << " 무:" << hh << " 승률:" << (double)hw / (hl + hh) << "\n";
    std::cout << "\n알파고 승:" << cw << " 패:" << cl << " 무:" << cc << " 승률:" << (double)cw / (cl + cc) << "\n";
    std::cout << "\n총 " << totalgame << "판함\n\n";
    return 0;
}
cs


열심히 주석을 달아놨으니 이해가 안되시면 참고하세요...


주사위 난수출력을 위해 rand() 함수를 사용하는데 매번 다른 난수 출력을 위해선 srand() 함수를 추가해야 합니다.


만약 srand() 함수를 사용하지 않는다면 프로그램 종료 후 재실행시 매번 같은 난수가 출력됩니다.

+ Recent posts