머리말

창조는 바로 이런분들을 위해서 세상에 태어났습니다.

여러분중에는 기존의 도스용 언어나 비주얼 언어 혹은 멀티미디어 저작도구를 이용해서 직접 프로그램을 만들어 보셨거나 만들어 보려고 시도해 보신 경험을 가지고 계신분이 있을것입니다. 자신이 원하는 프로그램을 직접만들어 보고 싶은 생각은 있지만 언어는 배우기가 너무 힘들고 기존의 멀티미디어 저작툴은 유연성에 한계가 있고…. 아! 힘들고 불편하다!

창조는 순수 한글 저작도구입니다.

창조는 순수 한글 저작도구로써 자체 개발한 □우리어□라는 언어를 사용합니다. 도움말만 한글로 되어있는 것이 아니라 명령어를 포함한 모든 것이 한글로 되어있습니다. 여러분은 이제부터 간단한 지식만으로도 여러분이 원하는 멀티미디어 프로그램과 그밖에 응용프로그램을 만드실 수 있습니다. 골치아프게 영문도움말과 씨름하실 필요도 없고 윈도우 기반 프로그래밍에 필요한 전문지식을 습득하기 위해 딱딱한 전문서적을 뒤적이지 않으셔도 됩니다.

창조는 배우기 쉽습니다.

창조는 기존 멀티미디어 저작도구의 기능을 완벽하게 소화할 뿐 아니라 거기에 언어적인 요소가 가미되어진  비주얼 저작도구입니다. 하지만 여러분은 창조를 배우는데 결코 많은 시간을 투자하실 필요는 없습니다. 언어를 전혀 모르시는 분이나 프로그래밍을 한번도 접해보시지 않은 분이라도 이책에 수록되어진 예제를 한번 읽어보시고 따라해보면  창조를 쉽게 배울 수 있을것입니다.

창조는 사용하기  쉽습니다.

창조에는 객체가 존재하고 그 객체는 저마다의 각각의 속성을 가지고 있습니다. 여러분은 이 객체를 작업창에 올려놓으시고 그 객체의 속성과 명령어를 이용해 여러분이 원하는 프로그램을 만드실 수 있는데 이 과정에서 객체의 속성이나 명령어 기타 모르는 부분이 생겼을 때 F1 키를 누르시면 현재 활성화된 부분에 대한 도움말을 보실수 있습니다. 여러분은 이 도움말기능에 의존해서  창조를 쉽게 사용하실수 있습니다.

창조는 자체 실행파일을 생성시켜줍니다.

창조는 자체 실행파일을 생성시켜줍니다. 따라서 창조를 이용해 여러분이 만든 프로그램을 실행파일만 가지고 다른 컴퓨터에서 실행할 수 있습니다. 번거롭게 *.DLL 파일은 필요없습니다.  물론 창조에서 API 함수나 DLL 파일을 이용할 수 있습니다.

- 차 례 -

1. 창조 설치하기.

2. □제가 바로 창조 입니다.□

3. 창조의 기본문법.

4. 창조에 포함된 객체.

5. 예제를 통한 창조정복.

2. □제가 바로 창조 입니다.□

원래 도스기반에서 프로그래밍을 할 때에는 코드입력과정과 컴파일과정을 거친 뒤 실행과정을 거친 뒤에야 자신이 만든 프로그램의 결과를 확인할수 있지만 창조는 비주얼 툴 이므로 프로그램이 완성되었을때의 모습을 실제로 확인하면서 작업을 할 수 있습니다. 창조는 절대로 어려운 저작도구가 아닙니다. 프로그램을 한번도 만들어본 경험이 없는 분이라도 아주쉽게 자신이 원하는 프로그램을 만들 수 있습니다. 자! 그러면 창조를 이용해서 간단한 프로그램을  만들어보도록 하겠습니다.

프로그램을 만듦에 있어 가장 중요한 것은 설계를 잘 하는 것입니다. 그러면 설계를 한번 해 보도록 하죠. 창이 하나 있고 그안에 버튼이 두 개 있는데 첫 번째 버튼을 클릭하면 □안녕하세요! 저는 창조입니다□ 라는 문구가 나오게 하고 두 번째 버튼을 클릭하면 프로그램이 종료되도록 만들어 보겠습니다.

먼저 창조를 실행시켜 보세요. 아래와 같이 창이 세 개(작업메뉴창, 작업도구창, 아무것도 없는 텅빈창) 보일것입니다. (1)

1. □작업메뉴□창 좌측 하단에 보면 화살표 모양의 버튼이 위아래로 두 개 있는데 이

버튼을 클릭하면 표준도구 와 멀티미디어 가 번갈아 보일것입니다. 이때 □표준도구□에서 마우스로 □버튼□(□ㅂㅌ□으로 표기되어 있음)을 클릭합니다. 그런다음 좌측상단에 있는 □창0□(실제 작업이 이루어지는 창입니다)의 적당한 곳에 마우스를 한번 더 클릭하면 버튼이 그 위치에 놓이게 됩니다. 같은 방법으로 버튼을 하나 더 창에 올려놓습니다.(2)

2. 위 작업으로 설계했던 프로그램의 외형 갖추기는 끝이났습니다. 그러면 이제 프

로그램이 실제 설계한대로 작동하도록 내부작업(명령을 내리는 것)을 하도록 하겠습니다. 먼저 두 개의 버튼중 □버튼0□을 마우스로 클릭해서 활성화 시킵니다.  □작업도구□창의 □속성편집□을 선택하고 제목을 □버튼0□에서 □시작□으로 바꾼 뒤 엔터를 칩니다. 다음에 □작업도구□창의 □명령어편집□을 선택하고 □클릭했을때□라는 사건을 클릭하면 오른쪽 버튼이 활성화 되는데 이것을  다시한번 클릭합니다. 그러면 명령을 내릴수 있는 창이 하나 생기게 되는데 이곳에 다음과 같이 명령을 내립니다.

문자창보여(□안녕하세요! 저는 창조입니다□);(3)

□문법검사(S)□를 클릭하면 화면 하단에 □오류정보□가 나오는데 <<문법검사합격>>이라는 메시지가 나오면 □확인(O)□ 을 누릅니다. (4)

위와같은 방법으로 □버튼1□을 클릭해서 활성화 시킨 뒤 □작업도구□창의 □속성편집□ 난에서 제목을 □버튼1□ 에서 □종료□ 로 바꿉니다. 다음에 □작업도구□창의 □명령어편집□을 선택하고 □클릭했을때□라는 사건에 다음과 같이 명령을 내립니다.

창0.닫아;

문법검사를 하고 확인을 누릅니다.

이상으로 모든 작업이 끝났습니다. 여러분은 아래와 같은 화면을 보고 계실것입니   다.(5)

위 화면중 좌측상단에 있는 □창0□ 가 실제 여러분이 실행을 시켰을 때 화면에 뜨게 될 프로그램 모습입니다. 그러면 이제 실행파일을 만들고 실행을 시켜보도록 하겠습니다. F8 을 누르면 실행파일 만들기와 실행이 동시에 이루어집니다. 자! 그러면 용감하게 F8을 눌러서 여러분의 첫 작품을 만들어 보십시요. 어때요? 멋지지 않습니까? □시작□ 버튼과 □종료□ 버튼을 번갈아 눌러보십시오.

여러분이 만드신 실행파일의 위치는 □작업메뉴□ 창에서 □작업□을 선택하면 □작업환경□이 있는데 이곳을 클릭하면 알 수 있으며 변경도 할 수 있습니다.(6)

□작업환경(O)'을 클릭했을 때 모습(7)

첫 작품을 만들어낸 소감이 어떠십니가? 뿌듯하지 않습니까? 이처럼 □객체□를 □창□ 에 올려놓고 간단한 명령어를 추가해 원하는 프로그램을 만드는 것이 바로 창조 입니다. 어때요? 전혀 어렵지 않죠?

3. 창조 의 기본문법

여러분은 위에서 간단한 프로그램을 만들어 보았습니다. 그럼 이제부터 좀더 고급스런 프로그램을 만들기 위한 준비에 들어가겠습니다. 여러분이 이미 해 보셔서 알고 있는것처럼 창조는 □객체□를 □창□에 올려놓고 그 객체의 속성을 변화시키고 약간의 명령어를 추가하여 프로그램을 만듦니다. 따라서 여러분이 창조를 이용해 고급 프로그램을 만들기 위해서는 창조의 기본문법과 객체 그리고 그 객체의 속성을 알아야만 합니다. 그럼 먼저 창조의 기본문법을 살펴보도록 하겠습니다.

기본용어와 문법

문법이라고 해서 거창하게 생각할 필요는 없습니다.  간단한 몇가지만 알면 되는것입니다. 지금부터 어려운 용어는 최대한 풀어서 설명할 것이며  반드시 알아야만 하는 용어를 해당 용어가 등장할 때마다 설명하겠습니다.

객체: 전문서적 에 보면 객체에 대해 설명을 자세히 해 놓았습니다. 하지만, 일반인

인 우리가 이해하기에는 너무나 애매하게 설명이 되어 있습니다. 우리는 그냥 단순하게 생각을 하죠.  이렇게...   □객체는 우리 주변에 있는 모든 것들이다.  사람도 객체다□.

객체란 우리 주변에 존재하는 모든 사물입니다. 주변에 보이는 TV, 컴퓨터, 전화기, 냉장고, 냉장고 안에 있는 얼음, 김치등등.... 모든것이 객체입니다. 컴퓨터에서 사용하는 이상한 용어로 받아들이면 안됩니다. 프로그램을 만든다는 것을 집을 짓는 것이라고 생각해도 됩니다. 왜냐하면 집을 지으려면 돈이 있어야겠고  여러가지 자재(시멘트, 목재, 벽돌등등...)를 구해야 합니다.  그리고 다 지었다고 그안에서 바로 살 수는 없습니다. 먹고 자려면 이불, 침대, 냉장고, 음식등등이 필요합니다.

이와같이 프로그램도 만드려면 자재(객체)를 구해야 합니다.  먼저 창을 만들어야 하고 창을 꾸미기 위해 매체재생기, 그림판, 이름표, 버튼 등등이 필요합니다. 이러한 것들을 모두 객체라고 합니다.

속성: 객체 에는 제각기 특징이 있습니다. 이러한 특징들이 바로 □속성□입니다. 가령

□선풍기□라는 객체가 있다면 선풍기의 강약조절버튼, 회전조절버튼, 시간예약버튼 등등... 이러한 것들을 바로 □속성□이라고  할 수 있습니다.

문법:

† 기본규약 ¶

1. 모든 문장의 끝에는 ' ; '을 사용하여 끝을 맺습니다.

(예)  글 := "안녕하세요";

2. 자료형(문자형,실수형,진리형)은 같은 형끼리 대응합니다.

3. 자료를 정의할때는  자료형을 적고 ' : '을 사용합니다.

(예) 실수형 자료로 □수□라는 변수를 정의

실수: 수;

4. 우변에서 좌변으로 값이 저장됩니다.

(예)  □5+3□ 이 □수□ 에 저장됨.

수 := 5 + 3;

5. 우변값을 좌변에 저장할때는 ' := '라는 기호를 사용합니다.

6. 문자형 자료를 나타내는 기호는 ' " '을 사용합니다.

(예) □글□ 이라는 문자형 변수에 □안녕하세요□ 가 저장됨.

글 := "안녕하세요";

7. 주석은 ' // '를 사용합니다.  창조에서 주석이란 프로그램 수행에 영향을 주지      않는 문장을 말합니다.

8. 여러명령을 하나로 뭉치려면  ' {  } '를 사용하여 둘러싸면 됩니다.

9. 객체에 있는 속성이나 함수(명령어)를 사용 하려면 해당하는 객체의 이름을 적      은후  ' . '으로 구분하고 속성이나 함수의 이름을 사용하면 됩니다.

(예) 창의 이름이 '창0'이고  '제목'이라는 속성을 변경함.

창0.제목 := "저는 창 제목입니다.";

실행시키면 창0 의 제목이 □저는 창 제목입니다.□ 로 변경됨.

10. 객체의 이름을 수정할 때 새로운 이름의 첫머리에 숫자를 써서는 안됩니다.

† 자료형 ¶

기본적인 자료형에는 문자형, 실수형, 진리형이 존재합니다.  문자형은 말그대로 내용을 문자취급 하는 것이고 실수형은 내용을 수치(실수)로 취급합니다.  마지막으로 진리형은 참, 거짓 으로 구분됩니다.

(예)

실수: 수;	//실수형으로 '수'라는 변수정의

문자: 글;	//문자형으로 '글'이라는 변수정의

진리: 진;	//진리형으로 '진'이라는 변수정의

수 := 5 + 40;	//'수' 에 5와 40을 더해서 저장한다.

글 := "안녕하세요";	//'글'에 '안녕하세요'라는 문자를 저장한다.

진 := 거짓;	//'진'에 거짓값을 넣는다.

(예제)

작업메뉴 에서 새작업 을 선택합니다. 화면에 빈 창이 하나 등장할것입니다.(창조를 처음 실행할때처럼) 자~~   그럼 이번에는 □작업도구□창에서 □명령어편집□을 선택합니다. 그중에 '클릭했을 때' 라는 부분이 있을 것입니다. 이것은 마우스로 클릭했을때 실행하고 싶은 명령어를 넣는 곳입니다.  '클릭했을때'의 오른쪽부분을 클릭하면 명령어편집창 이 나타나는데 여기에 다음과 같이 적어넣습니다.

문자창보여("안녕하세요!");   //이함수는 문자를 보여주는 대화창이다.

† 연산자 ¶

연산에는 산술연산과 관계연산 그리고 논리연산이 있습니다. 산술연산에는 기본적으로  덧셈, 뺄셈, 곱셈, 나눗셈, 나머지가 있습니다.

†산술연산

덧   셈:  +

뺄   셈:  -

곱   셈:  *

나눗셈:  /

나머지:  %

(예제1)

실수:  수;

수 := 5 + 4 - 3 * 2 / 2;

문자창보여(수를문(수));

(예제1설명)

실수: 수;	//실수형으로 '수'라는 변수를 만든다.

수 := 5 + 4 - 3 * 2 / 2;     //'수'에 계산값을 저장한다.

문자창보여(수를문(수));         //'수'를 문자형으로 변환한후 문자창에 보인다.

(예제2)

실수: 수;

수:= 15%2;

문자창보여(수를문(수));

(예제2설명)

실수: 수;                //실수형으로 '수'라는 변수를 만든다.

수:= 15%2;             // 15를 2로 나눈 나머지(즉 1)을  □수□에 저장한다

문자창보여(수를문(수));  //'수'를 문자형으로 변환한후 문자창에 보인다.

†관계연산

<   :	식1 <   식2	//식1이 식2보다 작다

<=  :	식1 <= 식2	//식1이 식2보다 작거나 같다

>   :	식1 >   식2	//식1이 식2보다 크다

>=  :	식1 >= 식2	//식1이 식2보다 크거나 같다

=   :	식1 =    식2	//식1이 식2과 같다

<>  :	식1 <> 식2	//식1과 식2는 같지않다

(예제1)

만일(3 > 2)

문자창보여("3이 2보다 크네요");

(예제1설명)

만일(3 > 2)	//만일 3이 2보다 크다면

문자창보여("3이 2보다 크네요");    //"3이 2보다 크네요" 를문자창에 보여라

†논리연산

그리고 :      식1 그리고 식2	식1과 식2가 동시에 만족(AND)

또는:	식1 또는 식2	식1과 식2가 둘 중 하나만 만족(OR)

부정:	부정 식1	식1의 결과를 부정(NOT)

(예제1)

만일(참 또는 거짓)

문자창보여("결과가 참이네요");

아니면

문자창보여("결과가 거짓이네요");

(예제1설명)

만일(참 또는 거짓)	//만일 (참 또는 거짓)이 참이면

문자창보여("결과가 참이네요");   //"결과가 참이네요"를 문자창에 보여라

아니면                             //(참 또는 거짓)이 거짓이라면

문자창보여("결과가 거짓이네요"); //"결과가 거짓이네요"를 문자창에 보여라

▣참고: '참 또는 거짓' 은 '참' , '참 그리고 거짓' 은 '거짓'입니다.

† 조건문 ¶

조건에 따라 문장의 실행흐름이 변경됩니다.  조건에 맞으면 실행을하고,  아니면   실행을 하지 않게됩니다.

†기본형

만일(식1)

명령문장...

아니면

명령문장...

(예제1)

만일(3 > 2)

문자창보여("참이네요");

(예제1설명)

만일(3 > 2)	//만일 3이 2보다 크다면

문자창보여("참이네요");	//"참이네요"를 문자창에 보여라

(예제2)

만일(3 > 2)

문자창보여("참이네요");

아니면

문자창보여("거짓이네요");

(예제2설명)

만일(3 > 2)	//만일 3이 2보다 크다면

문자창보여("참이네요");	//"참이네요"를 문자창에 보여라

아니면	//아니라면

문자창보여("거짓이네요");	//"거짓이네요"를 문자창에 보여라

▣ 참고: 이 예제에서 '문자창보여("거짓이네요");'명령어는 조건에 맞지않              으므로 절대 실행되지 않습니다.

(예제3)

만일(3 = 2)

문자창보여("참이네요");

아니면 만일(4 < 5)

문자창보여("4가 5보다 작네요");

아니면

문자창보여("아무것도 만족하지 못하네요");

(예제3설명)

만일(3 = 2)	//만일 3이 2와 같다면

문자창보여("참이네요");	//"참이네요"를 문자창에 보여라

아니면 만일(4 < 5)	//아니고 만일 4가 5보다 작다면

문자창보여("4가 5보다 작네요");	//"4가 5보다 작네요"를문자창에 보여라

아니면	//이것도 저것도 아니면

문자창보여("아무것도만족하지못하네요"); //"아무것도만족하지못하네요" 를                                                //문자창에 보여라

▣ 참고:  이 예제에서 '문자창보여("4가 5보다 작네요");'명령어가 실행됩니다.

† 반복문 ¶

반복문은 두가지가 존재합니다.

첫째 조건검사를 먼저하고 문자을 실행하는 방법(되풀이)

둘째 한문장을 미리 실행해보고 조건을 검사하는 방법(반복 .. 까지)

반복..까지 명령어는 반드시 한번은 실행이 됩니다.

반복 도중에 빠져나오고 싶다면 '그쳐'를 사용합니다.(다른 언어에서의 'break'기   능입니다.)

반복 도중에 다시 반복문 처음으로 돌아가서 실행하고 싶다면  '다시'를 사용합니   다.(다른 언어에서의 'continue'기능입니다.)

†되풀이 기본형:('식1'조건에 만족하는 동안 되풀이)

되풀이(식1)

명령문자....

†반복..까지 기본형:('식1'조건이 만족될때까지 반복)

반복

명령문자...

까지(식1);

†되풀이예제:(1에서 10까지 더하는 예제)

실수: 수, 합;

수 := 1;

합 := 0;

되풀이(수 < 11)

{

합 := 합 + 수;

수 := 수 + 1;

}

문자창보여(수를문(합));

†되풀이예제설명:

실수: 수, 합;	//실수형 자료로 '수', '합'을 만든다.

수 := 1;	//'수'에 1을 저장한다.

합 := 0;	//'합'에 0을 저장한다.

되풀이(수 < 11)	//'수'가 11보다 작다면 되풀이하라

{

합 := 합 + 수;	//'합'에  '수'를 더하여 '합'에 저장한다.

수 := 수 + 1;	//'수'에  1를 더하여 '수'에 저장한다.

}

문자창보여(수를문(합));   //합을 문자형으로 변경한 후 문자창에 보인다.

†반복예제:(1에서 10까지 더하는 예제)

실수: 수, 합;

수 := 1;

합 := 0;

반복

{

합 := 합 + 수;

수 := 수 + 1;

}까지(수 > 10);

문자창보여(수를문(합));

†반복예제설명:

실수: 수, 합;	//실수형 자료로 '수', '합'을 만든다.

수 := 1;	//'수'에 1을 저장한다.

합 := 0;	//'합'에 0을 저장한다.

반복	//반복명령의 시작

{

합 := 합 + 수;	//'합'에  '수'를 더하여 '합'에 저장한다.

수 := 수 + 1;	//'수'에  1를 더하여 '수'에 저장한다.

}까지(수 > 10)	;	//'수'가 10보다 클때까지 반복하라.

문자창보여(수를문(합));   //합을 문자형으로 변경한 후 문자창에 보인다.

† 함수  ¶

함수: 명령을 내리는데 있어서  특정한 기능을 미리 만들어서 사용하기 편리하도         록 한것입니다. 통상 객체의 '명령어'가 함수에 속합니다. 물론 여러분이 직         접 함수를 만들 수 있습니다.

함수의 종류에는 기본적으로 4가지가 존재합니다.

