본문내용
LACK,GREEN); //윈도우 지정..
cputs("*************************************\n\r");
cputs("** === Kebord Master=== Ver -0.1 **\n\r");
cputs("** ---Programed By ^^[PaRan] **\n\r");
cputs("*************************************");
}
void HelpMsg(int n) //진행중 도움말을 보여준다..
{ //도움말의 종류는 두가지..계속하기 위한것과 끝내기 위한것..
Window(18,18,50,0,YELLOW,DARKGRAY);
switch(n)
{
case 0: cputs(" input string!! ,quit:ESC");
break;
case 1: cputs(" Press Any Key..Countinue");
}
}
void SpeedMsg(int sp,int per)//속도와 정확도를 알려준다..
{
Window(5,17,11,1,MAGENTA,LIGHTGREEN);
cprintf("Speed: %3d \n\r",sp);//속도를 찍는다..
cprintf("Per : %3d ",per);//정확도를 찍는다..
}
void SpeedMsg2(int n)
{ //속도에 따른 평가의 말을 디스플레이해 준다..
Window(18,17,50,0,YELLOW,DARKGRAY);
n=n/100; //속도를 100으로 나우어서 평가..
if(n>5) n=5;
switch(n)
{
case 0: cputs(" Hi! Hi! Hard Work!!");
break;
case 1: cputs(" Hum!! Normal Speed!!");
break;
case 2: cputs(" Wha! Good!!");
break;
case 3: cputs(" Yi Hay! Very Good!!");
break;
case 4: cputs(" Good!! Great!!");
break;
case 5: cputs(" Wonderful!!..I love You!!!");
break; //예를 들어 500타 이상 나왔을 경우 메세지..
}
}
int typing(void)
{
int rval,length;//리턴값,문장길이..
int speed,per,miss;//속도,정확도,미스
unsigned diftime;//시간의 간격측정..
time_t first,second;//시작 시간과 끝낸시간..
Window(2,10,77,9,WHITE,LIGHTGRAY);
HelpMsg(0); //초기 도움말 출력..
rval=OutS(); //문장을 출력..
first=time(NULL); //시작 시간을 기억..
miss=InputS(Str[rval]); // 입력을 받는다..
if(miss<0) return -1; //miss가 -1..즉 ESC를 눌렀을 경우..종료
second=time(NULL); //끝낸 시간 기억..
diftime=difftime(second,first); //시간의 간격을 알아낸다.
if(diftime<1) diftime=1; //그냥 끝냈을 경우..아래에서 0으로
//나누어지는 것을 막기위한 에러처리..
length=strlen(Str[rval]); //문장의 길이를 구한다..
speed=TypeNum*60/diftime; //속도를 계산..
per=(length-miss)*100/length; //정확도 계산..
if(per<0) per=0; //정확도에 대한 에러처리..
SpeedMsg(speed,per); //속도와 정확도를 디스플레이..
SpeedMsg2(speed); //그에 대한 평가를 디스플레이..
return 0; 일반적으로 끝났을 경우..0리턴..
}
//-------------type.c화일 끝..
//-----------------------
// 화일이름.. tt.c
//-----------------------
#include "type.h"
void main()
{
int i=0;
textbackground(BLACK);
clrscr(); //검은 색으로 화면 전체를 지운다..
Logo(); //로고를 디스플레이..
for(;;) //ESC를 누르기 전까지 계속 한다..
{
if(typing()<0) //입력값이 ESC일 경우..루프를 빠져나간다..
break;
HelpMsg(1); //도움말을 디스플레이하고..
getch(); //한번의 키 입력을 기다린다..
}
while(!Str[i++]) //끝냈을 경우..메모리를 복귀시킨다..
free(Str[i]);
}
//------- tt.c화일 끝..
이제 여러분은 세개의 화일을 만들었다. 이것을 어떻게 컴파일시킬까? 볼랜드 C에서는 프로젝트 화일이라는 것이 있다. *.prj화일속에 우리가 작성한 화일을 집어 넣으면 된다.
방법은 간단하다. 메뉴에서 프로젝트를 선택하면 이름을 입력하라고 나올것이다. 그러면 여러분은 맘에 드는 화일이름을 넣어 주면 된다. 여기에 입력한 이름이 실제 실행화일의 이름이 된다. 확장자는 안 붙여주어도 .prj가 자동으로 붙는다. 이제 화면 밑에 하나의 윈도가 생긴걸 볼 수 있을 것이다. 인서트키를 눌러보자. 화일 선택박스가 떠 오를 것이다. 그곳에서 우리가 작성한 화일을 찾아 선택해 주면 된다.
우리가 집어 넣을 화일은 두개이다. type.c와 tt.c이다. type.h는 집어 넣지 말아라. 왜냐 하면 #include 선언으로 자동적으로 읽어 질 것이기 때문이다. 이것은 #include "type.c" 이렇게 선언했을 경우 실제 그 화일을 읽을 수 있다는 것이기도 하다.
이부분에서 화일을 나누어서 프로그램을 짜는 것의 장점을 하나 들 수 있다. 여러분은 F9을 눌러 컴파일하다가 에러가 났을 경우 그 에러를 고치고 다시 컴파일 하면 고친 화일만 다시 컴파일 하는 모습을 볼 수 있을 것이다. 사실 예제에서는 조그만 프로그램이기 때문에 별 효과를 못 느끼겠지만 수십개의 화일로 만들어진 프로그램을 컴파일 시키면 시간의 차이를 크게 느낄 것이다.
프로그램을 실행시키면 칼라풀한 모습으로 타이핑 연습 프로그램이 떠 오를 것이다.
cputs("*************************************\n\r");
cputs("** === Kebord Master=== Ver -0.1 **\n\r");
cputs("** ---Programed By ^^[PaRan] **\n\r");
cputs("*************************************");
}
void HelpMsg(int n) //진행중 도움말을 보여준다..
{ //도움말의 종류는 두가지..계속하기 위한것과 끝내기 위한것..
Window(18,18,50,0,YELLOW,DARKGRAY);
switch(n)
{
case 0: cputs(" input string!! ,quit:ESC");
break;
case 1: cputs(" Press Any Key..Countinue");
}
}
void SpeedMsg(int sp,int per)//속도와 정확도를 알려준다..
{
Window(5,17,11,1,MAGENTA,LIGHTGREEN);
cprintf("Speed: %3d \n\r",sp);//속도를 찍는다..
cprintf("Per : %3d ",per);//정확도를 찍는다..
}
void SpeedMsg2(int n)
{ //속도에 따른 평가의 말을 디스플레이해 준다..
Window(18,17,50,0,YELLOW,DARKGRAY);
n=n/100; //속도를 100으로 나우어서 평가..
if(n>5) n=5;
switch(n)
{
case 0: cputs(" Hi! Hi! Hard Work!!");
break;
case 1: cputs(" Hum!! Normal Speed!!");
break;
case 2: cputs(" Wha! Good!!");
break;
case 3: cputs(" Yi Hay! Very Good!!");
break;
case 4: cputs(" Good!! Great!!");
break;
case 5: cputs(" Wonderful!!..I love You!!!");
break; //예를 들어 500타 이상 나왔을 경우 메세지..
}
}
int typing(void)
{
int rval,length;//리턴값,문장길이..
int speed,per,miss;//속도,정확도,미스
unsigned diftime;//시간의 간격측정..
time_t first,second;//시작 시간과 끝낸시간..
Window(2,10,77,9,WHITE,LIGHTGRAY);
HelpMsg(0); //초기 도움말 출력..
rval=OutS(); //문장을 출력..
first=time(NULL); //시작 시간을 기억..
miss=InputS(Str[rval]); // 입력을 받는다..
if(miss<0) return -1; //miss가 -1..즉 ESC를 눌렀을 경우..종료
second=time(NULL); //끝낸 시간 기억..
diftime=difftime(second,first); //시간의 간격을 알아낸다.
if(diftime<1) diftime=1; //그냥 끝냈을 경우..아래에서 0으로
//나누어지는 것을 막기위한 에러처리..
length=strlen(Str[rval]); //문장의 길이를 구한다..
speed=TypeNum*60/diftime; //속도를 계산..
per=(length-miss)*100/length; //정확도 계산..
if(per<0) per=0; //정확도에 대한 에러처리..
SpeedMsg(speed,per); //속도와 정확도를 디스플레이..
SpeedMsg2(speed); //그에 대한 평가를 디스플레이..
return 0; 일반적으로 끝났을 경우..0리턴..
}
//-------------type.c화일 끝..
//-----------------------
// 화일이름.. tt.c
//-----------------------
#include "type.h"
void main()
{
int i=0;
textbackground(BLACK);
clrscr(); //검은 색으로 화면 전체를 지운다..
Logo(); //로고를 디스플레이..
for(;;) //ESC를 누르기 전까지 계속 한다..
{
if(typing()<0) //입력값이 ESC일 경우..루프를 빠져나간다..
break;
HelpMsg(1); //도움말을 디스플레이하고..
getch(); //한번의 키 입력을 기다린다..
}
while(!Str[i++]) //끝냈을 경우..메모리를 복귀시킨다..
free(Str[i]);
}
//------- tt.c화일 끝..
이제 여러분은 세개의 화일을 만들었다. 이것을 어떻게 컴파일시킬까? 볼랜드 C에서는 프로젝트 화일이라는 것이 있다. *.prj화일속에 우리가 작성한 화일을 집어 넣으면 된다.
방법은 간단하다. 메뉴에서 프로젝트를 선택하면 이름을 입력하라고 나올것이다. 그러면 여러분은 맘에 드는 화일이름을 넣어 주면 된다. 여기에 입력한 이름이 실제 실행화일의 이름이 된다. 확장자는 안 붙여주어도 .prj가 자동으로 붙는다. 이제 화면 밑에 하나의 윈도가 생긴걸 볼 수 있을 것이다. 인서트키를 눌러보자. 화일 선택박스가 떠 오를 것이다. 그곳에서 우리가 작성한 화일을 찾아 선택해 주면 된다.
우리가 집어 넣을 화일은 두개이다. type.c와 tt.c이다. type.h는 집어 넣지 말아라. 왜냐 하면 #include 선언으로 자동적으로 읽어 질 것이기 때문이다. 이것은 #include "type.c" 이렇게 선언했을 경우 실제 그 화일을 읽을 수 있다는 것이기도 하다.
이부분에서 화일을 나누어서 프로그램을 짜는 것의 장점을 하나 들 수 있다. 여러분은 F9을 눌러 컴파일하다가 에러가 났을 경우 그 에러를 고치고 다시 컴파일 하면 고친 화일만 다시 컴파일 하는 모습을 볼 수 있을 것이다. 사실 예제에서는 조그만 프로그램이기 때문에 별 효과를 못 느끼겠지만 수십개의 화일로 만들어진 프로그램을 컴파일 시키면 시간의 차이를 크게 느낄 것이다.
프로그램을 실행시키면 칼라풀한 모습으로 타이핑 연습 프로그램이 떠 오를 것이다.
추천자료
- C언어로 구현한 토큰 추출 프로그램
- MST 정렬 프로그램(C언어)
- C언어를 이용해 정수를 입력 받아서 소수인지?아닌지? 출력하는 프로그램
- C언어를 이용해 문자열을 역(문자의 순서를 반대로)으로 출력하는 프로그램
- C언어를 이용한 팩토리얼 함수(n!) 프로그램
- C언어를 이용해 숫자를 삼각형 세로순서로 출력하는 프로그램
- C언어를 이용해 1차원배열과 함수를 이용해서 분포,평균,빈도수,*출력 프로그램
- [C언어]링크드리스트를 이용한 희소행렬 곱셈프로그램
- c언어로 만든 자기참조 구조체 및 메모리 포인터 (링크드 리스트) 프로그램
- [C언어] 로또 번호를 읽어 온 후 랜덤으로 생성된 숫자와 비교하여 전체당첨자를 출력하거나...
- [C언어]허프만 알고리즘을 이용한 Text 파일 압축/해제 프로그램
- [C언어] 피보나치수열 리커시브와 인터렉티브 방식 프로그램 시간분석
- 문자열(string) 함수, 파일입출력 함수 사용프로그램(C언어, 한글레포트추가)
- LinkedList(링크드리스트), 파일입출력을 이용한 음식메뉴 입/출력프로그램(C언어,한글레포트...