관리 메뉴

c0smicb0y

시스템 프로그래밍 팀프로젝트 1 본문

진행한 프로젝트/시스템 프로그래밍

시스템 프로그래밍 팀프로젝트 1

2014. 11. 25. 00:45

오랜만에 블로그에 글을 쓴다.

나는 요즘에 그러려니하면서 별일없이 살고 있다.

팀프로젝트가 3개나 있어서 한창 바쁠때인데

이렇게 블로그에 진행상황을 기록하면서 진행하면 더욱 좋을거 같아서 작성해본다.

시스템 프로그래밍이라는 수업을 듣고 있는데

팀프로젝트로 4명이 팀을 구성하여 리눅스 프로그램을 하나 짜오라는 것이였다.

팀원들과 이리저리 논의해본 결과, 한컴타자연습에서 모티브를 얻어

영타연습을 하는 프로그램을 만들기로했다.

주요기능으로는 긴글연습, 타자검정, 산성비게임이 있다.

나는 긴글연습을 만들기로 했는데,

파일 입출력으로 글을 읽어 그걸 프로그램에 출력하고

그에 맞춰 사용자가 키를 입력하여 원래 글과 맞는지 따져서 알려주는게

일단 주요적으로 할 일이다.

현재 글을 화면에 출력하고 사용자가 입력을 하는 부분까지 구현을 하였다.

아래는 내가 구현한 코드이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <curses.h>
#include <string.h>
#include <signal.h>
#include <stdio.h>
#define ESC 0x1b //ESC고유값
 
void sampletext();
int main(){
    char c;//한글자씩 들어오는거 처리
    char buffer[80];//한 줄을 처리
    int i = 0//인덱스
    int j; //입력한 한 줄 처리할때 쓰는 인덱스
    int line = 1//입력하는 줄로 이동할때 쓰는거
 
    initscr();
    clear();
    refresh();
 
    for (j = 0; j < 80; j++)
        buffer[j] = '\0';//배열초기화
 
    sampletext();
 
    move(1,0); //둘째줄 제일 앞으로 커서 이동
 
    refresh();
    while (c != ESC) { //ESC입력이 들어오기전까지 반복. 근데 화살표 입력해도 종료되더라
        c = getchar();
        if (c == '\r' || i >= 80) { //엔터가 들어오거나 배열의 최대치에 도달하였을때
            line += 2;
            move(line,0); //두줄밑으로 커서이동
            printf("\r"); //커서를 제일 앞으로
            refresh();
            i = 0//꽉차거나 그 줄이 끝났으니깐 i를 0으로 초기화
            for (j = 0;j < 80;j++) { //여기서 문자 비교하는 기능 추가하던지 해야함
                if (buffer[j])
                
                    buffer[j] = '\0';//그러고 다시 초기화
            }
        } else {
            putchar(c); //입력이 들어오면 일단 스크린에 표시하고,
            buffer[i] = c; //배열에 넣고
            i++; //인덱스 증가
        }
    }
    endwin();
 
}
 
void sampletext() {
    int line = 0;
    addstr("This is Sample Text");
    line += 2;
    move(line, 0);
    addstr("you can type English");
    line += 2;
    move(line, 0);
    addstr("God Gi Suk System Programming");
}
cs

실행을 하면 이러한 화면이 뜬다.



입력을 하면 그에 따라 입력이 되고 엔터를 치면 다음 문장의 밑으로 커서가 이동한다. 그렇게 이게 반복된다.

이제 입력에 따라 맞는지 따지는 것과 그것을 사용자에게 보여주는것을 구현하면 된다.

왜인지 나만 알 수 있게 작성한거 같다.

다음번엔 다른사람이 그냥봐도 이해할 수 있도록 작성할 수 있게 노력해야겠다.






Comments