함수:	반환값이 없는 함수입니다.

실수함수:	실수를 반환하는 함수입니다.

문자함수:	문자를 반환하는 함수입니다.

진리함수:	진리값(참, 거짓)을 반환하는 함수입니다.

인자:  함수가 항상 같은 값을 가진다면 의미가 없겠죠? 원하는 결과값을 얻을 수          있도록 값을 전달하는 역할을 하는 것을 인자 라고 합니다.

함수에는 객체에 존재하는 함수와 시스템관련, 수학관련, 파일관련 및 사용자가    정의한 함수가 있습니다.

창조가 지원해주는 함수및 객체의 명령어(함수)는 도움말을 참조하십시요.

†사용자함수를 만드는 방법

1. □작업메뉴□창  □표준도구□에서 '사용자함수'객체를 창에 올려놓습니다.

2. □작업도구□창에서 '사용자함수'객체의 이름을 적당히 사용용도에 맞춰서 정해줍       니다.

3. □작업도구□창에서 '사용자함수'객체의 □명령어편집□중 빈칸을 클릭합니다.

4. 함수를 만들 수 있는  편집창이 나옵니다.  상단에 있는 편집난은 함수의 선       언부이며  하단은 함수에서 행해지는 명령어를 적는 곳입니다.

▣함수를 선언하는 방법

함수종류: 함수이름(문자: 글);

함수종류:함수,실수함수,문자함수,진리함수 중 하나을 택합니다.

함수이름:여러분이 쓰시고자 하는 용도에 맞게 이름을 정합니다.

문자: 인자형을 뜻합니다.(문자, 실수, 진리 중 하나를 택합니다.)

글: 인자형에 속한 인자입니다.

▣편집난 하단에 행해질 명령을 적는법

결과:=

그러면 직접 원의 면적을 구하는 함수를 하나 만들어 보도록 하겠습니다.

□사용자함수□ 객체를 창에 올려놓습니다.

'사용자함수'객체의 이름을 □속성편집□난에서  "수학함수"라고 바꿉니다(어떤 이름    도 무방함).(9)

□명령어 편집□난을 누르고 왼쪽 빈칸중 아무곳이나 클릭하면 오른쪽이 활성화 되   는데 이곳을 클릭합니다.그러면 함수를 만들 수 있는 편집창이 나옵니다.(10)

함수의 종류는 실수값를 반환하는 '실수함수'를 사용하도록 합니다.

□수학함수□ 의 함수이름을 '원면적'으로 합니다. 객체 □ㅎ사용자함수□ 에는 열 개의 함수를 등록해서 사용할 수 있습니다. 따라서 사용자함수 □수학함수□에는 지금 만드는 실수함수 □원면적□ 이외에 9 개의 함수를 더 만들어서 쓸 수 있습니다.

□실수□라는 인자형에 □반지름□이라는 인자를 정의해 줍니다. 원의 면적을 구할수 있  도록 함수의 결과값을 적는 하단부에 □결과:= 반지름 * 반지름 * 3.14;□라고 적습니다.(11)

문법검사를 누르고 <<문법검사 합격>>이라는 메시지가 나오면 확인을 누릅니다.

그렇다면 이제 사용자 함수를 만들었으므로  사용을 한번 해보도록 하겠습니다.    창의 □명령어편집□에서(창의 아무곳이나 클릭하면 창 이 활성화됨) '클릭했을때'를   선택하면 명령어를 편집할 수 있는데, 여기에 다음과 같이 적습니다.

창0.제목:= 수를문(수학함수.원면적(10));(12)

문법검사를 하고 확인을 누름니다. 실행파일 만들기와 실행을 시키기위해 F8을 누  름니다. 아래와 같이 빈 창이 하나 보일것입니다. 여러분이 작업하기 위해서 창에  올려 놓았던 □사용자함수□ 객체는 원래 속성이 눈에 보이지 않는 속성이기 때문에  작업하는 동안에만 보이고 실제 실행시에는 보이지 않는 것입니다.(13)

이제 실제 결과를 확인하기 위해 창을 클릭해 봅니다. 반지름이 100 인 원의 면적  이 □창0□ 의 제목난에 보일것입니다.(14)

실제 결과값이 맞는지 계산기로 한번 계산을 해 보십시요.

† 배 열 ¶

†동일한 자료형을 여러개의 집단으로 나열하여 사용하는 것을 말합니다. 사용법    은 자료형의 사용법과 유사합니다. 틀린점은 순서대로 자료의 집단을 나열하였    으므로 위치값을 가리키는 서열 을 사용한다는 점입니다. 서열 은 '[', ']'로 둘    러쌓여서 정의됩니다.

▣배열의 규칙

1. 배열의 크기는 [', '] 를 사용하여 정의합니다.

2. 배열의 크기는 정수만을 사용하며 소수가 사용될때 소수점이하는 무시됩니      다.

3. 배열을 초기화하기 위해서는   배열을 정의할때 (', ') 를 사용합니다.

4. 배열의 서열은 0 이 최초 시작값입니다.

5. 객체를 배열할때는 □ # □를 사용합니다.

그러면 배열을 설명하기 위해 일반 자료형과 배열을 비교하여 예제를 살펴보겠습  니다.  먼저 예제1과 예제2는 3개의 실수형 자료를 선언하는 예입니다.  일반자료  형(예제1)은 3개의 실수를 정의하기 위해 3개의 변수를 사용하였지만,  배열은 하  나의 변수에 3개의 자료를 담을 수 있습니다.

(예제1)

실수: 수, 우, 미;

(예제2)

실수: 점[3];

그렇다면 실제로 적용하는 예를 살펴보겠습니다. 예제3은 일반자료형이며  예제4  는 배열을 사용한 것입니다.

(예제3)

실수: 수, 우, 미;

수 := 90;

우 := 80;

미 := 70;

(예제4)

실수: 점[3];

점[0] := 90;

점[1] := 80;

점[2] := 70;

주의 :  배열의 크기가 3 이라고 해서 점[1], 점[2], 점[3]으로 정하지 않습니다.

†앞에서는 일차원배열 이라는 기본적인 배열을 알아보았습니다. 이제는 다차원배

열을 알아보겠습니다. 다차원배열을 1차원, 2차원, 3차원등 공간개념으로 생각해  도 좋습니다. 하지만 차원이 높아질수록 이해하기 어려울 수 있으므로 적응이    되면 그냥 1차원처럼 취급해도 됩니다.  어지러운 설명보다 실제 예제로 설명을  해 보겠습니다.

▣다차원배열은 그냥 [', '] 을 여러개로 구분하여 나열했다고 보면됩니다.

(2차원 예)  :  배열의 크기는 6입니다.(2  * 3)

실수: 수[2][3];

(3차원 예)  :  배열의 크기는 16입니다.(2 * 4 * 2)

문자: 문[2][4][2];

(4차원 예)  : (5 * 10 * 3 * 4)

실수: 점[5][10][3][4];

†배열의 초기화에 대해 알아보도록 하겠습니다.

예제1과 예제2의 결과는 같습니다.(변수 '우'에는 6이 저장됨)

(예제1) : 일반적으로 생각할 수 있는 방법

실수: 우, 수[2][3];

수[0][0] := 1;

수[1][0] := 2;

수[0][1] := 3;

수[1][1] := 4;

수[0][2] := 5;

수[1][2] := 6;

우 := 수[1][0] + 수[1][1];

(예제2) : 간단히 초기화하는 방법

실수: 우, 수[2][3] = 우, (1, 2, 3, 4, 5, 6);

우 := 수[1][0] + 수[1][1];

예제3과 예제4의 결과는 같습니다.

(예제3) : 일반적으로 생각할 수 있는 방법

문자: 문[2][3];

문[0][0] := "1";

문[1][0] := "2";

문[0][1] := "저는 문자입니다.";

문[1][1] := "4";

문[0][2] := "5";

문[1][2] := "6";

문자창보여(문[0][1]);

(예제4) : 간단히 초기화하는 방법

문자: 문[2][3] = ("1", "2", "저는 문자입니다.", "4", "5", "6");

문자창보여(문[0][1]);

†객체의 배열에 대해 알아보도록 하겠습니다.  객체의 배열이란 말 그대로 객체

들을 배열하는 것입니다. 가령 창에 객체 □ㅎ메모□ 가 여섯 개 있는데 어느순간 필요에 의해서 이 객체들을 보이게 하고 또 보이지 않게 하고 싶을 때 □객체의 배열□을 사용하지 않으면 일일이 다 써주어야 되지만 □객체의 배열□을 사용하면 간단하게 처리할 수 있습니다.

(예제1) :  객체의 배열을 사용하지 않았을 때

메모0.보이기:= 참;

메모1.보이기:= 참;

메모2.보이기:= 참;

메모3.보이기:= 참;

메모4.보이기:= 참;

메모5.보이기:= 참;

(예제2)  :  객체의 배열을 사용할 때

실수: 수;

수:= 0;

되풀이(수<6)

{

메모#수.보이기:= 참;

수:= 수 + 1;

}

※ 언뜻 보기에는 별로 편리하다는 것을 못 느낄지도 모르나 객체의 수가 많아

지거나 명령문이 길 경우에는 객체의 배열을 사용하는 것이 매우 편리합니다

3. 창조 에 포함된 객체

창조에는 30 가지가 넘는  객체가 포함되어 있습니다. □작업메뉴□창에서 하단부 좌측에 있는 화살표를 클릭하면 표준도구 와 멀티미디어가 번갈아 보일것입니다.(15)(16)

이제부터 이 객체들이 어떤 용도로 사용이 되는지 설명하도록 하겠습니다. 먼저   표준도구 에 포함된 객체부터 설명을 하겠습니다.

†ㅎ사용자함수

창조에서 지원하는 기본적인 함수 외에 사용자가 임의로 함수를 만들어 쓸 수 있  도록 만들어 놓은 객체입니다. 사용자함수를 만든는 방법은 위에서 문법을 설명할  때 이미 했으므로 여기서는 생략하도록 하겠습니다.

†ㅎ시계

일정한 시간이 흐름에따라 명령어를 반복하고 싶을때 사용하는 객체입니다. 사용  방법을 직접 예를 들어 설명하겠습니다. 인터넷이나 기타 프로그램상에서 글자가  번쩍번쩍하며 색이 바뀌는 것을 보셨을 겁니다. 그것처럼 글자색이 0.3초마다 바   뀌도록 만들어 보겠습니다. □ㅎ시계□를 사용함에 있어 주의할점은 □ㅎ시계□자체가 되풀이 기능을 가지고 있으므로 만일 이 안에다 되풀이 명령을 사용하면 무한루프에 빠질 수 있다는 점입니다. 따라서 □ㅎ시계□ 안에 반복문을 사용하려면 무한루프에 빠지지 않도록 신중해야 합니다.

먼저 □작업메뉴□창의 파일에서 새작업 을 선택합니다. □작업메뉴□창의 표준도구 중  □ㅎ이름표□(□가□로 표기되어 있음)라는 객체를 창에 올려놓습니다.(17)

□작업도구□창에서 □속성편집□ 난을 선택하고 □제목□을 [재미있는 창조] 라고 변경     하고 엔터를 칩니다(엔터를 치지 않으면 이름표 안의 내용이 바뀌지 않음). □속성  편집□난의 □글꼴□을 선택하면 글꼴창이 뜨는데 색을 연두색으로 하고 확인을 누    릅니다.(18)(19)

이제 □작업메뉴□창의 표준도구에서 □ㅎ시계□를 창에 올려놓습니다. □작업도구□창의   속성편집 난에서 시간간격을 300 으로 합니다.(20)

다음으로 명령어 편집 난에서 □시계가 작동될 때□ 라는 사건을 클릭하면 오른쪽   버튼이 활성화되는데 이버튼을 클릭합니다. 그러면 □시계가 작동될때□라는 사건에  명령을 내릴수 있는 명령어 편집창 나옵니다. 이곳에 다음과 같이 적어넣고 문법   검사를 한 뒤 확인을 누릅니다..(21)

만일(이름표0.글꼴.색상=ㅅ연두)

이름표0.글꼴.색상:=ㅅ빨강;

아니면 만일(이름표0.글꼴.색상=ㅅ빨강)

이름표0.글꼴.색상:=ㅅ연두;

▣ 참고 : 위 □시계가 작동될 때□ 라는 사건에 적은 명령어중 □만일□ 과 □아니면□ 은            조건문입니다. 앞에서 설명한 문법 중 조건문 을 참고하십시요.

이름표0.글꼴.색상=ㅅ연두

∀'이름표0□ 는객체□ㅎ이름표□의 이름입니다. 위에서 작업할 때 창에 객체 □ㅎ이름

표□ 를 올려놓고 □작업도구□ 창의 속성편집난에서 □이름□ 속성을 수정하지 않았기 때문에 이름이 □이름표0□로 되어있습니다. 만일 □이름□ 속성을 수정했다면 □이름표0□ 대신 수정하신 이름으로 적으시면 됩니다.

□ㅎ글꼴□ 은 글자들의 속성을 제어하는 보이지않는 객체입니다.  이것은 단독으로 사용되기보다는 다른 보이는 객체에 포함된 객체입니다. 객체 □ㅎ이름표□ 를 창에 올려놓고 F1을 누르시면 □ㅎ이름표□ 에 대한 도움말이 뜨는데 속성에 보면 □글꼴□이 있습니다.

□색상□ 은 객체 □ㅎ글꼴□ 이 가지고 있는 속성중 하나로   글꼴의 색상을 지정하거나 알 수 있습니다.

□ㅅ연두□ 는 색이 연두색이라는 의미입니다. □ㅅ□은 연두가 색이라는 것을 나타내주기 위해 쓰였습니다.(색상에서 ㅅ을 따왔음)

F8을 누르면 실행파일 만들기와 실행이 동시에 이루어 집니다. F8을 눌러보세요.  어때요? 글자색이 바뀌죠?

이제 이 프로그램을 저장해 보도록 하겠습니다. 여러분이 만드신 프로그램을 저장  할때는 작업(*.nhp)과 창(*.nhw) 두가지를 저장하셔야 합니다.작업에는 프로그램의  전반적인 사항이 저장됩니다. 가령 창은 몇 개가 쓰였으며 작업은 어떻게 구성이 되었는지등이 저장됩니다.  창에는 말 그대로 창이 저장됩니다. 나중에 작업을 열때는 *.nhp 파일을 열면 창은 같이 열립니다. 저장하는 방법은 다음과 같습니다. □작업메뉴□창에서 파일에 보면 □작업저장(O)□이 있는데 이곳을 클릭하면 작업이 현재 작업경로에  □PROJECTN'으로 저장됨과 동시에 창을 저장하라는 메뉴가 뜹니다. 현재 작업경로는 □작업메뉴□창의 작업을 선택해서 작업환경을 보시면 알 수 있습니다.따라서 만일 여러분이 원하시는 이름과 디렉토리에 작업을 저장하시려면 □  다른이름으로 저장(A)'을 선택하시고 경로지정후 파일명을 적어주시면 됩니다. 한번 파일명을 정하셨다면 다음부터 그냥 □작업저장(O)'을 선택해도 앞에 지정한 이름과 디렉토리에 저장이 됩니다. 작업저장시 저장할 파일이름을 적고 엔터키를 치면 창을 저장하는 메뉴가 뜨는데  작업저장과 같은 방법으로 하시면 됩니다. 창은 한번만 저장하면 다음부터 작업을  저장할 때 자동으로 저장이 됩니다.

†ㅎ이름표

이름표는 라벨(Label)을 객체화한것입니다.  제목이나 간단한 글을 적을때 유용합  니다. 'ㅎ시계□를 설명하면서 한번 사용을 했으므로 다시 설명은 하지 않겠습니다.

†ㅎ에디트

문자를 입력받아 처리할 수 있도록 하는 객체입니다. 윈도우의 기본적인 객체라 설명이 필요 없겠지만 사용방법을 예를들어 설명해 보겠습니다. 곱셈으로 예를 들어 보도록 하겠습니다.  □ㅎ에디트□가 세 개 창에 떠 있고 두 개의 □ㅎ에디트□에 각  각의 수치를 입력하면 그 두수를 곱해서 세 번째 □ㅎ에디트□에 결과를 보이도록   하겠습니다.

먼저 작업창에 객체 □ㅎ에디트□를 세 개 올려놓습니다. □작업메뉴□창에서 한번씩 클  릭해서 올려놓아도 되고 아니면 하나만 올려놓고 활성화한 뒤 마우스 오른쪽 버  튼을 눌러 복사해도 됩니다. 한꺼번에 많은수의 객체를 복사할때는 SHIFT 키를  누른상태에서 복사하고자 하는 객체를 하나씩 마우스로 선택한 뒤 마우스 오른쪽  키를 눌러서 복사를 선택하면 됩니다. 여러개의 객체를 창에 올려놓고 원하는 위치에 정렬을 시킬때도 정렬하고자 하는 객체를 모두 선택한 뒤 마우스 오른쪽키를 이용하면 됩니다. 지금 객체 □ㅎ에디트□를 세 개 창에 올려놓았는데 이 세 개를 일직선상에 반듯하게 놓고 싶으면 모두 선택한 뒤 마우스 오른쪽키를 눌러서 □위치맞추기□를 이용하면 됩니다. (22)

지금 만들려고 하는 양식이  'A X B = C' 이므로 X(곱하기) 와 =(는) 를 표현하  기위해 □ㅎ이름표□ 객체를 두 개 창에 올려놓습니다.(23)

이름표0 를 마우스로 한번 클릭해서 활성화시킨 뒤 □작업도구□창의 속성편집난에  서 제목을 □이름표0□에서 영문 대문자 □X' 로 바꿉니다. 다음 이름표1을 활성화시  킨 뒤 □작업도구□창 속성편집 난에서 제목을 □=□로 바꾼 뒤 위치를 아래와 같이 이  동시킵니다.(24)

에디트0, 에디트1, 에디트2를 차례로 활성화시킨뒤 □작업도구□창 속성편집난에서   문자를 선택한 뒤 Delete 키를 눌러 내용을 모두 삭제합니다.(25)

자! 이제 외형갖추기는 끝이 났습니다.이제 좌측 두 빈칸에 수치를 입력하고 창을  클릭하면 오른쪽 빈칸에 두 수치를 곱한 결과값이 출력되도록 명령을 내려보겠습  니다.

먼저 □창0□의 아무곳이나 마우스로 클릭해서 □창0□을 활성화시킵니다.□작업도구□창의  명령어편집 난에서 □클릭했을때□라는 사건에 다음과 같이 적어줍니다.(26)

문법검사를 하고 확인을 누른 뒤 F8을 눌러서 실행을 시킵니다. 아래와 같이 실행된 모습을 볼수 있으실 겁니다.(27)

실제로 좌측 두 빈칸에 수치를 입력하고 창을 클릭해 보십시오.

▣ 참고

실수 : 수;

∀실수형으로 □수□ 라는 변수를 만든것입니다.

수:=문을수(에디트0.문자, 1) * 문을수(에디트1.문자, 1);

∀객체 □ㅎ에디트□ 는 입력되어진 내용을 모두 문자로 인식을 하기 때문에 우리가

입력한 내용을 숫자로 바꾸어주어야 합니다(가령 우리가 □ 1 □ 이라고 입력했다고 했을 때 에디트는 이를 문자로 인식하고 숫자 □ 1 □ 로 인식하지 않습니다. 따라서 곱셈을 하려면 우리가 입력한 □ 1 □을 숫자라고 가르켜 주어야 합니다). 이렇게 문자룰 숫자로 바꾸어주는 명령어가 □문을수□입니다.  사용방법은 다음과 같습니다.

문을수(수로 바꾸고자 하는 문자 , 숫자로 바꾸지 못했을경우의 초기값)

문을수(창조 , 1); 이라고 했다면 □창조□를 수로 바꾸지 못하므로 □1□이 반환  됩니다. F1을 눌러 도움말을 부른 뒤 색인에서 □수,문자(변수)에 관련된 함수들□을 보면 □문을수□ 라는 함수가 있습니다.이것을 참조하시면 됩니다.

객체 □ㅎ에디트□ 의 □문자□ 라는 속성은 에디트에 쓰여진 내용을 알 수 있고 또 변경할 수 있는 속성입니다.

□에디트0□ 와 □에디트1□ 에 입력한 내용을 숫자로 변환한 뒤 곱해서 실수형변수 □수□에 저장하라는 의미입니다.

에디트2.문자:= 수를문(수);

∀변수 □수□ 가 실수형이기 때문에 이를 에디트에 나타내기 위해서는 다시 문자형

으로 바꿔줘야 합니다. 이처럼 숫자를 문자형으로 변환해주는 명령이 □ 수를문□입니다. □수□를 문자형으로 바꾼 뒤 □에디트2.문자□ 에 저장하라는 의미입니다.

†ㅎ메모

