무기 강화

우리나라 ‘리니지’라는 게임의 아이템(무기)인 ‘진명황의 집행검’은 강화 정도에 따라 현금 몇 천만원 이상의 가치를 지닌다고 한다. 도박이 얼마나 위험한지 미리 체험해보자! 다음 조건에 맞추어 결과화면과 같이 출력이 되도록 프로그램을 작성하십시오.

조건

  • 입력 받는 값은 문자(char)형이며, ‘Y’ 또는 ‘N’ 및 그 외의 값으로 지정하여, 조건 연산을 한다.
  • ‘LEVEL’이라는 상수 값을 #define을 통해 선언하며, 이 값이 초기 강화도가 된다. 예를 들어, LEVEL값이 5라면, 초기 강화도를 (+5)한다.
  • 성공 확률은 백분율의 정수이며, 100.0 / (LEVEL + 1) / 2)수식 값으로 초기화 한다.
  • 확률 연산은, stdlib.h 및 time.h 헤더의 srand() 함수와 rand() 함수를 사용하여 1~100 사이의 임의의 난수를 발생시켜, 이 난수 값이 성공 확률의 값보다 작거나 같을 경우, ‘성공’ 해당하고, 보다 클 경우 ‘실패’에 해당한다. 이의 구분과 이후 내용은, 조건 연산을 통해 출력시킨다.

입력 예

Y
N

출력 예

“[SYSTEM] 강화 성공! [가방] 진명황의 집행검…”
“[SYSTEM] 강화 실패! [가방] 아무것도 없습니다…”

image

Source

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define LEVEL 5

int main(void) {
	srand(time(NULL));

	char order = 'A'; //입력값
	float p = 100.0 / ((LEVEL + 1) / 2); //성공확률
	int r = (rand() % 100 + 1); //랜덤확률

	printf("[가방]\n진명황의 집행검(+%d), 공격력: 5(+%d)\n\n", LEVEL, LEVEL * 2);
	printf("[SYSTEM] 강화하시겠습니까? 성공확률: %f)\n(Y/N or Other keys) > ", p);
	scanf("%c", &order);
	(order == 'Y') ? ((r <= p) ? printf("[SYSTEM] 강화 성공!\t// r: %d\n\n[가방]\n진명황의 집행검(+%d), 공격력: 5(+%d)\n\n", r, LEVEL + 1, (LEVEL + 1) * 2)
		: printf("[SYSTEM] 강화 실패!\t// r: %d\n\n[가방]\n아무것도 없습니다.\n\n", r))
		: printf("[가방]\n진명황의 집행검(+%d), 공격력: 5(+%d)\n\n", LEVEL, LEVEL * 2);


	return 0;
}

태그:

카테고리:

업데이트: