|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1785 [복사]
우선 안내문은 저번강좌에 올릴려고 했으나 내용이 길어서 따로 추출해서 올려드립니다.
자.이번 강좌는 안내문 만들기입니다.
그냥 생각해보면 별것 없어보입니다.
cout만 하면 되잖아~ 라고 생각하시는 분들이 대부분이실 거라고 생각합니다.
하지만 저처럼 JQ가 뛰어난(짠머리) 분들은 재탕(재활용성)을 생각하시지요
그래서 만들었습니다.
자자..JQ짠머리의 산실..
private:
//안내문
string ct1;//중간 안내문 1페이지 1번째 줄
string ct2;//중간 안내문 1페이지 2번째 줄
string ct3;//중간 안내문 1페이지 3번째 줄
string ct4;//중간 안내문 1페이지 4번째 줄
string ct5;//중간 안내문 2페이지 1번째 줄
string ct6;//중간 안내문 2페이지 2번째 줄
string ct7;//중간 안내문 2페이지 3번째 줄
string ct8;//중간 안내문 2페이지 4번째 줄
string ct9;//중간 안내문 3페이지 1번째 줄
string ct10;//중간 안내문 3페이지 2번째 줄
string ct11;//중간 안내문 3페이지 3번째 줄
string ct12;//중간 안내문 3페이지 4번째 줄
string ct0;//중간 안내문 줄 지우기
int pp;//중간 안내문 페이지 변수 기본은0으로1페이지 2는2p 3은 3p이다.
입니다..총 중간 안내문은 최대 3페이지가 되구요
이렇게 string을 남발하는 투박한 프로그래밍을 하셔도 되며
배열로 깔끔하게 처리를 하셔도 됩니다.
각자의 취향과 실력에 맡길게요. 전 일단 투박하게 일일히 다했습니다.
왜 string을 많이 만들었느냐고요?
음 대충 눈치 채신분들도 보이는군요.
그렇습니다. 안내문을 출력할때카다 cout을 하지않고 저위의 string들을 cout해주는 함수를 불러오기 위해서입니다.
ct1~ct12까지의 내용만 바꿔주고 cout을 해주는 함수를 따로만들어 호출만하게되면
소스의 길이는 더 줄어들겠지요.
자 예를 들어보이겠습니다.
else if(imenu==2)//종료가 선택되어 있으면
{
//중간 안내문 내용 저장
helpcho();//ct초기화.
ct1="자신의 운은";
ct2="타고 나지만";
ct3="그 운의 결과는";
ct4="자신이 만들어가는 것";
ct5="미래를 위한";
ct6="자신이 되시길바래요.";
pp=2;//중간 안내문 페이지가 2페이지임.
centerhelp(); //중간 안내문 출력
gotoxy(0,30);
break;
}
메뉴에서 종료를 선택할 경우의 안내문 출력부분입니다.
이렇게 ct들의 내용을 바꾼다음 centerhelp(); 함수로 cout을 해주게 되면 좀더 소스가 짧아지게 됩니다.
helpcho는 ct들의 내용을 ""으로 만들고 전체 출력을 해줌으로써 이미출력된 안내문을 지우게 만드는 부분입니다.
우선 centerhelp(); 먼저 보지요
void pri::centerhelpnos()
{
WHITE;
helpclr();
//첫 페이지 출력
gotoxy(33,10);
cout<<ct1;
gotoxy(35,12);
cout<<ct2;
gotoxy(37,14);
cout<<ct3;
gotoxy(39,16);
cout<<ct4;
if(pp>=2)//만약 안내페이지쪽수가 2페이지 이상이면
{
//페이지 지우고
helpclr();
//두번째 페이지 출력
gotoxy(33,10);
cout<<ct5;
gotoxy(35,12);
cout<<ct6;
gotoxy(37,14);
cout<<ct7;
gotoxy(39,16);
cout<<ct8;
if(pp==3)//만약 안내페이지수가 3페이지이면
{
//페이지 지우고
helpclr();
//세번째 페이지 출력
gotoxy(33,10);
cout<<ct9;
gotoxy(35,12);
cout<<ct10;
gotoxy(37,14);
cout<<ct11;
gotoxy(39,16);
cout<<ct12;
}
}
}
요롷고롬 해치워 버리는겁니다.
그럼 gotoxy와cout을 확실히 줄일수 있게되죠.
여기서 pp는 딱보고 아셨겠지만 페이지 숫자입니다.
모든 안내문의 페이지가 같을 수는 없잖아요^^
이 소스에 Sleep문을 걸게되면 페이지가 차례대로 보이게 되는겁니다.
위에 소스를 보니 helpclr();는 더욱 쉽겠죠?
네..아래처럼 간단하게 안내문을 지워주는 부분을 만들수 있습니다.
void pri::helpclr()//중간 안내문 지우기 구현
{
string ct0=" ";//중간 안내문 줄 지우기 구현
gotoxy(33,10);
cout<<ct0;
gotoxy(35,12);
cout<<ct0;
gotoxy(37,14);
cout<<ct0;
gotoxy(39,16);
cout<<ct0;
}
이렇게 안내문의 구현은
string에 내용을 넣고 string을 양식에맞춰출력해주는 함수를 호출하는것으로 해결됩니다.
다..이런 내용들을 class안에 넣은 모습은 다음강좌에 1~5강 총소스를 올려드리겠습니다.
[출처] <샤오쓰 타로>5.안내문표시pri.h (C언어를 배우자) |작성자 해커푸
|
Hit : 8822 Date : 2011/06/04 08:20
|