문서의 읽기와 쓰기가 가능한 객체입니다. 사용방법은 사용자에 따라 수많은 방   법이 있을 수 있습니다. 여기서는 간단하게 파일을 읽어오는 방법과 마지막 줄에  새로운 문자열을 추가하는 방법을 예로들어 설명하도록 하겠습니다.

창에 객체 □ㅎ메모□와 □ㅎ버튼□을 하나씩 올려놓습니다.(28)

□메모0□를 클릭해서 활성화 시킨 뒤 □작업도구□창의 □속성편집□난에서 □내용□을 선택  한뒤 □메모0□ 라고 되어있는 것을 삭제합니다. 이번에는 □속성편집□난에서 □스크롤양식□을 선택한 뒤 스크롤양식을 □ㅅㅇ둘다□ 로 합니다. □버튼0□ 을 클릭해서 활성화 시킨뒤 □작업도구□창의 □속성편집□ 난에서 □제목□을 □문서읽기□ 라고 바꿉니다.(29)

이제 □버튼0□을(□이름□ 속성은 □버튼0□ 이고 □제목□ 속성이 □문서읽기□ 임) 클릭했을 때 □메모0□ 안에 문서파일을 읽어오도록 명령을 내리겠습니다.  문서파일을 불러오기위해서 실제로 C드라이브의 루트에 test.txt 라는 문서파일을 하나 만들어 놓습니다. 문서파일의 내용을 다음과 같이 합니다 .

□안녕하세요! 창조의 문서파일 읽어오기 예제입니다.□

이제 제목이 □문서읽기□로 되어있는 □버튼0□을 클릭해서 활성화 시킨 뒤 □작업도구□  창의 □명령어 편집□난에서 □클릭했을때□ 라는 사건에 다음과 같이 적어줍니다.(30)

문법검사를 하고 확인을 누릅니다. 이상으로 모든작업이 끝이 났습니다.이제 □작업  메뉴□창의 작업에서 실행(R)을 선택하든지 아니면 직접 F8을 눌러서 실행을 시켜  봅니다. 실제로 문서파일을 읽어오는지 □문서읽기□를 클릭해 보십시요.아래와 같이  문서파일을 읽어올 것입니다.(31)

스크롤바를 이동시키면 문서의 끝까지 볼 수 있습니다.	이제 □메모0□의 마지막줄  에 새로운 문자열을 추가해 보도록 하겠습니다. 위에서 작업했던 □창0□에 객체□ㅎ버튼□을 하나 더 올려놓습니다.  새로 올려놓은 □버튼1□을 클릭해서 활성화 시킨 뒤 □작업도구□창의 □속성편집□ 난에서 제목을 □문자열추가□ 라고 고칩니다(객체를 더블클릭 하면 바로 □작업도구□창으로 이동합니다) 이제 □명령어편집□ 난을 선택하고 □클릭했을때□ 라는 사건에 다음과 같이 적습니다. (32)

명령어편집창에서 명령을 일일이 타이프 해주어도 되고 그렇지 않으면 □Crtl + A'를 사용해도 됩니다. □Crtl + A□를 누르면 현재 창에 올려져 있는 객체와 기본명령어를 볼 수 있습니다. 여기서 원하는 객체를 선택하고 엔터를 치면 선택된 객체가 입력되어집니다. 가령 □메모0□를 선택하고 엔터를 쳐서 입력시켰다면 메모0 뒤에 □ . □를 쓰고 다시한번 □Crtl + A□ 눌러보십시오.  이번에는 □ㅎ메모□ 의 속성과 명령어를 볼 수 있을 것입니다. 객체의 속성과 명령어를 모두 기억하지 못할 때 사용하면 편리합니다.

문법검사를 하고 확인을 누른 뒤 F8을 눌러서 실행을 시킵니다.먼저 □문서읽기□를 누르고 다음에 □문자열추가□ 버튼을 몇번 되풀이해서 눌러보십시오. 버튼을 누를때마다 마지막줄에 새로운 문자열이 추가되는 것을 보실 수 있을겁니다.(33)

문자열을 추가한것처럼 반대로 삭제할수도 있습니다.문자열을 삭제할때는 다음과  같이 명령을 내리면 됩니다.

메모0.내용.삭제(2);

괄호안의 숫자 2 는 지우고자 하는 줄의 수입니다. 첫번째줄이 0부터 시작하므로 3  번째줄의 문자열이 지워지게 됩니다.

▣ 참고

메모0.내용.파일읽어("c:\test.txt");

∀□내용□은 문서의 내용을 담을수 있는 □ㅎ문자열□ 객체입니다. 다른 객체처럼 따로

쓰이지 않고 □ㅎ메모□ 객체등에 포함되어서 사용됩니다.

□파일읽어□ 는 □내용□ 에 포함된 명령어로 문자열객체에 문서파일을 읽어들이는 명령어입니다. 괄호안에는 읽어올 문서파일의 종류를 경로포함해서 적어주면 됩니다.

메모0.내용.추가(□제가 추가되거든요□);

∀□추가□ 는 문자열의 마지막 줄에 새로운 문자를 추가해주는 명령으로 객체 □ㅎ문

자열□ 에 포함된 명령어 입니다.

이 책에서 다루지 않은 '속성'과 '명령어'는 창조의 도움말을 참고하시면 됩니다.

객체 'ㅎ메모□ 에 대한 속성과 명령어를 보시려면 객체 □ㅎ메모□를 활성화한 뒤     F1 키를 누르시면 됩니다.

†ㅎ그룹박스

그룹박스는 내부에 비슷한 일을 하는 객체들을 모아서 관리하도록 만든 객체입니  다. 관리상 편리성과 미관상 필요한 객체입니다. 남발하지않고 필요한 곳에 적    절히 배치시키면 관리하기도 수월하고 보기에도 좋습니다. □ㅎ그룹박스□ 의 사용   법을 간단한 명함관리 프로그램을 예로 들어서 설명하도록 하겠습니다. 창에 버튼  이 여러개 있고 그 버튼에는 각각 다른 이름이 쓰여져 있을 때 버튼을 누르면 그  버튼에 쓰여진 사람의 신상명세가 나오도록 하겠습니다.(이것은 간단한 예일뿐이  므로 실제 명함관리에 쓰기에는 부적합합니다)

□작업메뉴□창의 파일에서 □새작업(P)□을 선택합니다.□작업도구□창의 □속성편집□난에서  □높이□ 와 □폭□ 을 290 으로 합니다. 다음에 □색상□ 을 옅은밤색으로 하고 □제목□을 □명함관리□ 로 고칩니다. 창에다 □ㅎ그룹박스□를 두개 올려놓은 뒤 창의 크기에 맞게 적절히 크기를 조절합니다.(34)

그룹박스0 에는 객체 □ㅎ이름표□를 6개 그룹박스1 에는 객체 □ㅎ버튼□을 6개씩 올려 놓습니다.(35)

□그룹박스0□을 클릭해서 활성화시킨 뒤 □작업도구□ 창의 □속성편집□중 □제목□을 □신상  명세□로 바꿉니다. 다음에 □부모글꼴□이라는 속성을 □거짓□으로 하고 □글꼴□속성에서  색을 연두색으로 합니다.

□그룹박스1□을 클릭해서 활성화시킨 뒤 □작업도구□창의 □속성편집□중 □제목□을 □이 름□  으로 바꾸고 □부모글꼴□ 속성을 □거짓□ 으로합니다. 그리고 □글꼴□속성에서 색을 □연두색□ 으로 합니다.

다음에 □이름표0□ 를 클릭해서 활성화시킨 뒤 □작업도구□창의 □속성편집□난에서 □제목□ 을 □생년월일 :□ 로 바꾸고 □부모글꼴□ 을 □거짓□ 으로 합니다.( 만일 □부모글꼴□을 □참□ 으로 하면 □이름표0□ 의 부모가 □그룹박스0□ 이므로 □그룹박스0□의 글꼴을 그대로 물려받게 됩니다) 다음에 □글꼴□ 이라는 속성에서 글꼴은 □굴림□ 글꼴유형은 □굵게□ 크기는 □12□  로 합니다. 같은 방법으로 □이름표1□ 의 □제목□은  □직  업 :□, □이름표2□의 □제목□은 □전화번호□ 로 바꿉니다.

□이름표3□, □이름표4□, □이름표5□를 차례로 클릭해서 □제목□을 삭제하고 각각 폭을 150   으로 합니다.(37)

□버튼0□을 클릭해서  활성화시킨 뒤 □작업도구□창의 □속성편집□ 난에서 □부모글꼴□ 속  성을 □거짓□으로 하고  □글꼴□속성에서 색을 검정으로 합니다. 다음에 □제목□ 속성을  선택해서 □이몽룡□이라고 적습니다. 마찬가지로 □버튼1□ , □버튼2□ , □버튼3□ , □버튼4□,  □버튼5□ 도 □버튼0□와 같이 속성을 변화시킨 뒤 제목에 적당한 이름을 적습니      다.(38)

이제 이름이 적혀있는 버튼을 클릭했을 때 신상명세가 나오도록 명령을 내리겠습  니다. 버튼이 6개 있는데 한개만 예를 들어서 하도록 하겠습니다. □이몽룡□이라고  쓰여있는 버튼을 클릭해서 활성화 시킵니다. 다음에 □작업도구□창에서 □명령어편집   □난중 □클릭했을때□ 라는 사건에 다음과 같이 적습니다. 명령어편집난에서 Crtl + A를 누르면 창에 포함된 객체와 속성, 명령어를 볼 수 있으며 엔터를 치면 선택된 위치의 문장이 삽입됩니다.

이름표3.제목:="옛날옛적";

이름표4.제목:="선  비";

이름표5.제목:="555-5555";

문법검사를 하고 확인을 누릅니다. 자 이제 F8을 눌러서 실행을 시켜보십시요.(39)

자 이제 이몽룡 이라고 쓰여있는 버튼을 클릭해 보십시오.(40)

어떻습니까? 그냥 버튼과 이름표만 창에 올려놓는것보다 □ㅎ그룹박스□안에 올려놓  으니까 더 보기에 좋지 않습니까?

†ㅎ밑판

객체 'ㅎ밑판'은 윈도우를 꾸미기 위해 필요하다고 볼 수 있습니다. 그리고 편법  을 사용하는데에도 필요합니다. 어떻게 편법을 사용할지는 프로그래밍하는 여러분  에게 달려있습니다. 하는일이 별로 없어보이기는 해도 사실 사용하는 여러분이 어  떻게 사용하는지에 따라 꼭 필요한 객체입니다.

만일 어떤 객체를 창에 올려놓았다면 그객체의 부모는 창이 됩니다. 그래서 그 객  체는 창을 벗어날 수 없게 됩니다. 마찬가지로 객체 □ㅎ밑판□ 에 어떤 객체를 올려  놓게 되면 그 객체의 부모는 밑판 이 됩니다 그래서 그 객체는 밑판을 벗어날 수  없게 됩니다. 만일 어떤객체의 □부모글꼴□ 속성이 참으로 되어있다면 그 객체의 글  꼴은 그 객체를 품고있는 부모의 글꼴을 따르게 됩니다. 따라서 객체 □ㅎ밑판□ 위  에 다른 객체를 올려놓고 글꼴을 밑판과 다르게 하려면 올려놓은 객체의 □부모글꼴□ 속성을 거짓으로 해야 합니다.

객체 □ ㅎ밑판□을 편법에 어떻게 사용하는지는 실제 프로그램을 만들면서 여러분  의 사용방법에 따라 달라집니다. 여기서는 간단하게 밑판을 창에 올려놓고 그 밑  판위에다 다른 몇 개의 객체를 올린 뒤 실행을 시켜보는 것으로 끝내겠습니다.

먼저 창의 크기를 높이 200 폭 300 으로 조절합니다. 다음에 창위에다 □ㅎ밑판□을  두개 올려놓습니다. 밑판의 크기를 다음과 같이 적당히 조절합니다. (41)

□창0□의 빈곳을 클릭해서 활성화시킨 뒤 □작업도구□창의 □속성편집□난에서 □제목□을  □계획표□ 라고 합니다. □밑판0□ 와 □밑판1□ 의 속성편집난에서 □제목□을 선택한 뒤    Delete 키를 눌러서 내용을 삭제합니다. (42)

왼쪽에 있는 밑판을 클릭한 뒤 □속성편집□난에서 □색상□을 빨강으로 합니다. 오른쪽  밑판도 같은방법으로 □색상□을 노랑으로 합니다. 다음에 □작업메뉴□창의 멀티미디어  도구중 □ㅎ멀티이름표□객체를 왼쪽 밑판위에 올려놓습니다. 그리고 멀티이름표의   속성편집난에서 □폭□은 25 □높이□는 135 로 합니다. 다음에 □작업메뉴□창의 표준도구  중 객체 □ㅎ이름표□ 두 개를 오른쪽 밑판위에 올려놓습니다.(43)

왼쪽밑판위에 올려져 있는 □멀티이름표0□를 클릭해서 활성화 시킨 뒤 □작업도구□창  의 속성편집난중 내용에 다음과 같이 적습니다.

이

달

의

계

획

속성편집난중 □글꼴□에서 크기를 10 으로 합니다. 다음에 □이름표0□ 의 속성중 □제  목□을 □1. 창조를 배운다.□ 로 고칩니다.마찬가지로 □이름표1□ 의 속성중 □제목□을 □ 2.  창조로 뭔가를 만든다.□ 라고 바꿉니다. 이제 F8을 눌러서 실행을 시켜봅니다.(44)

간단하게 객체 □ㅎ밑판□을 사용해 보았습니다. 하지만 이것은 어디까지나 밑판의   실행모습을 보여주는 정도밖에 되지 않습니다. 실제 사용은 여러분이 직접 프로그  램을 만들면서 응용을 어떻게 하느냐에 따라 달라집니다.

†ㅎ버튼

마우스나 키보드같은 입력장치로 제어를 할 수 있는 객체입니다. 윈도우에서 사용  빈도가 가장 많다고 해도 과언이 아닌 객체입니다. 멀티버튼과 비교했을때 모양이  좀 평범해서 그렇지 사실상 이 버튼이 전통성 있는 버튼입니다. 하지만 많은 효   과를 주고 싶다면 멀티버튼을 사용하는 것이 좋습니다. 버튼의 사용방법은 위에서  다른객체의 사용법을 설명하면서 이미 사용을 했기 때문에 생략하도록 하겠습니  다.

†ㅎ문자표

표를 이용하여 문자를 보이는 객체입니다. 종칸과 횡칸이라는 용어가 자주 등장하  는데 종칸은 세로칸을 말하며 횡칸은 가로칸을 말하는 것입니다. 문자를 기록하고  읽어올 수 있습니다. 간단하게 시간표를 만들어서 □ㅎ문자표□ 의 사용법을 알아보  도록 하겠습니다.

먼저 □작업메뉴□창의 파일에서 새작업을 선택합니다. □작업도구□창의 속성편집난에  서 □색상□을 □밤색□, □내부높이□를 151 □내부폭□을 320, □우활성색상□ 과 □우비활성색   상□을 □자주색□, □제목□을 □시간표□, □좌활성색상□ 과 □좌비활성색상□을 □연두색□으로 각  각 수정합니다. 다음에 창에다 객체 □ㅎ문자열□을 하나 올려놓습니다. □작업도구□창  의 속성편집난에서 □고정칸색상□을 □분홍□ , □스크롤양식□을 □ㅅㅇ무효□ , □횡칸수□를 5  □칸폭□을 42 □칸높이□를 24 □종칸수□를 7, □높이□를 130 □폭□을 305 로 합니다.(45)

이제 시간표의 외형은 갖추어 졌습니다. 그러면 시간표 안에 문자를 채워넣는 작  업을 하도록 하겠습니다.먼저 □작업메뉴□창의 작업(P)에서 □초기화명령어편집(I)'를  선택하고 다음과 같이 적습니다.

난수초기화;

다음에 □창0□(제목은 □시간표□이지만 이름은 □창0□임)를 클릭해서 활성화시킨 뒤 □작  업도구□창의 명령어편집난에서 □생성할 때□ 라는 사건에 다음과 같이 적습니다.

실수:가로,세로,수;

문자:과목;

문자표0.칸내용써(0,0,"시간표");

문자표0.칸내용써(0,1,"1교시");

문자표0.칸내용써(0,2,"2교시");

문자표0.칸내용써(0,3,"3교시");

문자표0.칸내용써(0,4,"4교시");

문자표0.칸내용써(1,0,"월요일");

문자표0.칸내용써(2,0,"화요일");

문자표0.칸내용써(3,0,"수요일");

문자표0.칸내용써(4,0,"목요일");

문자표0.칸내용써(5,0,"금요일");

문자표0.칸내용써(6,0,"토요일");

세로:=1;

되풀이(세로<5)

{

가로:=1;

되풀이(가로<7)

{

수:=난수(4);

만일(수=0)

과목:="국어";

만일 (수=1)

과목:="수학";

만일 (수=2)

과목:="영어";

만일 (수=3)

과목:="한문";

문자표0.칸내용써(가로,세로,과목);

가로:=가로+1;

}

세로:=세로+1;

}

문법검사를 하고 확인을 누른 뒤 □작업메뉴□창의 □작업(P)'에서 '실행(R)'을 선택하  던지 아니면 F8을 눌러서 실행을 시킵니다.실행을 종료하고 다시한번 실행을 해  보십시오. 몇번이고 되풀이해서 실행을 시켜도 왠만해서  같은 시간표는 나오지   않을 것입니다. 이는 바로 □난수□ 라는 것을 사용했기 때문인데 아래에서 설명하겠  습니다. (46)

▣ 참고

문자표0.칸내용써(0,0,"시간표");

∀객체 □ㅎ문자표□ 안에 문자를 쓰기위해서는 □칸내용써□라는 명령어를 사용합니다.

괄호안의 내용이 의미하는 것은 (횡칸수, 종칸수, 쓰여질 내용) 입니다.첫번째 서열은 0 이므로 가로열 첫 번째 세로열 첫 번째 칸에 □시간표□ 라고 쓰라는 명령어입니다.

난수초기화; ,  실수:수; , 수:=난수(4);

∀난수를 사용하면 말 그대로 난수를 반환해 줍니다.  난수를 사용하기 위해서는

반드시 난수초기화를 해주어야 하는데 이는 프로그램 시작시 한번만 해주면 됩니다. 수:=난수(4); 는 0부터 3까지 무작위로 추출해서 □수□ 에 반환해 줍니다. 가령 수:=난수(100); 이라고 했다면 0부터 99까지의 수중에서 아무수나 □수□에 반환해 줍니다.

†ㅎ분할대

분할대(일명: Splitter)는 두개의 객체가 창에 올려져 있다고 가정했을때(예를 들어  '메모'와 '리스트박스'), 두개의 객체를 분할해서 마우스로 드래그하게되면 각객체  의 크기를 조절할 수 있는 기능을 가지고 있습니다. 윈도우의 탐색기를 보면 양쪽  을 나누어서 마우스로 드래그하면 칸의 크기가 조절되는 것을 보았을 것입니다.   바로 이것을 말합니다.간단하게 객체 □ㅎ분할대□를 창에 올려놓고 실행된 모습을   보도록 하겠습니다.

먼저 'ㅎ메모' 객체를 창에 올려놓고  '정렬양식'속성을 'ㅈㅇ좌'로 합니다.

'ㅎ분할대' 객체를 창에 올려놓습니다. □색상□ 속성을 분홍 으로 합니다.

'ㅎ리스트박스'객체를 창에 올려놓고  '정렬양식'속성을 'ㅈㅇ전체'로 합니다.

이렇게되면 좌측에서부터 '메모', '분할대', '리스트박스'순으로 놓이게됩니다.

만일 순서가 틀리게 되었다면 마우스로 순서대로 위치시킵니다.

이제 실행파일을 만들어서 분할대를 드래그해세요.어떻습니까? 재미있지 않습니까? (47)

†ㅎ툴바, ㅎ합판

툴바(ToolBar)는 말그대로 도구들을 차례대로 정렬하기 위한 막대입니다.  툴바를  'ㅎ합판'에 올려놓고 툴바에는 다른 버튼이나 객체를 올려놓으면 됩니다.  창조의  메뉴창에 보면 많은 버튼이 나열되어 있는데 이것이 바로 툴바위에 올려진 것입  니다.  툴바는 'ㅎ합판'에서 분리될 수도 있는 유용한 도구입니다.

주의할 점은 툴바에 객체를 추가하기 전에 왠만하면 합판에 어느정도 자리를 잡  는 것이 좋습니다. 나중에 편집하려면 약간 수고를 해야할 것입니다.

'ㅎ합판'은 'ㅎ툴바' 객체를 붙이거나 뗄 수 있도록 하는 밑판 역할을 합니다.     비유를 하자면 항공모함을 'ㅎ합판'으로 보고  'ㅎ툴바'를 비행기로 볼 수 있습니  다.

