공부 중 메모/수업 예제 (KGCA)

C언어 매크로 예제 (beep으로 '학교종' 연주하기)

라이피 (Lypi) 2018. 6. 23. 01:08
반응형

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일.


std.h

#pragma once #include <windows.h> #include <cstdio> #include <math.h> ////sound() => Beep() ////delay() => Sleep() // #define DO(t) Beep((DWORD)(131*pow(1.06f,0)),(DWORD)(300*(t)));Sleep(100); // pow(1.06f,0) == 1 / pow(1.06f,12) == 2 // Beep(진동수, 시간) //옥타브 0 1 2 3 4 5 6 7 8 // 도 016 033 065 131 262 523 1047 2093 4186 #define DO(t) Beep((DWORD)523*pow(1.06f, 0),(DWORD)300*(t)); Sleep((DWORD)100); #define RE(t) Beep((DWORD)523*pow(1.06f, 2),(DWORD)300*(t)); Sleep((DWORD)100); #define MI(t) Beep((DWORD)523*pow(1.06f, 4),(DWORD)300*(t)); Sleep((DWORD)100); #define FA(t) Beep((DWORD)523*pow(1.06f, 5),(DWORD)300*(t)); Sleep((DWORD)100); #define SO(t) Beep((DWORD)523*pow(1.06f, 7),(DWORD)300*(t)); Sleep((DWORD)100); #define RA(t) Beep((DWORD)523*pow(1.06f, 9),(DWORD)300*(t)); Sleep((DWORD)100); #define SI(t) Beep((DWORD)523*pow(1.06f,11),(DWORD)300*(t)); Sleep((DWORD)100); #define _DO(t) Beep((DWORD)523*pow(1.06f,12),(DWORD)300*(t)); Sleep((DWORD)100); //매크로 안에 매크로 넣기 #define TBASIS_PI ((FLOAT) 3.141592654f) #define DegreeToRadian( degree ) ((degree) * (TBASIS_PI / 180.0f)) #define RadianToDegree( radian ) ((radian) * (180.0f / TBASIS_PI)) //매크로로 장난치기 #define A(t) if(t) { #define EndMain } #define StartMain int main() { #define X int a=1; #define P(r)printf(r);


Macro.cpp

#include "std.h"

StartMain

	//학교종
	SO(1); SO(1); RA(1); RA(1);
	SO(1); SO(1); MI(2);
	SO(1); SO(1); MI(1); MI(1); 
	RE(3); Sleep(400);

	SO(1); SO(1); RA(1); RA(1);
	SO(1); SO(1); MI(3);
	SO(1); MI(1); RE(1); MI(1);
	DO(3); Sleep(400);

EndMain


반응형