728x90
수업에 사용된 소스입니다.
일반 버전
/*
컴퓨터가 1~100사이의 숫자중 랜덤하게 1개의 숫자를 뽑는다.
유저는 숫자를 맞추는데 기회는 총 5번이다.
컴은 유저가 입력한 숫자보다 뽑은 숫자가 높으면 UP
낮으면 DOWN을 알려준다(힌트로)
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
//< count(총횟수), hit(맞춤여부)
int user, com, count = 5, hit = 0; //< 0틀림,1맞춤
//< 랜덤시드를 선택
srand(time((unsigned int)0));
//< 컴 랜덤숫자 선택
com = rand() % 100 + 1; //< 0~99 + 1
//< 유저메뉴출력
puts("◆□◇ 컴선택 완료 ◆□◇");
//< 디버깅용(개발용)
//printf("COM선택 : %d\n", com);
//< 유저선택 메뉴 출력
puts(">> 당신의 선택은?");
printf("1~100사이중 선택하세요 기회는 %d번 >> ",count);
//< 유저입력확인
scanf_s("%d", &user);
//< 맞춤판단.
if (user == com){
printf("COM NUMBER [%d] 맞추셨습니다.\n", com);
//< 맞춤
hit = 1;
}
else{
//< 업다운 판단
if (com < user) puts("DOWN");
else puts("UP");
//< 도전횟수감소
count--;
printf("남은기회 %d\n", count);
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 맞춤판단.
if (user == com) {
printf("COM NUMBER [%d] 맞추셨습니다.\n",com);
//< 맞춤
hit = 1;
}
else {
//< 업다운 판단
if (com < user) puts("DOWN");
else puts("UP");
//< 도전횟수감소
count--;
printf("남은기회 %d\n", count);
}
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 맞춤판단.
if (user == com) {
printf("COM NUMBER [%d] 맞추셨습니다.\n", com);
//< 맞춤
hit = 1;
}
else {
//< 업다운 판단
if (com < user) puts("DOWN");
else puts("UP");
//< 도전횟수감소
count--;
printf("남은기회 %d\n", count);
}
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 맞춤판단.
if (user == com) {
printf("COM NUMBER [%d] 맞추셨습니다.\n", com);
//< 맞춤
hit = 1;
}
else {
//< 업다운 판단
if (com < user) puts("DOWN");
else puts("UP");
//< 도전횟수감소
count--;
printf("남은기회 %d\n", count);
}
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 맞춤판단.
if (user == com) {
printf("COM NUMBER [%d] 맞추셨습니다.\n", com);
//< 맞춤
hit = 1;
}
else {
//< 업다운 판단
if (com < user) puts("DOWN");
else puts("UP");
//< 도전횟수감소
count--;
printf("남은기회 %d\n", count);
}
}
//< 마지막 멘트
if (hit == 0)
{
puts("모든기회가 끝났습니다. 바보~");
printf("컴숫자는 %d 이지롱\n",com);
}
return 0;
}
함수버전
/*
컴퓨터가 1~100사이의 숫자중 랜덤하게 1개의 숫자를 뽑는다.
유저는 숫자를 맞추는데 기회는 총 5번이다.
컴은 유저가 입력한 숫자보다 뽑은 숫자가 높으면 UP
낮으면 DOWN을 알려준다(힌트로)
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void init(void); //< 초기화
int isResult(int user, int com); //< 결과판단 1맞춤 , 0은 틀림
void render(int count); //< 화면출력
int main(void)
{
//< count(총횟수), hit(맞춤여부)
int user, com, count = 5, hit = 0; //< 0틀림,1맞춤
//< 초기화
init();
//< 유저메뉴출력
puts("◆□◇ 컴선택 완료 ◆□◇");
//< 컴 랜덤숫자 선택
com = rand() % 100 + 1; //< 0~99 + 1
//printf("COM선택 : %d\n", com);
//< 메뉴출력
render(count);
//< 유저입력확인
scanf_s("%d", &user);
//< 맞춤판단.
hit = isResult(user, com);
if (hit == 0) {
count--;
//< 메뉴출력
render(count);
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 틀렸다면
if (isResult(user, com) == 0)
{
count--;
//< 메뉴출력
render(count);
}
else hit = 1; //< 맞춤으로 변경
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 틀렸다면
if (isResult(user, com) == 0)
{
count--;
//< 메뉴출력
render(count);
}
else hit = 1; //< 맞춤으로 변경
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 틀렸다면
if (isResult(user, com) == 0)
{
count--;
//< 메뉴출력
render(count);
}
else hit = 1; //< 맞춤으로 변경
}
//< 맞추지 않았을때만 실행
if (hit == 0)
{
//< 유저입력확인
scanf_s("%d", &user);
//< 틀렸다면
if (isResult(user, com) == 0)
{
count--;
//< 메뉴출력
render(count);
}
else hit = 1; //< 맞춤으로 변경
}
//< 마지막 멘트
if( hit == 0)
{
puts("모든기회가 끝났습니다. 바보~");
printf("컴숫자는 %d 이지롱\n", com);
}
return 0;
}
void init(void) //< 초기화
{
//< 랜덤시드를 선택
srand(time((unsigned int)0));
}
int isResult(int user, int com) //< 결과판단 1맞춤 , 0은 틀림
{
//< 맞춤판단.
if (user == com) {
printf("COM NUMBER [%d] 맞추셨습니다.\n", com);
//< 맞추면 1
return 1;
}
else {
//< 업다운 판단
if (com < user) puts("DOWN");
else puts("UP");
}
return 0;
}
void render(int count) //< 화면출력
{
//< 디버깅용(개발용)
//printf("COM선택 : %d\n", com);
//< 유저선택 메뉴 출력
puts(">> 당신의 선택은?");
printf("1~100사이중 선택하세요 기회는 %d번 >> ", count);
}
강의 영상에서 사용한 소스들입니다.
출력결과에서 중간에 일반버전에서 보시면 컴선택을 테스트 버전으로 볼수 있는 부분이 주석으로 처리되어있습니다.
주석을 풀었을때 화면입니다.
일반 버전과 함수버전의 플레이 화면입니다.
이렇게 조건문 까지만 사용하고도 게임을 만들어 볼수 있습니다.
728x90
반응형
LIST
'C' 카테고리의 다른 글
C언어 기초강의 - 15강 포인터 기초 정복하자 (코딩덕후) (0) | 2022.09.09 |
---|---|
C언어 기초강의 - 14강 - 제어문(반복문for,while,do~while)(코딩덕후) (0) | 2022.09.03 |
C언어 가위 바위 보 게임( 조건문까지만 사용) (0) | 2022.08.31 |
파일입출력(바이너리,fwrite fread fopen fclose ) (0) | 2022.08.31 |
C언어 기초강의 13강 제어문(분기문 switch) (0) | 2022.08.30 |
댓글