'ㅎ합판'과 'ㅎ툴바'의 기본 사용법은 합판을 창에 올려놓고 그위에 툴바를 올리  는 것을 원칙으로 합니다. 간단하게 객체 □ㅎ툴바□를 창에 올려놓고 실행된 모습을  보도록 하겠습니다.

툴바를 사용하기 위해서는 먼저 객체 □ㅎ합판□ 이 있어야 합니다. 객체 □ㅎ합판□을  창에 올려놓습니다. 합판위에 객체 □ㅎ툴바□를 올려 놓습니다. 마지막으로 □ㅎ툴바□  위에 버튼을 세 개 올려놓습니다. F8을 눌러서 실행을 시켜봅니다.(48)

이제 □ㅎ툴바□를 분리시켜 보도록 하겠습니다. 마우스로 드래그하면 이동이 가능한  데 아무곳으로나 한번 이동을 시켜봅니다.(49)

툴바가 분리되면서 새로운 창이 하나 생성된 것을 볼수 있는데 객체 □ㅎ합판□ 은  그대로 □창0□에 남아 있습니다.다만 툴바가 분리됨으로 해서 더 이상 사용성이 없  으므로 눈에 보이지 않게 된 것 뿐입니다. 새로생긴 □툴바0□ 창을 원래의 위치로   이동시키면 원래 모습대로 □창0□의 □ㅎ합판□위에 다시 위치하게 됩니다.

†ㅎ라디오버튼

'ㅎ라디오버튼'객체는 여러개의 라디오버튼을 배열하고 그중에서 마우스등을 이용  해서 하나를 선택하여 환경설정등에 사용하는 객체입니다. 간단하게 시험답안지   를 예로 들어 그 사용법을 설명하도록 하겠습니다.

□작업메뉴□창의 파일에서 새작업을 선택합니다. □작업도구□창의 속성편집난에서 □내  부높이□속성을 170 □내부폭□속성을 360 □색상□속성을 연두 □제목□을 □답안지□ 로 합니  다.

창위에 메모객체를 하나 올려놓습니다. 속성편집난에서 □색상□을 하늘색으로 하고  □읽기전용□속성을 □참□으로 합니다.□내용□속성에 다음과 같이 적습니다.

1번. 1+1 은 무엇일까요?

가.2  나.3  다.4  라.5

2번. 1-1은 무엇일까요?

가.1  나.0  다.3  라.5

창에 이름표 4개를 올려놓습니다. 속성편집난에서 폭과 높이를 13으로 하고 □글꼴□  속성에서 글꼴을 궁서 크기를 10 으로 한 뒤 □제목□을 순서대로 □가□, □나□ ,□다□ ,□라□  로 고칩니다.

그룹박스 객체를 두 개 창에 올려놓습니다. 폭을 40 높이를 150 으로 한 뒤 □제목□  을 하나는 □1번□ 다른 하나는 □2번□으로 고칩니다. □색상□을 적당한 색으로 고칩니다.

그룹박스 위에다 라디오버튼 객체를 4개씩 올려놓습니다.폭과 높이를 18 로 모두  고치고 □제목□을 모두 삭제합니다.

객체 □ㅎ버튼□을 하나 창의 빈곳중 적당한곳에 올려놓고 □제목□속성을 □채점□이라고  고칩니다.(50)

채점이라고 쓰여있는 □버튼0□을 클릭해서 활성화 시킨 뒤 □작업도구□창의 명령어편  집난중 □클릭했을때□라는 사건에 다음과 같이 적습니다.

만일 (라디오버튼0.표시=참 그리고 라디오버튼5.표시=참)

문자창보여("우와! 당신은 천재입니다. 100점입니다");

