관리 메뉴

c0smicb0y

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

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

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

2015. 1. 7. 02:31

벌써 2015년이다. 프로젝트경과를 그때그때 올릴랬는데 바쁘고 귀찮아서 못올렸었다. 정말 게으른것같다.

그래도 계속 머릿속에서 생각하고 있어서 지금에서라도 올릴려고 한다.

팀프로젝트는 성공적으로 끝이났다. 평가도 팀중에서 제일 잘 받은것 같다.

학점도 잘 받았으니 기분좋게 끝난과목이다.

일단 저번에 내가 만들었던 프로그램에서 입력된 문자를 실시간으로 따져서  틀리면 빨갛게, 맞으면 그냥 하얗게 표시하도록 만들었다.



글자색을 표현하는것에서 조금 애를 먹었다. 수업시간에 배우지 않은 부분을 이용했기 때문이다. curses.h에 터미널의 글자색과 배경색을 바꾸는 함수를 활용해서 만들었다.


1
2
    start_color();
    init_pair(1, COLOR_RED, COLOR_BLACK);
cs

먼저 start_color()와 init_pair(1, COLOR_RED, COLOR_BLACK)를 통해서 터미널에 color를 start하고 난뒤 글자색과 터미널바탕색 pair를 1로 초기화 시켰다.


1
2
3
4
5
6
move(line - 1, i);      //현재 입력커서의 바로위에 비교할 문자열이 있으니깐 거기로 이동
attron(COLOR_PAIR(1));  //색변경
addch(compare1[i]);     //변경된 색으로 글자쓰기
attroff(COLOR_PAIR(1)); //색변경 off
move(line, i + 1);      //원래 커서 위치로 이동
refresh();                //화면에 반영
cs

글자가 틀렸을 때 handling하는 부분이다. line은 현재입력하는 줄이고, compare1배열은 사용자가 보고 입력해야할 문자열이다(이 문자열과 사용자가 입력하는 문자를 비교한다). i는 현재입력하고 있는 부분의 인덱스이다.

알고리즘은 간단하다. 지금 입력하고 있는 line의 한칸 위에 비교하는 문자가 있으니 커서를 그곳으로 move한뒤, attron으로 원하는 COLOR_PAIR로 터미널색을 바꾸고 addch로 해당 글자를 다시 쓴다. 그러면 빨간색글자색과 검은터미널바탕색을 가진 글자가 써진다. 그러고나서 attroff로 색변경을 off한 뒤 원래 입력하던 줄로 돌아온 뒤, 커서가 움직였으니 그것을 실제화면에 반영하기 위해 refresh해준다.


틀렸다가 다시 맞게 쓸 때를 위하여 위와 똑같은 알고리즘으로 handling해주었다.

1
2
3
4
move(line - 1, i);
addch(compare1[i]);
move(line, i + 1);
refresh();
cs


원래 글자색인 검은바탕에 하얀색으로 문자를 출력할거니깐 attron과 attroff는 필요가 없다.

이렇게 해서 내가 만들모듈은 끝이다.

여기에 팀원이 파일입출력 기능을 추가하고, 타이머를 통한 타수 측정과, 현재페이지에서 끝까지 입력했을때 다음페이지로 넘어가는 기능을 추가했는데 그건 다음포스팅에서 작성하겠다.



Comments