야구 게임
- 프로그래밍/C/C++
- 2018. 7. 20.
야구 게임
이번에는 C언어로 야구 게임을 만들어 볼 것이다.
0~9까지의 서로 같지 않은 난수 3개를 발생시켜서 그 숫자를 순서대로 맞추는 야구 게임 프로그램이다.
난수 3개가 각자 서로 다를때 까지 난수를 발생 시킬것이다.
한번 만들어보자.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <stdio.h> #include <time.h> #include <stdlib.h> void* memset(void* dest, int fillChar, unsigned int count); main() { int com[3] = { 0, }, gamer[3] = { 0, }, guess[10] = { 0, }; int count = 1, strike, ball; char yesno; srand(time(NULL)); puts("야구 게임을 시작합니다."); while (1) { com[0] = rand() % 10; com[1] = rand() % 10; com[2] = rand() % 10; if (com[0] == com[1] || com[0] == com[2] || com[1] == com[2]) continue; puts("숫자 0~9를 공백으로 분리하여 3개 입력하고 엔터키를 치세요!!"); memset(guess, 0, sizeof(guess)); while (1) { strike = 0, ball = 0; for (int i = 0; i < 10; i++) printf("%d ", guess[i]); printf("\n3개의 숫자[0~9]를 입력하세요 : "); scanf_s("%d %d %d", &gamer[0], &gamer[1], &gamer[2]); if (com[0] == gamer[0]) strike++; else if (com[0] == gamer[1] || com[0] == gamer[2]) ball++; if (com[1] == gamer[1]) strike++; else if (com[1] == gamer[0] || com[1] == gamer[2]) ball++; if (com[2] == gamer[2]) strike++; else if (com[2] == gamer[0] || com[2] == gamer[1]) ball++; if (gamer[0] > 9 || gamer[1] > 9 || gamer[2] > 9) { puts("입력한 숫자가 너무 큼니다. 0~9를 입력하세요"); continue; } guess[gamer[0]] = 1, guess[gamer[1]] = 1, guess[gamer[2]] = 1; printf("\n[%2d회] %d 스트라이크 %d 볼 \n\n", count, strike, ball); if (strike >= 3) break; count++; } getchar(); printf("게임을 계속 하시겠습니까 (Y/N)? "); scanf_s("%c", &yesno, sizeof(yesno)); if (yesno == 'N' || yesno == 'n') break; } } void* memset(void *dest, int fillChar, unsigned int count) { for (size_t i = 0; i < count; i++) *((char*)dest + i) = fillChar; return dest; } | cs |
11행에서 난수를 초기화 해준다.
14~16행에서 0~9까지의 난수를 발생시켜서 변수에 넣어준다.
18행에서 난수 3개가 서로 다른 값이 될 때까지 난수를 계속 발생 시킨다.
20행에서 우리가 입력한 숫자를 모두 0으로 초기화 해준다.
28~33행에서 com[0] == gmaer[0]가 같으면 스트라이크++을 해준다.
42행에서 스트라이크가 3보다 크거나 같으면 두번째 while문을 탈출한다.
45행에서 getchar()로 버퍼에 있는 값 하나를 입력받았다. getchar()로 버퍼에 있는 값을 안비워주면 '\0'키가 자동으로 입력어 되어서
47행에 문제를 준다.
2018/07/19 - [프로그래밍/C] - 가위바위보 게임
2018/07/10 - [프로그래밍/C] - 도서관리 프로그램 3번째 완성본
2018/07/04 - [프로그래밍/C] - 도서관리 프로그램 2번째 완성본
2018/06/28 - [프로그래밍/C] - 도서관리 프로그램