반응형
지금까지 배운 내용을 가지고 간단한 게임을 만들어보았습니다.
규칙
- 중복되지 않는 0~9 사이의 수를 SIZE의 수만큼 가져옴 - 아래 코드의 SIZE의 값은 3
- 사용자가 SIZE개의 정수를 입력한 후
- 랜덤으로 설정된 수와 위치까지 맞으면 strike
- 수는 맞았으나 위치가 다르면 ball
- 맞추지 못하였으면 out
예시
SIZE == 3
컴퓨터가 랜덤으로 가져온 수: 726
입력 1: 123 -> strike: 1, ball: 0, out: 2
입력 2: 267 -> strike: 0, ball: 3, out: 0
입력 3: 726 -> strike: 3, ball: 0, out: 0
--게임 종료 --
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 3
int main (void)
{
int answer[SIZE]; //정답 저장
int user[SIZE]; //사용자가 입력한 답안 저장
int i, j, c = 0;
int strike = 0, ball = 0, out = SIZE; //점수판
srand((unsigned int)time(NULL)); //랜덤 함수 계속 중복되지 않도록
for (i = 0; i < SIZE; i++) //answer[SIZE]에 랜덤 값 저장하기
{
answer[i] = rand() % 9; //0 ~ 9의 랜덤한 자연수 뽑기
for (j = 0; j < i; j++)
{
if (answer[j] == answer[i]) //중복된 값 있으면
answer[i] = rand() % 9; //다시뽑기
}
}
do
{
strike = 0, ball = 0; out = SIZE; //점수판 초기화
printf("input %d num: ", SIZE);
for (i = 0; i < SIZE; i++)
scanf("%d", &user[i]); //user[SIZE]에 사용자 값 입력
for (i = 0; i < SIZE; i++) //컴퓨터가 생성한 값과 비교
{
for(j = 0; j < SIZE; j++)
{
if (answer[i] == user[j]) //같은 값이 있을 때
{
if (i == j) //위치까지 같다면
{
strike += 1; //strike는 1증가
out -= 1; //out은 1 감소
}
else //숫자만 같다면
{
ball += 1; //ball은 1증가
out -= 1; //out는 1감소
}
}
}
}
c++; //시도한 횟수 증가
printf("<result %d> strike:%d, ball: %d, out: %d\n\n",c ,strike, ball, out);
}
while(strike != SIZE); //strike == SIZE이면 종료
printf("success!\n"); //success! 출력
}
반응형
'Language > c' 카테고리의 다른 글
[c언어 복습] 04. 상수와 기본 자료형-1 (0) | 2020.07.07 |
---|---|
[c언어 복습] 03. 비트 연산자 (0) | 2020.07.03 |
[c언어 복습] 02-2. scanf 함수 (0) | 2020.06.30 |
[c언어 복습] 02-1. 변수와 연산자 (0) | 2020.06.30 |
[c언어 복습] 01-2. 주석과 printf 함수 (0) | 2020.06.30 |