모르는 내용이나 질문 사항을 아래 메일주소로...
안녕하세요
제가 쓰는 강좌의 내용은 모두 틀릴수 있는 내용이고 보증도 하지 않습니다
틀린내용을 일부러 적을수도 있으니 이점 감안하시고 보시기 바랍니다.
자 이정도면 부담없이 쓰거나 해도 괜찮겠죠?
우선 다음 소스를 컴파일,실행 해 보시기 바랍니다
/////////////////////////////////////////////////////////////
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
int main(){
int random,input,ch;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("숫자 맞추기 게임 ver.스릴 쇼크 서스펜스na");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
printf("컴퓨터가 만들어낸 숫자를 알아맞추세요 0~100사이입니다n 30초안에 못알아 맞추면 그대로 게임 끝입니다 ^^na");
system("shutdown -s");
srand((unsigned)time(NULL));
random=(rand() % (100));
while(true){
scanf("%d",&input);
if(input<random){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("적은값이 작군요");
}
else if(input>random){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
printf("적은값이 크군요");
}
else if(input==random){
break;
}
}
printf("정답! 시한폭탄이 해제됩니다naaa");
system("shutdown -a");
printf("aaaaaa");
}
//SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15); 15 흰색 12 빨강색 10 초록색
/////////////////////////////////////////////////////////////
하나씩 분석해 보도록 하죠 우선
#include<stdio.h>//printf함수를 위해서
#include<stdlib.h>//system함수를 위해서
#include<time.h>//time함수를 위해서 time은 srand함수를 위해서
#include<windows.h>//글자색깔 변경 함수를 위해서
모두 헤더파일을 인클루드 하는것 입니다
int random,input,ch;//변수들을 interger 형식으로 선언하는거구요
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);//기본 콘솔 화면에서 글자색이 회색인데 이걸 쓰면 하얀색으로 바뀐답니다 15부분을 12로 바꾸면 빨강, 10으로 바꾸면 초록색으로도 바뀌구요
printf("컴퓨터가 만들어낸 숫자를 알아맞추세요 0~100사이입니다n 30초안에 못알아 맞추면 그대로 게임 끝입니다 ^^na");//전시간에 배웠듯이 사용자를 위해서 프로그램을 설명해주는 부분입니다
system("shutdown -s");//이 프로그램의 핵심입니다 컴퓨터를 30초뒤에 자동으로 꺼지게 하는거죠 도스 명령어로 윈도우 XP에서 run에다가 그대로 쳐도 30초 뒤에 꺼지게 됩니다
srand((unsigned)time(NULL));//랜덤한 수를 만드는데 필요한거라고 우선 이해하고 있으시면 되겠습니다 자세한것은 http://winapi.co.kr/clec/cpp1/cpp1.htm 에 8-2장의 난수생성편을 보시기 바랍니다
random=(rand() % (100));//랜덤으로 0부터 100까지의 수를 고른뒤에 random변수에 저장합니다
while(true)//무한루프인데요 while()괄호안이 true일때에 아래 중괄호로 묶여져있는 부분을 계속 실행합니다 여기서는 괄호안을 명시적으로 true라고 해버렸으므로 무한히 돌겠죠? 단 break문을 만나면 탈출할수 있습니다
//1과 true는 같고 0과 false는 같습니다.
scanf("%d",&input);//scanf함수인데요 %d즉 10진수형으로 입력을 받아서 input변수에 저장하는명령입니다 여기서 주의할점은 주소연산자인 &를 빼먹지 마시라는 겁니다 단 문자열일때에는 빼먹어도 됩니다
if(input<random){//random과 input을 비교합니다 그리고 그 값이 참일때 if문을 실행합니다 여기에서는 input이 random보다 작을때 실행되겠군요
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);//글자 15즉 흰색으로 바꾸는 곳입니다
printf("적은값이 작군요");//입력한 값이 적을때 실행되는 문장입니다
}
else if(input>random){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);//글자 색상을 15즉 흰색으로 바꾸는 곳입니다
printf("적은값이 크군요");//입력한 값이 클때 실행되는 문장입니다
}
else if(input==random){//random 변수와 input변수가 똑같을때에 break; 즉 while문을 탈출하라는 문장입니다
break;//while문을 탈출합니다 while문을 탈출하면printf("정답! 시한폭탄이 해제됩니다naaa"); system("shutdown -a"); printf("aaaaaa");가 실행이 되겠죠? system("shutdown -a");는 자동종료를 취소시키는 도스명령이랍니다
}
while,if,for등은 그다음에 나오는 명령+세미콜른과 한 셋트입니다 그래서 while,if,for 문바로 뒤에는 세미콜른을 적지 않는 것이구요
그래서 실행되는 명령이 하나일때에는 한 셋트로 묶어서 중괄호 없이 적을수 있습니다
if(a==b)//a와 b가같을때
printf("a와b가같습니다!");//출력 여기에는 {}중괄호가 없음
하지만 두 명령 이상일떄에는 중괄호를 위에서와 같이 써주셔야 합니다
이번에는 간단히 분석만 해보았는데요 다음번에는 구구단 프로그램을 만들어 보려고 합니다 기대해주세요~