아니면 만일((라디오버튼0.표시=참 그리고 라디오버튼5.표시=거짓)또는

(라디오버튼0만일(라.표시=거짓 그리고 라디오버튼5.표시=참))

문자창보여("휼륭합니다. 하나밖에 안틀렸네요");

아니면

문자창보여("바보 아니야? 빵점이잖아!");

문법검사를 하고 확인을 누름니다.

이제 F8을 눌러서 실행을 시켜보십시오. 정답이라고 생각되는 위치의 라디오버튼  에 마우스를 이용해서 마킹을 한 뒤 채점을 눌러 보십시요.(51)

▣ 참고

라디오버튼0.표시=참,  라디오버튼0.표시=거짓

∀객체 □ㅎ라디오버튼□에는 □표시□ 라는 속성이 있습니다. 참이면 버튼에 표시가  되    어있는 상태이고 거짓이면 표시가 되어있지 않은 상태입니다.

†ㅎ리스트박스

문자들의 리스트(ㅎ문자열)을 보여주는 역할을 하는 객체입니다. 원하는 줄에있는  내용을 알 수도 있으므로 유용하게 사용할 수가 있습니다.객체 □ㅎ메모□ 와 비슷한  기능을 하지만 다른점은 메모객체는 실행상태에서 직접 문자열을 추가할수 있지  만 리스트박스는 실행상태에서 직접 리스트박스안에 타이프해서 문자열을 추가할  수 없다는 점입니다.간단하게 리스트박스의 사용예를 들어보겠습니다. 여기서     예로든 것은 간단한 예일뿐이므로 좀더 자세한 내용은 창조도움말을 참조하십시  오.

리스트박스에 C드라이브의 모든 실행파일을 찾아 저장한 뒤 더블클릭하면   선택된 실행파일이 실행되도록 하겠습니다.

□작업메뉴□창의 파일에서 새작업을 선택하고 속성편집난에서 □내부높이□를 220 으로  하고 □제목□을 □파일찾아 실행하기□ 로 바꿉니다. 창에 리스트박스를 하나 올려놓습니다. 속성편집난에서 □높이□를 160 □폭□을 360 으로 합니다. 다음에 버튼을 하나 올려놓고 속성편집난에서 □제목□을 □파일찾아□ 로 바꿉니다.(52)

이제 파일찾아라고 쓰여있는 □버튼0□를 클릭했을 때 C드라이브에 있는 모든 실행  파일을 리스트박스에 저장하도록 명령을 내리겠습니다.

□버튼0□을 클릭해서 활성화시킨 뒤 □작업도구□창의 명령어편집난에서 □클릭했을때□라는 사건에 다음과 같이 적습니다.(53)

문법검사를 하고 확인을 누름니다. F8을 눌러서 실행을 시킨 뒤 □파일찾아□를 눌러  보십시요.(54)

이제 리스트박스에 기록된 실행파일을 더블클릭하면 선택된 실행파일이 실행되도  록 명령을 내려 보겠습니다.

리스트박스를 클릭해서 활성화 시킨 뒤 □작업도구□창의 명령어편집난중 □두번클릭  했을때□라는 사건에 다음과 같이 적습니다.

실행해(ㅅㅎ열기, 리스트박스0.내용.부분문자(리스트박스0.내용위치), "", ㅊㅂ보기);

문법검사를 한후 확인을 누르고 F8을 눌러서 실행을 시킵니다. □파일찿아□를 클릭  한후 리스트박스에 실행파일들이 기록되면 아무파일이나 마웃스로 더블클릭해 보  십시오. 선택된 실행파일이 실행되어지는 것을 볼수 있을것입니다.

다음은 위에서 객체 □ㅎ라디오버튼□을 설명하면서 예로 만들었던 □답안지□라는 프로그램을 더블클릭해서 실행시킨 경우입니다.(55)

▣ 참고

파일찾아(거짓, □ C:", "*.exe", 리스트박스0.내용);

∀□파일찾아□ 는 해당하는 폴더(디렉토리) 내의 파일들을 모두 찾아주는 명령어 입

니다.	괄호안의 첫번째 인자가 □참□ 이면 현재 폴더에서만 찾고 □거짓□ 이면 하위폴더까지 모두 찾습니다. 두 번째 인자에는 찾기를 할 폴더명을 세 번째에는 찾을 파일명을 네 번째에는 찾은 파일명이 들어갈 문자열리스트를 적어주면 됩니다.

실행해(ㅅㅎ열기, 리스트박스0.내용.부분문자(리스트박스0.내용위치), "", ㅊㅂ보기);

∀ 다른 응용프로그램을 실행하거나  문서파일을 인쇄할때 사용하는 명령어 입니

다. 함수정의는 다음과 같습니다.

함수: 실행해(ㅎ열기: 열기; 문자: 파일명, 매개변수; ㅎ창보기: 보기)

파일명 : 실행 하고싶은 파일명(경로 포함)

매개변수	: 실행파일 뒤에 적는 옵션이 있다면 넣고 아니면 ("")텅빈                   문자로 둔다.

보기 : 실행을 한 응용프로그램이 어떻게 보여질지를 결정한다.

ㅎ열기

ㅅㅎ열기	: 실행파일을 실행할때는 이것을 사용한다.

ㅅㅎ인쇄	: 파일을 인쇄할때는 이것을 사용한다. (만일 파일명이                        문서파일이 아니라면 실행하려고 시도한다.)

ㅎ창보기(사실상 몇가지는 비슷한 결과이다)

ㅊㅂ그냥보기 : 만일 창이 최소나 최대상태이면 화면복귀상태로 만들고 활                 성화시키면서 창을 보여준다.

ㅊㅂ기본보기 : 기본적으로 프로그램 처음 시작할때처럼 보여준다.

ㅊㅂ비활성보기 :	창을 현재 상태 그대로 보여준다.

ㅊㅂ보기 : 창을 활성화하고 현재 상태(크기, 위치)대로 보여준다.

ㅊㅂ숨김 : 창을 숨긴다. 대신에 다른 창을 활성화한다.

ㅊㅂ최대 : 창을 전체화면표시 상태로 만든다.

ㅊㅂ최소 : 창을 아이콘표시 상태로 만든다.

ㅊㅂ최소보기 : 창을 활성화시키고 아이콘표시상태로 보인다.

ㅊㅂ최대보기 : 창을 활성화시키고 전체화면표시 상태로 보인다.

ㅊㅂ최소비활성 :	창을 비활성화시키고 원래 활성화되고있던 창이 그대로                    활성화를 유지한다.

ㅊㅂ화면복귀 : 창을 화면복귀상태로 보인다.

리스트박스0.내용.부분문자(리스트박스0.내용위치)

∀실행할 파일명을 지정해준 것입니다. □부분문자□ 는 문자열에서 지정된 인자    값에 해당하는 줄의 문자를 반환해주는 명령어입니다. □내용위치□ 는 현재 몆    번째 줄에 위치하고 있는지 알 수 있는 속성입니다. 따라서 현재 커서가 위    치하고 있는곳의 문자를 반환해주는 내용입니다.

†ㅎ콤보박스

객체 'ㅎ에디트'와 비슷하지만 이것은 여러개의 문자들을 다룰 수 있습니다.  윈  도우상에서 마우스를 누르면 펼쳐지면서 내용을 선택할 수 있는 객체를 보았     을 것입니다.  바로 그것입니다.  윈도우에서 없어서는 안될 기본 객체입니다.

객체 □ㅎ리스트박스□를 설명하면서 C드라이브에 있는 모든 실행파일을 찾아 리스  트박스에 저장하도록 했었는데 이번에는 찾을 파일의 종류를 콤보박스를 이용해  서 선택하도록 해 보겠습니다.

□작업메뉴□창의 파일에서 새작업을 선택합니다. □작업도구□창의 속성편집난에서 □내  부높이□를 165 □내부폭□을 290 으로 합니다.□우비활성색상□, □우활성색상□, 좌비활성색상□ , □좌활성색상□을 적당히 마음에 드는 색으로 바꿉니다. □제목□을 □파일찾아 실행하기□ 로 바꿉니다.

창에 □ㅎ리스트박스□객체를 하나 올려놓고 □높이□를 120 □폭□을 270 으로 한 뒤 창의  상단부에 위치시킵니다.

리스트박스 하단부에 객체 □ㅎ콤보박스□를 올려 놓습니다. □작업도구□창의 속성편집  난에서 □문자□속성을 □파일종류□ 로 합니다. □색상□ 속성을 적당히 마음에 드는 색으  로 바꿉니다. □내용□ 속성에 다음과 같이 적습니다.

*.exe

*.txt

콤보박스의 오른편에 객체 □ㅎ버튼□을 올려놓습니다. 속성편집난에서 □제목□을 □파일찾기□로 바꿉니다.(56)

이제 콤보박스에서 파일의 종류를 선택한 뒤 파일찾기 버튼을 누르면 선택된 파  일을 찾아서 리스트박스에 저장하고 저장된 파일을 더블클릭했을 때 실행되도록  명령을 내려보겠습니다.

제목이 □파일찾기□로 되어있는 □버튼0□를 클릭해서 활성화 시킨 뒤 □작업도구□창의  명령어편집난에서 □클릭했을때□라는 사건에 다음과 같이 적습니다.

만일(콤보박스0.문자="파일종류")

문자창보여("먼저 파일종류를 선택하십시요");

아니면

파일찾아(거짓, "c:", 콤보박스0.문자, 리스트박스0.내용);

□리스트박스0□을 클릭해서 활성화시킨 뒤 □작업도구□창의 명령어 편집난에서 □두번   클릭했을 때□ 라는 사건에 다음과 같이 적습니다.

실행해(ㅅㅎ열기,리스트박스0.내용.부분문자(리스트박스0.내용위치),"",ㅊㅂ보기);

이제 모든작업이 끝났습니다. □작업메뉴□창의 작업에서 실행을 선택해서 실행을 시   켜보십시요.파일종류를 선택하지 않고 바로 □파일찾기□ 버튼을 누르면 파일종류를   먼저 선택하라는 문자창이 뜰겁니다. 콤보박스에서 파일종류를 선택한뒤 □파일찾   기□버튼을 눌러보십시오. 리스트박스에 파일들이 저장되었으면 찾아진 파일중 아   무파일이나 더블클릭해 보십시요. (57)

▣ 참고

콤보박스0.문자

∀ 콤보박스에 선택되어 보이는 문자를 변경하거나 알 수 있는 속성입니다.

†ㅎ스크롤바

어떤 객체를 스크롤 시키거나 수치의 증가,감소에 응용할 수 있는 객체입니다.객  체내에서 스크롤바의 용도는 이미 앞에서 다른 객체를 설명하면서 보여졌으므로  잘 알고 계실것입니다. 여기서는 스크롤바를 이용해서 동영상파일 재생시 볼륨을  조절할 수 있도록 해 보겠습니다.

□작업메뉴□의 파일에서 새작업을 선택합니다. 창을 예쁘게 꾸미기 위해서 □우비활성   색상□, □우활성색상□, □좌비활성색상□, □좌활성색상□ 과 □색상□속성을 적당한 색으로 정   해 줍니다. □제목□을 □동영상재생기□ 라고 바꿉니다.

□작업메뉴□창의 멀티미디어 도구중 객체 □ㅎ매체재생기□를 창에 올려 놓습니다. □작   업도구□창의 속성편집난에서 □장치양식□속성을 □ㅈㅇ자동선택□으로 합니다. 단 CD를   재생하고자 할 경우에는 □장치양식□속성을 반드시 □ㅈㅇCD'로 해야 합니다. 여기서   는  동영상 파일을 재생하고자 하므로 □장치양식□ 속성을 □ㅈㅇ자동선택□으로 한 것   입니다. 이렇게 하면  시디를 제외한 파일의 종류를 스스로 알아서 구별해 줍니    다. 다음으로 □파일명□을 선택해서 재생하고자 하는 동영상 파일을 지정해 줍니다.   파일명을 정해주면 매체재생기의 크기가 파일의 크기에 맞게 자동으로 조절이 됩   니다. 물론 여러분이 동영상 파일은 가지고 있어야 되겠지요.

매체재생기 아래쪽으로 □ㅎ그룹박스□를 두 개 올려놓습니다. □폭□은 매체재생기의    폭과 같게 하고 □높이□ 속성은 50 으로 합니다. □그룹박스0□ 의 □제목□속성을 □볼 륨□   으로 고치고 그 위에 □ ㅎ스크롤바□와 □ㅎ이름표□ 객체를 하나씩 올려놓습니다.속성   편집난에서 스크롤바의 □최대□속성을 16 □최소□속성을 0 으로 합니다. □최대□속성을   16 으로 한 것은 창조에서 볼륨의 크기를 0부터 16 까지 정해 놓았기 때문입니다.

□그룹박스1□ 의 □제목□ 속성을 □재 생□으로 고치고 그위에 □작업메뉴□ 창의 멀티미디   어도구중 □ㅎ멀티버튼□객체를 두 개 올려놓습니다. 멀티버튼의 □버튼양식□ 속성을    □ㅂㅇ유리형□으로 바꾸고 (다른 속성을 사용해도 관계없습니다) □제목□속성을 하나   는 □재생□으로 다른 하나는 □정지□로 바꾸고 □색상□속성을 적당한 색으로 정해줍니    다. (58)

이제 외형갖추기는 끝이 났습니다. 이제부터 매체재생기가 동영상 파일을 재생하   고 또 스클롤바로 볼륨을 조절할수 있도록 명령을 내려 보겠습니다.

□재생□ 이라고 쓰여있는 버튼을 클릭해서 활성화 시킨 뒤 □작업도구□창의 명령어편   집난중 □클릭했을때□ 라는 사건에 다음과 같이 적고 문법검사를 한후 확인을 누름   니다.

매체재생기0.재생;

□정지□라고 쓰여있는 버튼을 클릭해서 활성화 시킨 뒤 □작업도구□창의 명령어편      집난중 □클릭했을때□ 라는 사건에 다음과 같이 적고 문법검사를 한후 확인을 누름   니다.

매체재생기0.멈춰;

이제 스크롤바로 볼륨을 조절할수 있도록 하겠습니다. □스크롤바0□을 클릭해서 활   성화 시키고 □작업도구□ 창의  명령어편집난중 □스크롤될때□ 라는 사건에 다음과     같이 적고 문법검사를 한후 확인을 누름니다.

이름표0.제목:=수를문(스크롤바0.눈금위치);

매체재생기0.주볼륨:=스크롤바0.눈금위치;

□창0□의 빈곳중 아무곳이나 클릭해서 활성화시킨 뒤 □작업도구□창의 명령어편집 난   중 □생성할 때□ 라는 사건에 다음과 같이 적고 문법검사를 한후 확인을 누름니다.

이름표0.제목:=수를문(매체재생기0.주볼륨);

스크롤바0.눈금위치:=매체재생기0.주볼륨;

이제 모든작업이 끝났습니다. □작업메뉴□창의 작업에서 실행을 선택해 실해을 시켜   봅니다.(F8을 눌러도 됩니다) □재생□버튼을 눌러서 동영상파일을 재생시킨후 스크   롤바를 이동시켜 볼륨을 조절해 보십시요.(59)

▣ 참고

매체재생기0.재생;

∀□재생□ 은 객체□ㅎ매체재생기□의 명령어로 매체를 재생해 주는 명령어입니다.

매체재생기0.멈춰;

∀매체를 재생하는 중에 □멈춰□ 라는 명령을 사용하면 재생을 멈춥니다.

이름표0.제목:=수를문(스크롤바0.눈금위치);

∀객체 'ㅎ스크롤바□의 속성중에 □눈금위치□가 있는데 스크롤바가 현재 지시하는     위치에 대한 속성입니다.이는 실수이므로 문자형으로 바꾼 뒤 이름표0 의 □제     목□ 속성에 저장하라는 뜻입니다.

매체재생기0.주볼륨:=스크롤바0.눈금위치;

∀객체 □ㅎ매체재생기□안에 □주볼륨□이라는 속성이 있는데 매체재생기의 볼륨을      조절하거나 현재 볼륨의 값을 알 수 있는 속성입니다. □주볼륨□은 실수값으로      0 에서 16 까지 조절할수 있습니다.스크롤바가 현재 지시하는 위치를 매체재생    기의 □주볼륨□ 속성에 저장하라는 뜻입니다.

이름표0.제목:=수를문(매체재생기0.주볼륨);

∀□재생□ 버튼을 누르면 볼륨값을 정해주지 않았는데도 소리가 날것입니다. 이는     윈도우에서 이미 스피커의 볼륨이 정해져 있기 때문인데 바로 이 처음 볼륨      값을 프로그램이 실행됨과 동시에 이름표에 표시하기 위한 것입니다.

스크롤바0.눈금위치:=매체재생기0.주볼륨;

∀프로그램이 실행되면서 바로 스크롤바의 위치를 처음 윈도우에 저장되어 있      는 볼륨값의 위치로 이동시키기 위한 것입니다.

†ㅎ체크박스

선택상황을 만들때 사용하는 객체입니다. 이것도 윈도우에서 없어서는 안되는      기본객체입니다. 윈도우 사용자가 반드시 알아야할 객체입니다.체크박스의 사용용   도에 대해서는 이미 잘 알고 있을것이지만 간단하게 예를 들어서 설명하겠습니다.

창의 배경색을 체크박스를 이용해서 선택하고 바꿔보도록 하겠습니다. □작업메뉴□   창의 파일에서 새작업을 선택하고 창의 □내부높이□속성을 130 □내부폭□속성을 □210□   으로 합니다.  □제목□ 속성을 □창의 배경색 바꾸기□로 변경합니다. □우비활성색상□,□우   활성색상□, □좌비활성색상□, □좌활성색상□을 적당한 색으로 정해줍니다.

창의 상단부에 □작업메뉴□창의 멀티미디어도구중 □ㅎ멀티이름표□를 하나 올려놓습니   다. □글꼴□속성에서 크기를 12 로 하고 □높이□속성을 24 □폭□ 속성을 200 으로 합니   다. □내용□속성에 □창의 배경색을 선택하세요□ 라고 적습니다.

멀티이름표 아래쪽으로 객체 □ㅎ그룹박스□객체를 올려놓습니다. □높이□속성을 75     □폭□ 속성을 200 으로 한 뒤 □제목□ 속성을 □배 경 색□으로 변경합니다.

그룹박스0 안에 객체 □ㅎ이름표□ 와 객체 □ㅎ체크박스□를 두 개씩 올려놓습니다. □이   름표0□ 의 □제목□ 속성은 □노랑□ 으로 □이름표1□의 □제목□속성은 □파랑□ 으로 합니다.    □이름표0□와 □이름표1□ 의 □글꼴□속성에서 글꼴유형을 □굵게□로 크기를 11 로 합니다.

□체크박스0□와 □체크박스1□ 의 □제목□속성을 클릭한 뒤 Delete 키를 눌러서 내용을    모두 삭제한 뒤 이름표 옆에 하나씩 위치시킵니다. □체크박스0□ 의 □이름□속성을 □체   크0□ 로 □체크박스1□의 □이름□ 속성을 □체크1□ 로 변경합니다.

□작업메뉴□창의 멀티미디어 도구중에서 객체 □ㅎ멀티버튼□을 그룹박스0 의 빈곳에    올려놓습니다. □멀티버튼0□의 □글꼴□ 속성에서 크기를 10 으로 한 뒤 □제목□ 속성을   □색바꾸기□ 로 합니다. □색상□속성을 적당히 마음에 드는 색으로 정해줍니다. □버튼   양식□속성을 □ㅂㅇ타원형□으로 바꿉니다. 이렇게 색상과 버튼모양을 바꿀수 있는 것   은 □ㅎ멀티버튼□이 표준도구의 □ㅎ버튼□과 다른점 중 하나입니다.(60)

이제 외형갖추기는 끝이 났습니다. 그러면 체그박스에 체크를 하고 색바꾸기 버튼   을 눌렀을 때 창의 색이 바뀌도록 명령을 내려 보겠습니다. 색바꾸기 라고 쓰여있   는 □멀티버튼0□을 클릭해서 활성화시킨 뒤 □작업도구□창의 명령어편집난중 □클릭했   을 때□ 라는 사건에 다음과 같이 적습니다.

만일(체크0.표시=거짓 그리고 체크1.표시=거짓)

문자창보여("먼저 배경색을 선택하세요");

아니면 만일(체크0.표시=참 그리고 체크1.표시=참)

창0.색상:=ㅅ초록;

아니면 만일 (체크0.표시=참)

창0.색상:=ㅅ노랑;

아니면 창0.색상:=ㅅ파랑;

문법검사를 하고 확인을 누른 뒤 실행을 시켜보십시오. 체크박스에 한가지 색만    표기를 한 뒤 색바꾸기를 눌러보고 또 두가지색 모두 체크를 한 뒤 색바꾸기를    눌러보십시오. (61)(62)

▣ 참고

위에서 □멀티버튼0□의 □클릭했을때□라는 사건에 적어준 명령어처럼 여러개의 조건문을 적을 때 □만일□ 이라는 조건문을 사용할수도 있고 □아니면 만일□ 이라는 조건문을 사용할수도 있습니다. 얼핏보아 같은효과를 내는 것 같아 보일수도 있지만 사실은 다른 효과를 냅니다. □만일□ 이라는 조건문은 항상 실행이 되는 반면에 □아니면 만일□ 조건문은 하나의 조건문이 만족되면 다른 조건은 실행을 하지 않습니다.따라서 여러 가지 조건이 있을 때 하나의 조건이 만족되면 다른조건은 실행되지 않게 할려면 □아니면 만일□ 조건문을 사용해야 합니다.

위에서 사용한 명령을 예로 보면 첫번째의 □만일□ 조건문은 반드시 실행이 됩니다. 그래서 괄호안의 조건(체크0.표시=거짓 그리고 체크1.표시=거짓) 이 만족되면 바로 아랫줄의 명령을 (문자창보여("먼저 배경색을 선택하세요");) 실행하고 그렇지 않을경우는 두 번째 명령 □아니면 만일(체크0.표시=참 그리고 체크1.표시=참)□ 을 검사하게 됩니다. 그래서 만일 조건이 만족된다면 바로 아랫줄의 명령을(창0.색상:=ㅅ초록;) 실행하고 더 이상 진행되지 않습니다. 하지만 여기서 □아니면 만일□ 이 아니고 □만일□ 조건을 썼다면 조건이 만족되었더라도 그다음에 있는 또다른 □만일□ 조건문을 검사하게 됩니다. 따라서 모든명령이 실행되어야 할 경우라면 □만일□ 조건문을 쓰고 그렇지 않고 어떤 한 조건이 만족되었을 경우 명령을 거기서 끝내고자 할 경우는 □아니면 만일□ 조건문을 사용해야 합니다.

†ㅎ눈금계

작업의 진행상황을 알고 싶을 때 사용하는 객체로서 그래프와 퍼센트(%)로 진행   상황을 보여줍니다. 객체 □ㅎ스크롤바□를 설명하면서 매체재생기로 동영상 파일을   재생할 때 볼륨을 조절해 보았는데 이번에는 □ㅎ눈금계□를 이용해서 동영상파일의   재생상황을 퍼센트로 나타내 보겠습니다. 먼저 □작업메뉴□ 창의 파일에서 작업열기   를 선택한 뒤 □ㅎ스크롤바□ 를 설명하면서 만들었던 동영상 재생 프로그램을 불러   옵니다.

창의 □높이□ 속성을 조금 더 크게한 뒤 객체 □ㅎ그룹박스□를 하나 더 올려 놓습니    다. □제목□속성을 □진행상황□ 이라 고치고 객체 □ ㅎ눈금계□를 하나 올려놓습니다.눈   금계가 그룹박스안에 보기좋게 위치하도록 □폭□ 과 □높이□ 속성을 조절합니다.

창의 빈곳에 객체 □ㅎ시계□를 하나 올려놓습니다.(63)

이제 매체재생기가 재생될 때 재생되고 있는 위치를 눈금계에 퍼센트로 나타내도   록 명령을 내려보겠습니다.

□시계0□ 의 □제어□속성을 □거짓□ 으로 하고 명령어편집난에서 □시계가 작동될때□라는   사건에 다음과 같이 적습니다.

눈금계0.눈금위치 :=( 매체재생기0.위치 * 100) /매체재생기0.크기;

다음에 □재생□ 이라고 쓰여있는 □멀티버튼0□의 □클릭했을때□라는 사건에 다음을 추   가합니다.

시계0.제어 := 참;

이제 모든작업이 끝났습니다. 실행을 시켜서 재생버튼을 눌러보십시요.(64)

▣ 참고

매체재생기에서 재생되고 있는 위치를 퍼센트로 나타내기 위해서는 먼저 재생되   고 있는 파일의 크기를 알아야 합니다. 그래야만 비례식을 써서 재생되는 위치를   퍼센트로 표기할 수 있습니다. 눈금계의 크기가 0부터 100까지이므로 비례식은 다   음과 같이 세우면 되겠지요...

눈금계의 현재위치:현재 재생되는 파일의 위치 = 100 : 파일의 전체크기

위 비례식에서 눈금계의 현재 위치는 다음과 같이 구할 수 있습니다.

(재생되는 파일의 위치) * 100 /파일의 전체크기

이제 □시계가 작동될 때□ 라는 사건에 내린 명령을 이해하셨을 겁니다. □ㅎ매체재생   기□에서 □위치□ 라는 속성은 현재 재생되고 있는 매체의 위치를 나타내주는 속성입   니다. □크기□ 라는 속성은 현재 열려진 매체의 크기를 알 수 있는 속성으로 처음에   □시계0□ 의 □제어□속성을 □거짓□으로 한 이유가 바로 매체가 열려지지 않은 상태이기   때문에 그렇게 한 것입니다. □재생□버튼을 □클릭했을 때□ 라는 사건에 매체재생기0.   재생; 이 있고 다음에 □시계0□ 의 □제어□속성을 참으로 한 것을 이제 이해하셨겠죠?

바로 매체가 열려진 상태에서만 파일의 전체크기를 알 수 있기 때문입니다.

†ㅎ파일관리창

현재 내 컴퓨터에 있는 파일을 불러오거나 저장할 수 있는 창을 보여주는 객체입   니다. □ㅎ파일관리창□을 이용해서 간단하게 그림파일을 볼 수 있는 프로그램을 만   들어 보겠습니다. 먼저 □작업메뉴□창의 파일에서 새작업을 선택합니다.창위에 객체   □ㅎ파일관리창□ 과 □ㅎ버튼□ 그리고 멀티미디어 도구중 □ㅎ그림판□을 하나씩 올려놓   습니다. 각각의 위치를 정한다음 창의 크기를 적당히 조절합니다.객체 □ㅎ파일관리   창□과 □ㅎ그림판□은 작업을 하는 동안에만 보이고 실제 프로그램을 실행 되었을 때   는 보이지 않게 됩니다.(65)

□버튼0□ 의 □제목□속성을 □파일열기□ 로 바꾸고 □창0□의 □제목□속성을 □그림파일보기□    로 바꿉니다. 다음에 □우비활성색상□, □우활성색상□, □좌비활성색상□, □좌활성색상□ □색   상□속성을 마음에 드는 색으로 정하여 □창0□을 보기좋게 꾸밉니다.(66)

이제 외형갖추기는 끝이 났습니다. 그러면 □제목□이 □파일열기□로 되어있는 □버튼0□   를 클릭했을 때 파일관리창을 통해서 불러온 그림파일을 □그림판0□에 보이게 하는  명령을 내려보겠습니다.

□버튼0□의 □클릭했을 때□ 라는 명령어편집난에 다음과 같이 적습니다.

파일관리창0.파일종류 := "모든그림파일 | *.bmp; *.gif; *.jpg; *.ico";

만일(파일관리창0.보여(ㅇㅈ열기))

그림판0.그림.파일읽어(파일관리창0.파일명);

첫 번째 명령중 □ | □ 는 shift + ｀(엔터기 윗쪽에 있는 키)입니다. 문법검사를 하   고 확인을 누른 뒤 실행을 시켜보십시오. □버튼0□을 클릭해 보십시오. 파일을 선택   할 수 있는 파일관리창이 뜰 것입니다. 여기서 파일을 선택하고 □열기□버튼을 누르   면 선택된 그림파일이 □그림판0□에 보여지게 됩니다.(67)

▣ 참고

파일관리창0.파일종류 := "모든그림파일 | *.bmp; *.gif; *.jpg; *.ico";

∀객체 □ㅎ파일관리창□ 에 □파일종류□ 라는 속성이 있는데 파일관리창에 등록하는      파일의 종류를 말합니다. 등록된 파일은 '파일 형식'이라는 곳에 콤보박스로 나     타납니다.

사용법:

파일은 '|'으로 구분을 합니다.  특정파일명을  '*'으로 추출할 수 있습니다.

파일설명|파일명|파일설명|파일명|......

만일 파일관리창에 등록하고 싶은 파일이 'BMP, GIF, JPG, ICO'라면 파일종류     에 "BMP파일|*.BMP|GIF파일|*.GIF|JPG파일|*.JPG|ICO파일|*.ICO"라고 기록하     면 됩니다. 그림파일만을 한번에 선택해서 보일때는 ';'으로 구분하여 파일종류     에 "모든 그림파일|*.BMP;*.GIF;*.JPG;*.ICO"라고 기록하면 됩니다.

만일(파일관리창0.보여(ㅇㅈ열기))

∀□ㅎ파일관리창□ 에 □보여□라는 명령어가 있는데 파일관리창을 보여주는 진리함수입니다. 참값이면 파일을 선택한후 □열기□버튼을 눌렀다는 의미이고 거짓값이면 파일을 선택한후 □취소□버튼을 눌렀다는 의미입니다. 괄호안의 □ㅇㅈ열기□는 □ㅎ파일관리양식□으로 파일을 여는창을 보여주고 만일 □ㅎ파일관리양식□에 □ ㅇㅈ저장□ 이라고 하면 파일을 저장하는 창을 보여줍니다. 따라서 위 명령어는 파일관리창에서 파일을 선택한후 □열기□버튼을 눌렀다면 그 다음에 오는 명령을 실행하라는 의미입니다.

그림판0.그림.파일읽어(파일관리창0.파일명);

∀객체 □ㅎ그림판□에 □그림□이라는 속성이 있는데 그림판에 그림을 나타내고 싶을때  이 속성에 그림을 삽입시키면 됩니다.그림 지원 포맷은 [BMP, GIF, JPG(JPEG), TIF, PCX, ICO, WMF, EMF]를 지원합니다.그림을 삽입시키는 방법은 □파일읽어□라는 명령어를 사용합니다.괄호안에 그림파일을 경로까지 포함해서 적어주면 됩니다. 객체□ㅎ파일관리창□ 에 □파일명□ 이라는 속성은 파일관리창에서 선택한 파일을 알려주거나 변경할 수 있는 속성입니다. 따라서 위 명령어는 파일관리창에서 선택한 파일을 □그림판0□에 읽어오라는 명령입니다.

†ㅎ색상창

색상을 변경하고 싶을때 화면에 색상창을 보여줘서 사용자가 직접 색상을 선택할 수 있도록하는 객체입니다. 이름표에 여러 가지 동물이름을 적은다음 □ㅎ색상창□을 이용해서 이름표에 적은 동물이름의 색상을 바꿔보도록 하겠습니다.

창위에 □ㅎ그룹박스□객체를 두 개 올려놓습니다. □그룹박스0□에 객체 □ㅎ이름표□를 네 개 올려놓고 □그룹박스1□ 에 객체 □ㅎ콤보박스□를 하나 올려놓습니다.창의 빈곳에 객체 □ㅎ색상창□을 올려놓습니다. □이름표0□, □이름표1□, □이름표2□, □이름표3□의 □제목□속성을 여러분이 좋아하는 동물이름으로 고칩니다.□그룹박스0□ 의 □제목□속성을 □동물이름□으로 고치고 □그룹박스1□의 □제목□속성을 □이름색 바꾸기□로 □창0□의 □제목□속성을 □색상창이용하기□로 고칩니다. □콤보박스0□의 □문자□속성을 □이름색바꾸기□ 로 고치고 □내용□속성에 □이름표0□, □이름표1□, □이름표2□, □이름표3□ 의 제목을 차례로 적습니다. □창0□와 □콤보박스0□의 □색상□속성을 적당한 색으로 바꿉니다.(68)

이제 외형갖추기는 끝이 났습니다. 그러면 이름표에 쓰여진 동물들 이름의 색상이 바뀌도록 명령을 내려보겠습니다.□콤보박스0□의 □클릭했을때□라는 사건에 다음과 같이 적습니다.

실수:수;

수:=0;

색상창0.보여;

되풀이(수<4)

{

만일(수=콤보박스0.내용위치)

{

이름표#수.글꼴.색상:=색상창0.색상;

그쳐;

}

아니면

수:= 수 +1;

}

문법검사를 하고 확인을 누른 뒤 실행을 시켜보십시오. 콤보박스를 클릭하고 동물이름중 하나를 선택하면 색상창이 뜨는데 적당한색을 선택한 뒤 확인을 누르면 선택된 동물이름의 색이 바뀌는걸 볼수 있을것입니다.(69)(70)

▣ 참고

색상창0.보여;

∀□보여□ 라는 명령어는  객체를 보이고 싶을때 사용하는 명령어입니다.

만일(수=콤보박스0.내용위치)

∀객체 □ㅎ콤보박스□의 □내용위치□ 라는 속성은  현재 콤보박스의 몇번째내용이 선    택 되었는지 알려주거나 변경할 수 있는 속성입니다. 첫번째내용은 위치가 0부    터 시작합니다. 따라서 실수로 정의된 □수□ 와 콤보박스에서 선택한 내용위치(첫    번째줄을 선택했다면 내용위치는 0,두번째줄을 선택했다면 내용위치는 1 입니     다)가 같다면 다음명령을 실행하라는 의미입니다.

이름표#수.글꼴.색상:=색상창0.색상;

∀객체 □ㅎ색상창□에서 □색상□이란 속성은 색상창에서 선택한 색상이 뭔지를 알 수    있거나 혹은 색상창을 보이기전에 기본 색상을 지정해줄때 사용하는 속성입      니다. □이름표#수□ 는 객체의 배열로 □수□가 1이면 □이름표1□이 되는것이고 □수□가    2이면 □이름표2□ 가 되는 것입니다.

그쳐;

∀반복문 도중에 빠져나오고 싶을 때 사용하는 명령어입니다. 위에서 반복문은      수가 0 일때부터 4보다 작은동안 되풀이 되는데 만일 도중에 □수□와 콤보박스     의 내용위치가 같게 된다면 더 이상 반복문을 계속할 필요가 없겠죠?

†ㅎ글꼴창

글꼴을 변경할 수 있는 창을 보여주는 객체입니다. 간단하게 객체 □ㅎ메모□ 에 쓰여진 내용의 글꼴을 변경하는 예를 들어보겠습니다.

창에 객체 □ㅎ메모□ 와 □ㅎ버튼□ 그리고 □ㅎ글꼴창□을 올려놓습니다. □창0□ 의 □제목□속성을 □글꼴창□ 으로 바꾸고 □버튼0□ 의 □제목□ 속성을 □글꼴바꾸기□ 로 합니다. 다음에 □메모0□의 □내용□ 속성에다 □글꼴창 이용하기□ 라고 적습니다. □창0□ 와 □메모0□의 □색상□ 속성을 적당한 색으로 바꾸어서 창을 보기좋게 꾸밉니다.(71)

이제 외형갖추기는 끝이 났습니다. 그러면 '버튼0'을 클릭했을 때 □메모0□ 의 글꼴이 변하게 명령을 내려보겠습니다. □글꼴바꾸기□ 라고 쓰여 있는 □버튼0□을 클릭해서 활성화 시키고 □작업도구□창의 명령어편집난중 □클릭했을 때□ 라는 사건에 다음과 같이 적습니다.(객체를 더블클릭하면 바로 □작업도구□창으로 마우스가 이동합니다)

글꼴창0.양식 := ㄱㅇ둘다;

글꼴창0.보여;

메모0.글꼴.할당해(글꼴창0.글꼴);

문법검사를 하고 확인을 누름니다. 이제 모든작업이 끝났습니다. 실행을 시키고 □글꼴바꾸기□버튼을 클릭해 보십시오. 글꼴을 바꿀수 있는 글꼴창이 뜰겁니다.(72)(73)

▣ 참고

글꼴창0.양식 := ㄱㅇ둘다;

∀객체 □ㅎ글꼴창□ 의 속성중 □양식□ 은 글꼴을 변경할 수 있는 창을 보여줄때       사용될 글꼴을 결정해주는 속성입니다. 종류는 세가지가 있으며 의미는 다음     과 같습니다.

ㄱㅇ화면	화면에 사용되는 글꼴

ㄱㅇ프린터	프린터용 글꼴

ㄱㅇ둘다	화면과 프린터용 글꼴 모두

글꼴창0.보여;

∀□보여□ 는 객체를 보이고 싶을 때 사용하는 명령어로 □글꼴창0□을 보이라는 의미    입니다.

메모0.글꼴.할당해(글꼴창0.글꼴);

∀□ㅎ글꼴□은 글자들의 속성을 제어하는 보이지 않는 객체입니다. 이것은 단독으로    사용되기 보다는 다른 보이는 객체에 포함되어 하나의 속성처럼 사용되는 객체    입니다. 그리고 같은 종류의 객체일 경우 서로 속성을 복사할 수 있는데 이때     명령어 □할당해□ 를 사용합니다. 위 명령은 □메모0□의 글꼴을 □글꼴창0□의 글꼴로    변화시키라는 뜻입니다. □할당해□ 명령어가 사용가능한 객체는 다음과 같습        니다.

ㅎ펜

ㅎ붓

ㅎ비트맵

ㅎ아이콘

ㅎ글꼴

ㅎ문자열

창조에서의 'ㅎ비트맵(bitmap)'이란 그림을 저장해놓은 장소라고 생각하면 됩니다. 그림은 '비트맵'의 속성중 배경이라는 곳에 그려져서 저장되는데 우리가 그림파일을 읽었을때 그림이 바로 이  배경에 그려지는 것입니다. 확장자가 'BMP'인 파일을 자주 보았을것입니다. 이러한 'BMP'파일을 객체로 만들어낸 것이 바로 □ㅎ비트맵□ 입니다. 그렇다고 'BMP'파일만 읽는것은 아닙니다.  'BMP, GIF, JPG(JPEG), TIF, PCX, ICO, WMF, EMF'를 지원합니다.

'ㅎ비트맵'은 '그림판', '버튼', '멀티버튼'등에 포함되어 사용되는 객체로서 혼   자서 사용되지는 않습니다.

□ㅎ문자열□은 말 그대로 문자열을 담을 수 있는 객체입니다. 이것역시 혼자서는 쓰이지 않고 객체 □ㅎ메모□ 등에 포함되어 사용되는데 쉽게 객체 'ㅎ메모'내에 있는 '내용'속성을 연상하면 됩니다.  같은 것이라고 볼 수도 있습니다.

□할당해□ 사용예

메모0.글꼴.할당해(에디트0.글꼴);

그림판0.그림.할당해(그림판1.그림);

†ㅎ인쇄창

인쇄를 할 수 있도록 인쇄창을 보여주고 인쇄를 하는 객체입니다.  □용지폭□ 과 □용지높이□라는 속성이 있는데 이는 실제 인쇄용지의 □폭□과 □높이□ 가 아니라 가상용지의 □폭□과 □높이□를 말합니다. 문자나 그림을 인쇄할 때 인쇄될 위치와 크기를 지정해주는데 바로 가상용지에서의 위치와 크기를 지정해주는 것입니다.만일 가상용지에서 인쇄위치를 중앙에 오게하고 크기를 가상용지의 1/4 정도로 정해주었다면 실제 인쇄될때에도 인쇄용지의 크기에 관계없이 인쇄용지의 중앙부분에 위치하고 크기는 인쇄용지의 1/4 이 됩니다.  주의할점은 인쇄하기전에 반드시 '준비해' 라는 명령어를 사용해야하며,  인쇄가 모두 끝나면  '마무리해'라는 명령어를 사용해야 된다는 것입니다. 단 □ㅎ메모□ 객체내에 있는 내용을 인쇄할때는 □준비해□ 와 □마무리해□ 라는 명령이 필요 없습니다. 말로설명을 하는것보다 직접 간단한 예제를 들어 설명을 하겠습니다. 먼저 그림을 인쇄해 보도록 하겠습니다.

창에 □작업메뉴□ 창의 멀티미디어 도구중 □ㅎ그림판□을 올려놓습니다. 다음에 표준도구중에서 □ㅎ버튼□ 과 □ㅎ인쇄창□ 을 하나씩 올려놓고 □버튼0□의 □제목□ 속성을 □그림인쇄□ 라고 합니다. □그림판0□ 의 속성편집난중 □그림□ 속성을 선택해서 그림파일을 지정해 줍니다.만일 □크기자동조절□ 속성을 □참□으로 하면 실제 그림크기대로 보여주고 □거짓□ 으로 하면 창에 올려놓은 □그림판0□ 의 크기에 맞게 보여집니다. □창0□ 의 □제목□속성을 □그림인쇄□ 로 바꾸고 □색상□속성을 적당한 색으로 바꿉니다.(74)

이제 외형갖추기는 끝이 났습니다. 그러면 인쇄를 하도록 명령을 내려보겠습니다. 위에서도 설명했지만 인쇄용지의 크기는 신경쓰지 않아도 됩니다. 다만 인쇄될 그림을 어떤위치에 어떤크기로 인쇄할지만 결정하면 됩니다. 그림이 인쇄용지의 중앙부분에 위치하고 그림의 폭은 인쇄용지폭의 1/3 그림의 높이는 인쇄용지높이의 1/5 로 인쇄를 하도록 해보겠습니다. □버튼0□을 □클릭했을 때□ 라는 사건에 다음과 같이 적습니다.

만일(인쇄창0.보여)

{

인쇄창0.준비해;

인쇄창0.그림인쇄해((인쇄창0.용지폭)/3, ((인쇄창0.용지높이)/5)*2,

(인쇄창0.용지폭)/3, (인쇄창0.용지높이)/5, 그림판0.그림);

인쇄창0.마무리해;

}

문법검사를 하고 확인을 누른 뒤 실행을 시켜보십시오. (75)

이제 그림인쇄를 클릭해 보십시오. 여러분이 인쇄용지로 어떤크기의 용지를 사용했는지에 관계없이 인쇄용지의 중앙부분에 폭은 공급된용지폭의 1/3 크기로 높이는 공급된 용지높이의 1/5 크기로 그림이 인쇄된 것을 보실수 있을것입니다.

▣ 참고

만일(인쇄창0.보여)

∀□보여□ 는 객체를 보이고 싶을 때 사용하는 명령으로 인쇄옵션을 설정할수 있는

□인쇄창0□을 보이라는 의미입니다. 인쇄를 위해 반드시 필요한 명령은 아니며 이 명령을 생략했을 경우 인쇄창 보여주는 과정없이 바로 인쇄에 들어갑니다. 만일 인쇄매수를 지정하거나 확인 취소의 필요가 있다면 이 명령을 사용해서 인쇄에 들어가기전에 인쇄창을 보이게 하면 됩니다.

인쇄창0.준비해;, 인쇄창0.마무리해;

∀인쇄하기전에 반드시 □준비해□ 라는 명령어를 사용해야 합니다. 이명령을 사용하

지 않고 인쇄하라는 명령을 내리면 인쇄를 시작하지 않습니다. 인쇄가 끝났을때는 □마무리해□라는 명령을 사용해야 됩니다.

인쇄창0.그림인쇄해((인쇄창0.용지폭)/3, ((인쇄창0.용지높이)/5)*2,

(인쇄창0.용지폭)/3, (인쇄창0.용지높이)/5, 그림판0.그림);

∀□그림인쇄해□ 는 객체 □ㅎ인쇄창□ 이 가지고 있는 명령어로 말 그대로 그림을 인

쇄할 때 사용하는 명령어입니다. 문자를 인쇄할 때는 □문자인쇄해□를 사용합니다.

□그림인쇄해□ 사용법

ㅎ인쇄창. 그림인쇄해(실수: 좌변, 윗변, 폭, 높이; ㅎ비트맵: 그림)

□그림인쇄해□의 괄호안에 있는 내용은 그림이 인쇄될 위치와 그림의 크기를 정해주는것입니다. □좌변□에는 인쇄용지에서 그림의 왼쪽여백을 윗변에는 그림의 상단여백을, 폭과 높이에는 그림의 폭과 높이를 실수형으로 적어주면 됩니다. ㅎ비트맵의 그림에는 인쇄하고자 하는 그림을 지정해주면 됩니다.

인쇄창0.용지폭, 인쇄창0.용지높이

용지의 가로길이와 세로길이를 알 수 있는 □ㅎ인쇄창□ 의 속성입니다.  읽기전용 속성이며 여기서 말하는 용지는 실제 프린터에 공급된 용지가 아닌 가상의 용지입니다. □그림인쇄해□ 명령에서 정해주는 그림의 위치와 크기도 이 가상용지에서의 위치와 크기입니다. 위에서 예를 든것처럼 □그림인쇄해□ 의 □좌변□값에 인쇄창0.용지폭/3 이라고 하지않고 직접 실수로 써주어도 됩니다. 그러기 위해서는 실제 가상의 □용지폭□ 이 얼마인지 알아야 되겠지요.알 수 있는 방법은 간단합니다. 명령어편집난중 적당한 사건에 가령 □창0□의  □클릭했을 때□ 라는 사건에 다음과 같이 하면 됩니다.  창0.제목:= 수를문(인쇄창0.용지폭); □창0□을 클릭하면 가상의 용지폭을 알수 있겠지요? □용지높이□도 같은방법으로 알수 있습니다.

이제 □문자인쇄해□ 명령으로 문자를 인쇄해보도록 하겠습니다.사용법은 다음과 같습니다.

ㅎ인쇄창. 문자인쇄해(실수: X, Y; 문자: 글)

X,Y 인자에는 문자가 인쇄될 좌표값을 넣고 □글□ 에는 인쇄하고싶은 문자를 적으면 됩니다.여기서의 좌표값 역시 가상용지에서의 좌표값입니다. □ㅎ인쇄창□의 □용지폭□ 과 □용지높이□속성을 이용해서 가상용지의 크기를 알아낸 뒤 적당한 위치를 실제수치로 기입해주어도 됩니다.

문자를 인쇄해보도록 하겠습니다. 명령어편집난중 적당한 사건에 (예를들어 창의 □클릭했을 때□ 라는 사건) 다음과 같이 적습니다.

인쇄창0.준비해;

인쇄창0.배경.글꼴.크기 := 20;

인쇄창0.배경.글꼴.색상 := ㅅ빨강;

인쇄창0.문자인쇄해((인쇄창0.용지폭)/6, (인쇄창0.용지높이)/2, "안녕하세요. 인쇄시험입니다.");

인쇄창0.마무리해;

실행을 시키고 창을 클릭해보십시오. 인쇄용지의 가운데높이에 문자가 인쇄된 것을 볼수 있을것입니다.

객체 □ㅎ메모□ 에 있는 문자를 인쇄할때는 □ㅎ인쇄창□이 필요없습니다. 그냥 □인쇄해□ 명령을 사용하면 됩니다.

메모0.인쇄해;

†ㅎ폴더탐색,  ㅎ파일탐색

선택상황을 만들 때 사용하는 객체로서 윈도우 사용자가 알아야 될 기본 객체입니다. 이미 윈도우에서 많이 사용해본 객체라 따로 설명이 필요없을 것입니다. 빈창에다 그냥 객체만 올려놓고 실행을 시켰다면 □ㅎ폴더탐색□ 과 □ㅎ파일탐색□은 말 그대로 폴더와 파일을 탐색하는 기능밖에 가지지 못합니다. □ㅎ폴더탐색□ 의 속성중 □끌기여부□ 라는 속성을 □참□으로 하면 마우스로 폴더를 드래그했을 때  폴더의 위치를 이동시킬 수 있습니다. 기본값은 거짓으로 되어 있습니다. □ㅎ파일탐색□ 의 □끌기여부□ 라는 속성도 □참□ 으로 하면 파일과 폴더의 끌어놓기가 가능하게 됩니다. 기본값은 □참□입니다.

만일 여러분이 □ㅎ폴더탐색□ 과 □ㅎ파일탐색□을 이용해서 윈도우의 탐색기 같은 기능을 만들려고 한다면 창조도움말중 □파일관련 함수모음□ 에 있는 함수들을 이용하면 됩니다. 여기서는 간단하게 두 객체를 사용해서 폴더와 파일을 탐색해보는 기능만 만들어 보도록 하겠습니다. □ㅎ폴더탐색□ 은 폴더만 탐색할 수 있고 □ㅎ파일탐색□은 파일을 탐색할 수 있습니다. 따라서 선택된 폴더의 파일들을 살펴보려면 다음과 같이 하면 됩니다.

먼저 창에다 객체 □ㅎ폴더탐색□을 올려놓고 □정렬양식□ 속성을 □ㅈㄹ좌□ 로 합니다. 다음에 객체 □ㅎ분할대□를 □폴더탐색0□ 오른편에 올려놓습니다. 그런다음 객체□ㅎ파일탐색□을 창의 빈곳에 올려놓고 □정렬양식□ 속성을 □ㅈㄹ전체□ 로 합니다.(81)

이 상태에서 실행을 시키면 왼쪽의 □폴더탐색0□ 와 오른쪽의 □파일탐색0□ 은 각기 따로 실행이 됩니다. □폴더탐색0□에서 선택된 폴더의 파일들을 오른쪽의 □파일탐색0□에 나타나게 하려면 □폴더탐색0□ 의 □내용이 변했을 때□ 라는 사건에 다음과 같이 적습니다.

파일탐색0.폴더:= 폴더탐색0.폴더;

이렇게 하고 실행을 시키면 □폴더탐색0□에서 선택한 폴더안의 내용을 □파일탐색0□에서 볼 수 있습니다. 만일 선택된 파일을 실행을 시키고 싶다거나 복사, 삭제등의 기능을 추가하고 싶다면 창조도움말중 □파일관련 함수모음□ 에 있는 함수들을 이용하면 됩니다.(82)

▣ 참고

파일탐색0.폴더:= 폴더탐색0.폴더;

∀ 'ㅎ파일탐색'고 □ㅎ폴더탐색□의 □폴더□라는 속성은 현재 위치하는 폴더를 알 수     있고 변경시킬 수 있는 속성입니다.   'ㅎ파일탐색' 은 선택된 폴더안에 포함     되어진 하위 폴더나 파일들을 볼 수 있으므로 □폴더탐색0□에서 선택한 폴더를     파일탐색의 □폴더□속성에 연결해 줌으로 해서 □폴더탐색0□ 의 내용이 변했을 때     (다른 폴더를 선택했을 때) 선택된 폴더안의 내용을 □파일탐색0□에서 볼 수 있     게 한것입니다.

†ㅎ그림판

그림을 보여주는 객체입니다.  그림을 보일 때 여러가지 출력효과를 줄 수도 있습니다. 이미 다른객체를 설명하면서 사용을 해 보았지만 위에서 언급하지 않았던 내용을 예로들어 설명을 하겠습니다.

그림이 보여질 때 출력효과를 주는 방법입니다. 창에 객체 □ㅎ그림판□을 올려놓습니다. □작업도구□ 창의 속성편집난중 □그림□속성을 선택해서 원하는 그림파일을 지정해 줍니다. 다음에 □그림출력방식□ 속성을 선택하고 원하는 효과을 지정하고 확인을 누름니다. 이제 F8을 눌러 실행을 시켜봅니다. 여러분이 지정해준 효과로 그림이 그려지는 것을 보실수 있을겁니다. 만일 그림이 처음 보여질때만이 아니라 프로그램이 실행되고 있는 상태에서 어떤 출력효과를 주기위해서는 □효과그려□라는 명령어를 사용하면 됩니다.

그림판0.효과그려;

만일 위 명령을 □창0□ 의 □클릭했을 때□ 라는 사건에 적어주었다면 □창0□을 클릭할때마다 속성편집난의 □그림출력방식□ 속성에서 정해준 효과로 그림을 다시 그림니다. 속성편집난의 □그림출력방식□에서 정해준 효과가 아닌 다른 그림출력효과룰 직접 적어주어도 됩니다.

그림판0.출력방식.효과 := ㄱㄹ뿌리기;

그림판0.효과그려;

그림출력시 효과는 수십가지가 있기 때문에 일일이 언급하지 않겠습니다. 창조도움말 객체 □ㅎ그림판□ 의 속성중 □출력방식.효과□ 에보면 많은 출력방식과 효과가 있습니다. 원하는 효과를 골라서 사용하시면 됩니다.

이처럼 속성편집난의  □그림출력방식□속성을  지정해주거나 직접 적어주었을때에도 한가지 효과로밖에 그림을 볼 수 없었는데 같은 그림에  여러 가지 출력효과를 얻기위해서는 여러 가지 방법이 있는데 이는 여러분이 프로그램을 어떻게 하느냐에 따라 다릅니다. 여기서는 다음과 같이 □난수□를 사용해서 출력효과를 달리 해 보겠습니다. □난수□는 말 그대로 난수를 반환해주는 실수함수입니다. 난수를 사용하기 위해서는 프로그램이 시작될 때 반드시 난수초기화를 해주어야 합니다.(F11을 누르면 초기화 명령어편집난이 나오는데 여기에 난수초기화; 라고 해주면 됩니다.)

그림판에 그리이 하나 보여지고 있을 때 버튼을 누를때마다 출력효과를 달리해서 그림이 다시 그려지도록 해보겠습니다.

창에 객체 □ㅎ그림판□ 과 □ㅎ버튼□을 하나씩 올려놓습니다. □그림판0□ 의 속성편집난중 □그림□ 속성에 그림파일을 지정해 줍니다. 이렇게 지정해주지 않고 직적 적어주어도 됩니다. ( 그림판0.그림.파일읽어("c:\logo.bmp"); ) □버튼0□ 의 □클릭했을 때□ 라는 사건에 다음과 같이 적습니다.

실수:수;

수:=난수(5);

만일 (수=0)

그림판0.출력방식.효과 := ㄱㄹ뿌리기;

만일 (수=1)

그림판0.출력방식.효과 := ㄱㄹ점돌리기;

만일 (수=2)

그림판0.출력방식.효과 := ㄱㄹ지그재그하;

만일 (수=3)

그림판0.출력방식.효과 := ㄱㄹ지그재그좌;

만일 (수=4)

그림판0.출력방식.효과 := ㄱㄹ하점하점;

그림판0.효과그려;

실행을 시킨 뒤 □버튼0□을 클릭해 보십시오. 클릭할때마다 그림의 출력효과가 무작위로 변경되어서 보여지는 것을 보실수 있을것입니다. 만일 이처럼 무작위로 출력효과를 선정하지 않고 여러분이 원하는 효과를 순서대로 보고 싶다면 □난수□를 사용해서는 안되겠지요?

†ㅎ매체재생기

'ㅎ매체재생기'는 동영상(AVI), 음악(MIDI), 음성(WAV), CD를 재생할 수 있는 객체입니다. 요즘은 대부분 컴퓨터에 ActiveMovie 가 깔려있기 때문에 거의모든 동영상파일과 음악파일을(mpeg, mpe, enc, rmi, mov, *.*) 재생할수 있습니다. 재생하는 방법은 다음과 같이 간단합니다.

재생방법 4단계

1. 파일을 지정한다.

2. 파일을 연다.(단 한번만 재생하려면 생략가능)

3. 재생한다.

4. 재생이 끝나면 닫는다.(생략해도 됨)

예제:("c:\test.avi"가 있을경우)

매체재생기0.파일명 := "c:\test.avi";

매체재생기0.열어;

매체재생기0.재생;

위에서 이미 □ㅎ매체재생기□를 사용했기 때문에 사용법을 다시 설명하지는 않겠습니다. 주의할점은 음악시디 이외의 파일을 재생할경우에는 매체재생기의 속성편집난에서 □장치양식□ 속성을 □ ㅈㅇ자동선택□ 으로 하면 스스로 파일의 종류를 판단해주지만 음악시디를 재생할 경우에는 반드시 □장치양식□ 속성을 □ㅈㅇCD' 로 해야 한다는 점입니다.

†ㅎOLE도구

OLE(Object Linking Embedding) 란 말그대로  객체를 연결하고 복사하고 붙여넣기를 할 수 있는 기능을 말합니다. 마이크로 소프트의 오피스가  바로 대표적인 예라고 할 수 있습니다.(문서나 도표에 그림을 삽입하는 등...) 창조에서  이 OLE의 하위계층까지 제어하지는 못하지만 사용은 할 수 있습니다.  조만간에 이부분도 완성시킬 예정입니다. 간단하게 □ㅎOLE도구□를 이용하는 예를 들어보겠습니다.

□작업메뉴□ 창에서 새작업을 선택합니다. □창0□ 의 속성편집난에서 □메뉴□ 속성을 선택합니다. □추가□ 버튼을 누르면 □메뉴0□ 가 하나 생성이 됩니다. 마우스로 생성된 □메뉴0□를 클릭하고 □하위메뉴□ 버튼을 세번 누름니다. □메뉴0□ 의 하위메뉴 □메뉴1□ □메뉴2□, □메뉴3□ 이 생성됩니다. (76)

□메뉴0□를 클릭해서 활성화시킨 뒤 □제목□속성을 □OLE' 로 고칩니다. 다음에 □메뉴1□을 마우스로 클릭해서 활성화 시킨 뒤 □제목□속성을 □삽입□ 으로 합니다. 마찬가지로 □메뉴2□ 의 □제목□ 속성을 □-□(빼기 표시입니다) 로 바꾸로 □메뉴3□ 의 □제목□속성을 □삭제□ 로 바꿉니다. □제목□속성을 □-□ 로 하면 메뉴에 선이 그어져서 구분되어지는 효과를 냅니다.

다음에 객체 □ㅎOLE도구□를 창에 올려놓고 속성편집난에서 □정렬양식□ 속성을 □ㅈㄹ전체□ 로 합니다. 이렇게 하면 □ㅎOLE도구□를 이용해서 객체를 삽입후 실행시켰을 때 □ㅎOLE도구□ 가 올려져 있는 창안에서만 실행이 됩니다. 이처럼 정렬양식을 □ㅈㄹ전체□ 로 해서 동영상파일 재생기등을 불러와서 재생을 하면 원래의 화면크기와 맞지않아서 그림이 깨져 보이기도 하는데 이때는 창의 크기를 조금씩 조절하면 됩니다.(77)

이제 외형은 갖추어졌습니다. 이상태에서 실행을 시킨 뒤 □OLE도구0□를 더블클릭해도 객체를 부를수 있는 창이 보이게 됩니다. 여기서는 □삽입□ 이라는 메뉴항목에다 객체를 부를수 있는 창을 보이도록 명령을 내려보겠습니다. 마찬가지로 □삭제□메뉴에는 불러왔던 객체를 삭제하도록 명령을 내려보겠습니다.

□삽입□ 이라고 적혀있는 □메뉴1□을 클릭해서 활성화하고 □작업도구□ 창의 □클릭했을 때□ 라는 명령어편집난의 사건에 다음과 같이 적습니다.

OLE도구0.객체삽입창보여;

□삭제□라고 되어있는 □메뉴2□ 의 □클릭했을때□라는 사건에는 다음과 같이 적습니다.

OLE도구0.객체소멸해;

이제 작업이 다 끝났습니다. 실행을 시켜보십시오. 메뉴항목에서 □삽입□을 선택하면 객체를 삽입할 수 있는 창이 보입니다. 아무 객체나 하나 선택해 보십시요.(78)

삽입할 객체를 선택하고 확인을 누르면 □OLE도구0□ 안에 선택한 객체가 삽입되어 집니다. 이 삽입된 객체를 더블클릭하면 실행되어 집니다.(79)(80)

메뉴에서 □삭제□를 선택하면 삽입되었던 객체가 삭제됩니다. 이렇게 OLE도구를 이용해서 불러온 객체를 저장할 수 있는데 다음과 같이 하면 됩니다.

□OLE도구0□ 의 □정렬양식□ 속성을 □ㅈㄹ전체□ 로 했기 때문에 마우스로 클릭해서 □창0□를 활성화 시킬 수 없습니다. 이럴경우에는 □작업도구□창의 맨 윗부분에 현재 창에 포함되어있는 객체가 모두 나열되어 있는데 여기서 □창0□를 선택하면 됩니다.위 방법으로 □창0□를 활성화시키고 □메뉴□ 속성에서 □추가□버튼을 두 번 눌러서 메뉴를 두 개 추가합니다. 추가된 메뉴중 하나는 □제목□속성을 □저장□으로 하고 나머지 하나는 □불러오기□ 로 합니다. □저장□으로 되어있는 □메뉴4□의 □클릭했을때□라는 사건에 다음과 같이 적습니다.

OLE도구0.파일저장해("c:\test.ole");

명령어편집난에서 명령을 적다보면 언뜻 속성과 명령어가 떠오르지 않을때가 있습니다. 그렇다고 일부러 모든 명령어와 속성을 외울 필요는 없습니다. 어떤명령과 어떤 속성이 있었는지만 알고 있으면 됩니다. 명령어편집난에서 Crtl + A를 누르면 현재 창에 포함된 객체와 속성, 명령어를 모두 볼수 있습니다. 가령 아무것도 기록하지 않은 빈 명령어편집난에서 Crtl + A를 누르면 현재 창에 올려져있는 객체와 기본명령어를 볼 수 있습니다. 여기서 원하는 객체를 선택하고 엔터만 치면 됩니다. 그 객체뒤에 □ . □을 치고 다시 Crtl + A를 누르면 이번에는 객체에 포함된 속성과 명령어를 볼 수 있습니다. 마찬가지로 원하는 위치에서 엔터만 치면 됩니다.

다음에 □불러오기□로 되어있는 □메뉴5□ 의 □클릭했을 때□ 라는 사건에는 다음과 같이 적습니다.

OLE도구0.파일읽어("c:\test.ole");

□작업메뉴□ 창의 작업에서 □실해파일만들기□를 선택해서 실행파일을 만든 뒤 다시 실행을 시켜봅니다. 같은방법으로 객체를 추가하여 실행시켜보고 □저장□메뉴를 클릭한 뒤 프로그램을 종료시킵니다. 그런다음 다시 프로그램을 실행시켜 □불러오기□메뉴를 선택해 보십시오. 종료전에 사용했었던 객체가 □OLE도구0□ 에 보여질 것입니다.

▣ 참고

OLE도구0.객체삽입창보여;

∀ 사용자가 직접 객체를 삽입할 수 있도록 창을 보여주는 명령어입니다.

OLE도구0.객체소멸해;

∀OLE도구에 삽입했던 객체를 없애고 OLE도구를 비워주는 명령어입니다.

OLE도구0.파일저장해("c:\test.ole");

∀OLE객체를 파일로 저장시켜주는 명령어입니다.  괄호안에는 저장하고자 하는    파일명을 경로포함해서 적어주면 됩니다.

OLE도구0.파일읽어("c:\test.ole");

∀OLE객체를 파일로부터 읽어오는 명령어입니다. 괄호안에는 읽어올 파일명을     경로포함해서 적어주면 됩니다.

†ㅎ멀티버튼

멀티미디어형 버튼이며 표준도구의 □ㅎ버튼□ 과 기본용도는 같지만 보다 다양한 모양과 기능을 제공하는 객체입니다. □버튼양식□ 속성이나 □그림□ 속성등 □ㅎ멀티버튼□ 이 가지고 있는 속성을 활용하면 여러 가지 효과를 줄 수 있습니다.

†ㅎ멀티이름표

글자를 사용자에게 보여주기위한 객체이며 표준도구의 'ㅎ이름표' 객체에비해 여러가지 기능이 존재합니다. 멀티미디어에 적합한 이름표로 글자에 그림을 넣을수 있는등 표준도구의 □ㅎ이름표□ 와 비교해서 보다 다양한 기능을 가진 객체입니다.

글자에 그림을 삽입하기 위해서는 창에 객체 □ㅎ멀티이름표□를 하나 올려놓고 □작업도구□창의 속성편집난에서 □그림□을 선택한 후 그림파일을 하나 지정해 줍니다. 그러면 지정해준 그림파일이 멀티이름표의 글자에 보여지게 됩니다. 글자크기에 비해 그림이 크거나 작을 경우 □그림조절□ 속성을 □참□ 으로 하면 글자의 크기에 맞게 그림이 조절되는데 이렇게 하면 윈도우의 자원을 그만큼 더 사용하게 되므로 가능하면 그림이 글자보다 클 경우 글자에 맞게 잘라서 사용하는 것이 좋습니다.

†ㅎ동화

'ㅎ동화'는 Animation Gif 파일을 볼 수 있도록 객체화 한것입니다.  물론 일반 Gif그림 파일도 불러서 볼 수 있습니다.  주의 할점은 너무 많은 Animation Gif를 창에 올려놓으면 윈도우의 자원을 많이 잡아 먹기때문에 적당히 사용하여야 합니다.  특히 프레임 수가 많은 것은 더욱 그렇습니다. 일반적인 홈페이지에서 사용하는 것은 적은 프레임이므로 무난할 것입니다.  AVI파일과는 달리  Animation Gif파일은 실행파일에 삽입할 수가 있습니다.

사용방법은 간단합니다. 창에 객체 □ㅎ동화□를 하나 올려놓고 속성편집난에서 □그림□ 속성을 선택한뒤 원하는 Animation Gif 파일을 지정해 주면 됩니다.

†ㅎ화판

아이콘을 10 개까지 등록시킬 수 있고 '앞면' 과 '뒷면' 이라는 'ㅎ배경' 을 가지고 있는 객체입니다.  커서의 모양을 사용자형으로 바꾸고자 할때나 트래이아이콘을 사용하고 싶을때 'ㅎ화판' 에  아이콘을 등록시켜놓고 이 아이콘을 불러다 쓰면 됩니다.

먼저 커서의 모양을 사용자형으로 바꾸어보도록 하겠습니다. 창에 객체 □ㅎ화판□을 올려놓습니다. □작업도구□창의 속성편집난에서 □아이콘□ 속성중 하나를 선택하고 커서로 사용하고자 하는 아이콘파일을 지정해 줍니다. 만일 창을 클릭했을 때 커서의 모양이 지정해준 아이콘으로 변하게 하려면 창의 □클릭했을 때□ 라는 사건에 다음과 같이 적습니다.

커서추가(1, 화판0.아이콘0.핸들);

창0.커서:= 1;

문법검사를 하고 확인을 누른 뒤 실행을 시켜봅니다. 창을 클릭하면 커서가 지정해준 아이콘으로 변하게 될것입니다. 주의할점은 창을 한번더 클릭하면 지정해준 아이콘이 다시 커서로 보여지는 것이 아니라 사라져 버린다는 점입니다. 따라서 커서추가는 한번만 해주면 됩니다.

▣ 참고

커서추가(1, 화판0.아이콘0.핸들);

∀□ 커서추가□ 는 기본명령어에 포함된 명령어로 사용자가 직접 커서를 추가할 수

있는 명령어입니다. 창조에서 기본으로 지원하는 커서의 모양외에 원하는 아이콘을 커서로 쓰고자 할때  이 명령을 사용하면 됩니다. 괄호안에는 두 개의 인자가 들어가는데 첫 번째 인자에는 추가하려는 커서의 서열을 적습니다. '서열' 은 1 부터 사용할 수 있습니다.(양의 정수). 참고로 기존에 있는 커서의 서열은 0 을 포함한 음수입니다.  두번째 인자에는 추가하고자 하는 커서의 핸들을 적습니다. 위 명령은 □화판0□ 의 □아이콘0□를 첫 번째 서열로 지정해서 커서를 추가해준 것입니다.

창0.커서:= 1;

∀창의 커서를 서열 □1□ 로 지정해준 것입니다. 기존 커서의 서열은 0을 포함한 음    의 정수입니다. 따라서 커서의 서열이 양의 정수인 것은 모두 사용자가 지정한    커서입니다.

이제 트래이아이콘을 사용해 보도록 하겠습니다. 위에서 커서를 사용자커서로 바꿀때와 마찬가지로 트래이아이콘으로 사용하고자 하는 아이콘을 객체 □ㅎ화판□ 의 □아이콘□ 속성에 등록합니다. 다음에 트래이아이콘을 사용하고자 하는 사건에 (가령 버튼을 클릭했을 때) 다음과 같이 적습니다.

화판0.트래이.할당해(화판0.아이콘0);

화판0.트래이보기:=참;

실행을 시킨 뒤 버튼을 클릭해보면 □화판0□ 의 □아이콘0□ 에 등록시켜둔 아이콘이 트래이아이콘으로 보여질 것입니다.  만일 창을 최소화했을 때 taskbar 에는 보이지 않고 트래이아이콘 만 보이게 하려면 □트래이만보기□ 라는 명령을 사용하면 됩니다. □트래이만보기□ 명령을 사용했다면 창을 다시 활성화 시키기위해서 객체 □ㅎ화판□의 속성중 □팝업메뉴□를 사용해야 합니다.

여기서 간단하게 □팝업메뉴□ 사용하는 법을 알아보도록 하겠습니다. 창조에 포함된 객체중에는 □팝업메뉴□ 속성을 가지고 있는 객체가 있습니다. 이러한 객체들은 □팝업메뉴□를 지정해주면 마우스 오른쪽버튼을 눌렀을 때 지정해준 메뉴가 보이게 됩니다.  객체 □ㅎ버튼□을 예로 들어보겠습니다.  창에 객체 □ㅎ버튼□을 올려놓고 □제목□ 속성을 □창색상□ 으로 합니다.(83)

□창0□의 □메뉴□속성을 클릭하면 메뉴를 추가하거나 삭제할수 있는 메뉴관리창이 뜨는데 여기서 맨왼쪽에 있는 □추가□버튼을 한번 눌러서 □메뉴0□를 생성합니다. 생성된□메뉴0□를 클릭해서 활성화시킨 뒤 왼편에서 두 번째에 있는 □하위메뉴□ 버튼을 두 번클릭해서 □메뉴0□ 의 하위메뉴를 두 개 생성하고 맨오른쪽에 있는 □확인□버튼을 누릅니다.(84) (85)

□메뉴1□ 의 □제목□속성을 □빨강□으로 바꾸고 □메뉴2□ 의 □제목□속성을 □노랑□으로 바꿉니다.  □버튼0□ 의 □팝업메뉴□ 속성을 선택한 뒤 □메뉴0□를 지정해줍니다. □메뉴0□를 지정해주면 □메뉴0□ 가 포함하고 있는 하위메뉴도 같이 지정이 됩니다. 이제 □메뉴1□의 명령어편집난중 □클릭했을 때□ 라는 사건에 다음과 같이 적습니다.

창0.색상:= ㅅ빨강;

□메뉴2□의 □클릭했을 때□ 에 다음과같이 적습니다.

창0.색상:= ㅅ노랑;

이제 실행을 시켜보십시오. 마우스를 버튼에 위치시키고 오른쪽버튼을 누르면 □팝업메뉴□속성에서 지정해준 메뉴가 보일것입니다.(86)

□빨강□을 선택하면 창의 색상이 빨강색으로 변하게 됩니다.(87)

참고로 창에서 □메뉴□속성을 선택했을 때 □메뉴관리창□이 보여지게 되는데 여기서 마우스 오른쪽키를 이용하면 메뉴의 생성, 복사, 삭제가 가능합니다. 또한 마우스로 메뉴를 드래그해서 원하는 위치에 붙여넣기를 할 수 있습니다.  주의할 점은 □메뉴1□을 마우스로 드래그해서 □메뉴0□ 위에다 놓았다면 □메뉴1□ 은 □메뉴0□ 와 같은 서열에 놓이게 된다는 점입니다.  □메뉴0□ 의 하위메뉴로 들어가는 것이 아닙니다.  만일 □메뉴0□ 의 하위메뉴로 위치하게 하고 싶다면 □메뉴0□ 가 가지고 있는 하위메뉴중 하나에 끌어다 놓으면 됩니다.

5. 예제를 통한 창조 정복

†스크린세이버 만들기

프로그램을 만들려면 가장 중요한 것이 설계를 잘 하는 것입니다. 설계가 제대로 되지않은 상태에서 만들려고 한다면 작업이 진행도 잘 되지않고 또 어찌어찌 만들었다 해도 어딘가 결함이 있을 확률이 큼니다.  일단 설계만 다 되면 다음부터는 빠른속도로 작업을 진행할 수 있습니다.

그럼 먼저 스크린세이버를 어떻게 만들것인지 설계를 하도록 하겠습니다.  이왕에 만드는 것이니까 재미있게 만드는 것이 좋겠죠?  두 캐릭터가 있는데 하나는 도망다니고 다른 하나는 도망 다니는 캐릭터를 뒤쫒는 것으로 하겠습니다. 도망 다니는 캐릭터는 뒤쫒는 캐릭터가 근처까지 오면 잡히지 않고 화면안에서 아무곳으로나 예상치 못한 위치로 이동하도록 하고요,  뒤쫒는 캐릭터는 또다시 방향을 바꾸어서 뒤쫒고... 사용자가 키보드나 마우스를 움직여서 스크린세이버를 정지시키기 전에는 영원히 잡지 못하도록 만들어 보겠습니다. 또 일정시간마다 두 캐릭터가 서로 대화를 하도록 하죠...프로그램의 줄거리는 이렇게 정하도록 하죠...

그럼 이제 프로그램의 구상은 끝이 났으니 실제 프로그램을 어떻게 만들것인지 생각해 보도록 하죠. 먼저 두 캐릭터가 존재 해야겠죠?  쫒는 캐릭터는 왼쪽으로 달리는 캐릭터와 오른쪽으로 달리는 캐릭터 두 개가 필요합니다. 캐릭터가 정해졌으면 다음에는 이 캐릭터를 어떻게 자신이 의도한대로 움직이게 할것인지를 생각해야 합니다.

캐릭터를 이동시키려면 □위치크기바꿔□ 라는 명령어와 객체 □ㅎ시계□를  이용하면 됩니다. □위치크기바꿔□ 라는 명령어는 말 그대로 객체의 위치와 크기를 바꿔주는 명령어입니다. 우리가 원하는 것은 객체의 위치만 이동시키면 되므로 크기는 그대로 두고 위치만 바꿔주면 되겠지요. 그러면 두 캐릭터가 움직이는 것은 □위치크기바꿔□ 와 □ㅎ시계□ 로써 해결이 되었습니다. 다음은 두 캐릭터가 서로 인접했을 때 도망 다니는 캐릭터가 화면상에서 예상치 못하는 위치로 이동을 하게 만들어야 하는데 이것은 □위치크기바꿔□ 명령에 □난수□를 적용하면 해결이 됩니다. □위치크기바꿔□ 명령에는 객체를 옮길 좌표와 크기를 적어주어야 되는데, 옮길 좌표에 난수를 적용하면 되겠지요. 마지막으로 일정시간마다 두 객체가 서로 대화를 하도록 해야 하는데 실제 음성으로 대화를 하게 할 수도 있지만 여기서는 대화내용을 글로 보이도록 하겠습니다.(만화처럼...) 대화내용을 글로 보이는 것은 객체 □ㅎ이름표□를 사용하면 됩니다. 일정시간마다 대화를 하게 하는 것은 역시 객체 □ㅎ시계□를 이용하면 해결이 됩니다. 대화내용이 똑같으면 단조로우니까 실제 대화를 하는것처럼 여러 대화내용을 미리 기록을 해 두고 역시 □난수□를 사용해서 매번 다른 대화가 보이도록 하면 되겠죠.

이제 대강의 작업방향은 설정이 된 것 같습니다. 그러면 실제 작업에 들어가기 전에 어떤 순서로 작업을 진행할지 정리를 한번 해 보도록 하겠습니다. 두 캐릭터의 이름을 도망 다니는 캐릭터는 □우주인□ 이라 하고 쫒는 캐릭터의 이름은 □쏘닉□ 이라 하겠습니다.

첫째. 프로그램이 실행됨과 동시에 우주인이 쏘닉의 좌측과 우측중 어느쪽에 위치       하고 있는지를 검사한다.

둘째. 만일 우주인의 위치가 쏘닉의 좌측이면 쏘닉을 좌측으로 움직이게 하고 우       측이면 쏘닉을 우측으로 움직이게 한다.

셋째. 우주인과 쏘닉의 거리가 근접하게 되면 우주인의 위치를 이동시킨다.

넷째. 일정시간마다 우주인과 쏘닉의 대화내용을 보이도록 한다.

이정도면 정리는 끝난 것 같군요. 위에서 정리한 네단계의 명령을 직접 객체 □ㅎ시계□안에 삽입하는 것은 좋은 방법이 아닙니다. 각각의 단계를 함수로 만든다음 시계에서는 그 함수만 불러다 쓰는 방법으로 하겠습니다. 그러면 이제 작업을 시작해 보겠습니다. □작업메뉴□창의 멀티미디어도구중 □ㅎ동화□ 객체를 세 개 창에 올려놓습니다.(88)

'동화0' 의 '이름' 속성을 '쏘닉좌'로 고치고 '그림'속성을 선택해서 sole.gif 파일을 지정해 줍니다. '동화1' 의 '이름'속성은 '쏘닉우' 로 고치고 '그림'속성에다 sori.gif 파일을 지정해 줍니다. '동화2'의 '이름'속성은 '우주인' 으로 바꾸고 □그림□속성에다 spaceman.gif 파일을 지정해 줍니다.(89)

이제 위에서 정리한 네단계 각각의 함수를 만들도록 하겠습니다. □창0□에 객체 □ㅎ사용자함수□를 하나 올려놓고 □이름□ 속성을 □추적□ 으로 합니다. 객체 □ㅎ사용자함수□ 하나에는 열개까지 함수를 정의할수 있습니다. 여기서 우리가 만들 함수는 모두 열 개가 안되니까 객체 □ㅎ사용자함수□ 는 하나만 올려놓아도 충분합니다. (90)

이제 위에서 정리한 네단계중 첫 번째 단계를 수행할 함수를 만들어 보겠습니다. □작업메뉴□창의 □작업□중 □초기화명령어편집□난에 □우측□ 이라는 진리형변수를 선언해 놓고 만일 우주인의 위치가 쏘닉의 우측에 있으면 변수 □우측□은 □참□ 좌측에 있으면 변수 □우측□은 □거짓□ 으로 하겠습니다.

□작업메뉴□창의 □작업□중 □초기화명령어편집□난에 다음과 같이 적습니다.

진리: 우측;

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 여기에 다음과 같이 적습니다.(91)

위에서 만든 함수 □위치검사□는 실행이되면 □쏘닉우□ 와 □우주인□ 의 좌변값을 비교해서 진리형변수 □우측□ 의 □참□과 □거짓□ 여부를 결정해 줍니다. 참고로 □초기화명령어편집□ 난에 적어준 내용은 프로그램 전체에서 경로지정없이 불러다 사용할 수 있습니다 (전역변수 라고 함).

이제 두 번째 단계를 실행할 함수를 만들어 보겠습니다. 두 번째단계는 실제로 □쏘닉우□ 와 □쏘닉좌□를 □우주인□이 있는곳을 향해서 움직이도록 하는 단계입니다. 여기서는 두 개의 함수를 만들도록 하겠습니다. 하나는 □쏘닉우□가 우측으로 움직이도록 하는 □우달려□ 라는 함수이고(□우주인□이 □쏘닉우□의 우측에 위치했을 경우 실행될 함수) 다른하나는 □쏘닉좌□ 가 좌측으로 움직이게 하는 □좌달려□ 라는 함수(□우주인□이 □쏘닉우□의 좌측에 위치했을 경우 실행될 함수)입니다. 진리형변수 □우측□ 의 □참□ 과 □거짓□ 여부를 □쏘닉우□와 □우주인□의 좌변값을 비교해서 결정하도록 했는데 이는 기준을 □쏘닉우□ 로 잡았기 때문입니다. □쏘닉우□를 기준으로 □우주인□이 좌측에 있으면 함수 □좌달려□가 실행되게 하고 우측에 있으면 함수 □우달려□가 실행되게 명령을 내릴것입니다. 그럼먼저 □우달려□ 라는 함수를 만들어보겠습니다.

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 함수선언부에 다음과 같이 적습니다.

함수: 우달려;

함수의 결과를 적는난에는 다음과 같이 적습니다.

만일(우측=거짓)

나가;

실수:우좌, 우위;

우좌:= (우주인.좌변-쏘닉우.좌변);

우위:= 우주인.윗변-쏘닉우.윗변;

쏘닉우.보이기:= 참;

쏘닉우.동영상:=참;

쏘닉좌.보이기:=거짓;

쏘닉좌.동영상:= 거짓;

만일(우좌=0)

우좌:= 1500;

쏘닉우.위치크기바꿔(쏘닉우.좌변+15, 쏘닉우.윗변+(우위/(우좌/15)),

쏘닉우.폭, 쏘닉우.높이);

쏘닉좌.위치크기바꿔(쏘닉우.좌변, 쏘닉우.윗변, 쏘닉좌.폭, 쏘닉좌.높이);

함수 □우달려□는 □우주인□이 □쏘닉우□의 우측에 있을때만 실행이 되면 되므로 함수첫머리에 □우측□이 □거짓□ 일 경우 함수를 빠져나가라는 □나가□ 명령을 사용했습니다.  실수형변수 □우좌□ 와 □우위□를 정의해서 □쏘닉우□와 □우주인□ 의 거리를 계산했습니다.  우측으로 달리는 □쏘닉우□ 만 □동영상□ 과 □보이기□ 속성을 □참□으로 했습니다. □위치크기바꿔□ 라는 명령어에는 네 개의 실수형 인자가 들어갑니다. 첫 번째 인자와 두 번째 인자에는 객체를 옮기고자 하는 위치에서 객체 좌측상단의 좌변값과 윗변값이 들어가고 세 번째와 네 번째 인자에는 바뀌어질 객체의 폭과 높이가 들어갑니다. 함수 □우달려□ 에서는  □쏘닉우□ 의 좌변을 15 씩 증가하게 했습니다.  만일 □우주인□과 떨어진 거리 □우좌□가 150 이라면 □쏘닉우□를 10번 이동시키면 □우주인□ 과 만나게 되겠죠?  □쏘닉우□의 좌변값이 □우주인□의 좌변값과 같아질 때 마찬가지로 윗변값도 같게 만들어주기위해 위변의 증가치는 비례식을 사용해서 구했습니다. 산수를 조금만 하시면 이해가 될것입니다. 만일 □쏘닉우□ 의 좌변과 윗변을 같은 수치로 증가하게 한다면 □쏘닉우□가 □우주인□을 향해서 움직이는 것이 아니라 항상 일정한 기울기를 가진채 이동하게 될것입니다.  □쏘닉우□의 크기는 바꿀필요가 없기 때문에 그대로 □쏘닉우.폭□ 과 □쏘닉우.높이□를 사용했습니다. 이렇게 하면 □쏘닉우□는 위치만 바뀌고 크기는 바뀌지 않습니다. □쏘닉좌□ 는 □보이기□와 □동영상□속성을 □거짓□으로 하고 위치이동은 □쏘닉우□와 같이 하도록 했습니다. 실제로 함수 □우달려□ 가 실행될때에 □쏘닉좌□ 는 움직이지 않는 것이 시스템의 자원을 아끼는데 효율적이지만 여기서는 같이 움직이도록 했습니다. 나중에 여러분이 □보이기□ 속성이 □거짓□인 쏘닉은 움직이지 않도록 만들어 보십시오. 실수형변수 □우좌□가 0 일때(□쏘닉우□와 □우주인□ 의 좌변값이 같을 때) 는 □우좌□를 1500 으로 정의해 주었는데 이는 □쏘닉우.위치크기바꿔□  에서 □우좌□를 분모로 사용했기 때문입니다. 분모가 0 인 것은 있을수 없기때문입니다.

다음으로 □쏘닉좌□ 가 좌측으로 이동하는 □좌달려□ 라는 함수를 만들어보겠습니다.

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 함수선언부에 다음과 같이 적습니다.

함수: 좌달려;

함수의 결과를 적는난에는 다음과 같이 적습니다.

만일(우측)

나가;

실수:좌좌, 좌위;

좌좌:= 우주인.좌변-쏘닉좌.좌변;

좌위:= 우주인.윗변-쏘닉좌.윗변;

만일(좌좌=0)

좌좌:= 1500;

쏘닉좌.보이기:= 참;

쏘닉좌.동영상:= 참;

쏘닉우.보이기:= 거짓;

쏘닉우.동영상:= 거짓;

쏘닉좌.위치크기바꿔(쏘닉좌.좌변-15, 쏘닉좌.윗변-(좌위/(좌좌/15)),

쏘닉좌.폭, 쏘닉좌.높이);

쏘닉우.위치크기바꿔(쏘닉좌.좌변, 쏘닉좌.윗변, 쏘닉우.폭, 쏘닉우.높이);

사용한 명령어가 함수 □우달려□ 와 거의 같습니다. 진리형변수 □우측□ 이 □참□ 이면 (□우주인□이 □쏘닉우□ 의 우측에 위치한 경우) 함수 □좌달려□를 빠져나가게 했고 □거짓□ 일경우에는 실행되게 했는데 □쏘닉좌□ 의 □보이기□ 와 □동영상□ 속성을 □참□ 으로 했고 □쏘닉우□ 의 □보이기□ 와 □동영상□ 속성은 □거짓□으로 했습니다. 함수 □우달려□ 와 마찬가지로 □쏘닉좌□ 가 □우주인□을 향해서 이동하는동안 □쏘닉우□ 는 □보이기□와 □동영상□ 속성을 □거짓□으로 한채 □쏘닉좌□ 와 같이 움직이게 했습니다.

이제 세 번째 단계를 수행할 함수를 만들도록 하겠습니다. 이번에 만들 함수가 실행하는 것은 □우주인□과 □쏘닉□의 거리가 근접했을 때 □우주인□ 의 위치를 □난수□를 이용해서 예상치 못하는 곳으로 이동시키는 것입니다. 따라서 □난수□를 사용해야 하는데 그러기 위해서는 □초기화명령어편집난□ 에 □난수초기화□를 해 주어야 합니다.  □난수초기화□를 해주지 않으면 진정한 의미의 난수가 발생되지 않습니다.  F11을 눌러서 □초기화명령어편집□난에 난수초기화를 해줍니다.(92)

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 함수선언부에 다음과 같이 적습니다.

함수: 충돌;

함수의 결과를 적는난에는 다음과 같이 적습니다.

실수:좌,위;

반복

{

좌:= 난수(화면폭 - 우주인.폭);

} 까지(절대값(좌-쏘닉우.좌변) >250);

반복

{

위:= 난수(화면높이 - 우주인.높이);

} 까지(절대값(위-쏘닉우.윗변) >우주인.높이);

만일((절대값(우주인.좌변-쏘닉우.좌변) <= (우주인.폭 * 1.5))

또는 (절대값(우주인.윗변- 쏘닉우.윗변)<= (우주인.높이/4)))

우주인.위치크기바꿔(좌,위, 우주인.폭, 우주인.높이);

실수형변수 □좌□ 와 □위□를 정의한뒤 발생되는 난수를 받도록 했습니다. □화면폭□ 과 □화면높이□ 는 여러분이 사용하고 있는 모니터의 폭과 높이입니다. 맨 아랫쪽의 만일 조건문에서 (우주인.좌변-쏘닉우.좌변) 의 절대값이 □우주인□ □폭□의 1.5배보다 작거나 (우주인.윗변- 쏘닉우.윗변) 의 절대값이 □우주인□ □폭□ 의 1/4 보다 작으면 □우주인□의 위치를 바꾸게 했습니다. 이때 바뀔 □우주인□ 의 □좌변□은 □좌□ 이고 □윗변□은 □우□ 로 지정을 해 주었습니다. 이것이 바로 □좌□ 와 □위□에 대입될 난수의 발생을 반복시킨 이유입니다. □우주인□ 이 이동할 때 □쏘닉우□ 와의 가로방향 거리는 250 이상, 세로방향거리는 □우주인□의 □높이□ 이상으로 정해준 것입니다. 이렇게 해주면 □쏘닉우□ 의 위치가 □우주인□ 에 근접했을 때 □우주인□은 난수발생에 의해 무작위로 위치이동을 하게되고 이동거리는 최소한 가로방향으로 □쏘닉우□ 와 250 이상떨어진 곳으로 이동하고 세로방향으로는 최소한 자신의 □폭□ 이상 떨어진 곳으로(□우주인□의 □폭□이 49 이므로 49 이상 떨어진 곳으로) 이동을 하게 됩니다.

이제 마지막으로 네 번째단계를 실행할 함수를 만들어 보겠습니다.  네 번째 단계는 □쏘닉□ 과 □우주인□ 이 서로 대화를 하는 것이므로 대화내용을 보여줄 수 있도록 객체 □ㅎ이름표□를 두 개 창에 올려놓습니다.(93)

'이름표0' 의 '이름' 속성을 '쏘닉왈' 로 고치고 □제목□속성은 □창조 뺏긴아이□ 로, □글꼴□ 속성에서 □크기□는 14 로 색은 □노랑색□ 으로 합니다.  '이름표1' 의 '이름'속성을 '우주인왈' 로 고치고 □제목□ 속성은 □창조 훔친아이□ 로, □글꼴□속성에서 □크기□는 14 로 색은 □녹색□ 으로 합니다.  □쏘닉왈□ 과 □우주인왈□의 □보이기□ 속성을 □거짓□으로 합니다.  이제 함수를 만들어 보겠습니다. 먼저 □쏘닉□ 과 □우주인□ 이 말하는 내용을 각각의 함수로 만들겠습니다.

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 함수선언부에 다음과 같이 적습니다.

문자함수: 쏘닉말해;

함수의 결과를 적는난에는 다음과 같이 적습니다.

실수:말종류;

말종류:= 난수(5);

만일(말종류=0)

결과:= "헉헉! ";

아니면 만일(말종류=1)

결과:= "잡히기만 해봐라!";

아니면 만일(말종류=2)

결과:= " 내 창조 돌리도!";

아니면 만일(말종류=3)

결과:= username+ "(아)야 재좀 때려줘";

아니면

결과:= " 아이고 다리아퍼!!!";

실수형변수 □말종류□ 에는 0부터 4까지의 수중 무작위로 하나가 저장됩니다. 그리고 그 각각의 경우에 대해 문자함수 □쏘닉말해□ 의 결과값을 정해준 것입니다. □username□ 은 컴퓨터 사용자의 이름을 반환해주는 문자함수입니다.

이제 □우주인□ 의 대화내용을 함수로 만들겠습니다.

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 함수선언부에 다음과 같이 적습니다.

문자함수: 우주인말해;

함수의 결과를 적는난에는 다음과 같이 적습니다.

실수:말종류;

말종류:= 난수(5);

만일(말종류=0)

결과:= "메롱! ";

아니면 만일(말종류=1)

결과:= "힘들어 죽겠지?";

아니면 만일(말종류=2)

결과:= "하하하!";

아니면 만일(말종류=3)

결과:= " 아! 재밌다";

아니면

결과:= username + "(이)는 어디갔지?";

이제 □쏘닉□ 과 □우주인□ 의 대화내용은 모두 함수로 만들었습니다. 그러면 실제로 이 두 함수를 불러다 사용할수 있는 함수를 만들도록 하겠습니다.

지금까지 위에서 만든 함수들은(□위치검사□, □우달려□, □좌달려□, □충돌□) 객체 'ㅎ시계□를 올려놓고 □시계가작동될 때□ 라는 사건에 집어넣어서 □시가간격□ 속성에서 지정해준 시간간격을 주기로 실행이 되게끔 할 것입니다. 그런데 이 □시간간격□ 속성은 300(0.3초)  으로 지정을 해줄것입니다(0.3초마다 각 함수가 한번씩 실행됨). 따라서 만일 지금만들 함수를 이 시계안에 포함시켜서 문자함수 □쏘닉말해□ 와 □우주인말해□를 실행시킨다면 0.3초마다 대화내용을 보여주게 됩니다. 그렇다면 정신이 없겠죠?  그렇다면 객체 □ㅎ시계□를 하나더 올려놓고 □시간간격□ 속성을 5000 쯤으로 한뒤 이 안에 대화함수를 집어넣어서 5초간격으로 대화내용을 보여주게 될것입니다.  이처럼 □ㅎ시계□ 객체를 하나만 더 추가하면 문제는 해결이 되지만 이것은 좋은 방법이 아닙니다. 프로그램의 속도를 늦추는 결과만 초래하게 되는 방법입니다(물론 눈에 띄지는 않겠지만...). 그렇다면 □ㅎ시계□ 객체는 하나만 사용하고 대화함수는 □시간간격□ 속성에서 정해준 간격이 아니라 더 긴 주기로 실행이 되게하려면 어떻게 해야 할 것인가...

해결방법은 간단합니다. 실수형변수 □수□를 정의해주고 초기치를 1 로 정의해준 뒤 시계가 한번씩 작동될때마다 이 수를 1 씩 더해가면 됩니다. 그래서 □수□ 가 적당한 수치가 되었을 때 대화함수를 실행되게 하면 됩니다. 시계는 0.3 초마다 작동이 되니까 3초후에는 수가 10 이 되겠죠? 만일 6초후에 대화함수를 실행되게 하고싶다면 수가 20 이 되었을 때 대화함수가 실행되게 하면 됩니다.  그러면 이제 실제로 대화함수를 만들어 보도록 하겠습니다.

F11을 눌러서 □초기화명령어편집난□ 에 진리형변수 □말□ 과 실수형변수 □수□를 정의해줍니다.(94)

사용자함수 □추적□ 의 명령어편집을 선택하고 빈곳중 아무곳이나 클릭하면 명령어편집창이 보여지는데 함수선언부에 다음과 같이 적습니다.

함수: 대화;

함수의 결과를 적는난에는 다음과 같이 적습니다.

만일((수%60)>35)

말:= 참;

만일(말=거짓)

나가;

아니면

{

만일((수%60)>35)

{

우주인왈.보이기:= 참;

우주인왈.위치크기바꿔(우주인.좌변, 우주인.윗변-20, 우주인왈.폭,

우주인왈.높이);

만일(화면폭-우주인왈.폭<우주인왈.좌변)

우주인왈.위치크기바꿔(화면폭-우주인왈.폭, 우주인.윗변-20,

우주인왈.폭, 우주인왈.높이);

}

아니면

우주인왈.보이기:= 거짓;

만일((수%50)>48)

우주인왈.제목:= 추적.우주인말해;

만일((수%60)>45)

{

쏘닉왈.보이기:= 참;

쏘닉왈.위치크기바꿔(쏘닉우.좌변, 쏘닉우.윗변-20, 쏘닉왈.폭,

쏘닉왈.높이);

만일(화면폭-쏘닉왈.폭<쏘닉왈.좌변)

우주인왈.위치크기바꿔(화면폭-쏘닉왈.폭,쏘닉우.윗변-20,

쏘닉왈.폭, 쏘닉왈.높이);

}

아니면

쏘닉왈.보이기:= 거짓;

만일((수%60)>58)

쏘닉왈.제목:= 추적.쏘닉말해;

}

□%□는 나머지를 구하는 연산자입니다. 실수: 수;,  수:= 40 % 39; 라고 했다면 □수□ 에는 40을 39로 나눈 나머지 즉 1 이 저장됩니다. 따라서 함수 □대화□에서는 □수□를 60 으로 나눈 나머지가 35보다 크면 □초기화명령어편집난□에서 정의해준 진리형변수 □말□ 이 □참□ 값이고 만일 □거짓□ 이라면 함수을 빠져나가라는 것입니다. 진리형변수 □말□이 □참□ 일경우에 실행될 나가; 아래의 명령중□만일((수%60)>35)□는 수를 60 으로 나눈 나머지가 35 보다 클 경우에 다음명령을 실행하라는 것으로 시간으로 계산하면 프로그램이 시작된지 약 28초후에 괄호안의 명령을 실행하라는 의미입니다. (60으로 나눈 나머지가 35 이상이 되려면 □수□는 95 이상이 되어야 하고 □수□가 95가 되려면 약 28초가 소요됨. □수□ 가 1씩 증가되는데는 앞으로 사용할 객체 □ㅎ시계□ 의 □시간간격□ 속성을 300 으로 할 것이기 때문에  0.3초가 소요됨.) 그리고 60 으로 나눈 나머지가 35 보다 큰경우는 36 부터 59 까지 이므로 이명령이 실행될 시간은 약 7초입니다.  □만일((수%50)>48) 우주인왈.제목:= 추적.우주인말해;□ 는 □수□를 50 으로 나눈 나머지가 48 보다 클 경우 □우주인왈.제목:= 추적.우주인말해;□ 을 실행하라는 것으로 프로그램이 시작된지 약 30초 후에  딱 한번만 사용자함수 □추적□ 의 □우주인말해□를 실행하라는 의미입니다. □만일((수%60)>45)□ 이하의 명령도 시간만 서로 달리했을뿐 모두 같은 의미입니다.

이제 처음에 정리했던 네단계를 실행할 함수는 모두 만들었습니다. 그러면 □창0□에 객체 □ㅎ시계□를 하나올려놓고 □시간간격□ 속성을 300 으로 합니다. 다음에 □시계가작동될 때□ 라는 사건에 다음과 같이 적습니다.(95)

마지막으로 프로그램이 스크린세이버의 기능을 할 수 있도록 몆가지만 추가하면 끝이 납니다.

□창0□에 객체 □ㅎ버튼□을 올려놓고 □폭□ 과 □높이□ 속성을 1 로 해서 눈에 보이지 않게 합니다. 이는 화면하단에 보여지는 □한글 입력 상태창□을 보이지 않게 하려는 목적입니다.  입력포커스를 가지는 객체가 있을 경우 □한글 입력 상태창□ 이 보여지게 되는데 입력포커스가 없는 □ㅎ버튼□을 올려놓음으로 해서 이것을 보이지 않게 한 일종의 편법입니다.  다음으로 □창0□의 □창양식□ 속성을 □ㅊㅇ창틀무□ 로 바꾸고 □색상□ 속성을 □ㅅ검정□ 으로 합니다. □커서□ 속성을 □ㅋㅅ투명□으로 합니다.

스크린세이버는 자판을 누르거나 마우스를 움직였을 경우 실행이 종료되어야 합니다. 이 기능을 추가하기 위해 F11을 눌러서 □초기화명령어편집난□ 에 실수형변수로 □엑스□ 와 □와이□를 정의해 줍니다.(96)

□창0□ 의 □생성할 때□ 에 다음과 같이 적습니다.(97)

□창0□ 의 □마우스를 움직일 때□ 에 다음과 같이 적습니다.(98)

□창0□ 의 □자판을 뗄 때□ 에 다음과 같이 적습니다.(99)

□버튼0□ 의 □자판을 누를 때□ 와 □클릭했을 때□ 라는 사건에 다음과 같이 적습니다.

끝내;

□창0□에서 □버튼0□을 찾아서 활성화시키기가 어렵다면 □작업도구□창의 상단부에 객체들의 리스트를 보여주는 곳이 있는데 여기서 □버튼0□을 선택해서 활성화시키면 됩니다.

이제 모든작업이 끝났습니다. 실제 의도했던대로 프로그램이 실행이 되는지 실행을 시켜보십시오.  여기서 만들어진 프로그램을 스크린세이버로 사용하려면 확장자룰 scr 로 바꾸기만 하면 됩니다.