스크립트 편집기 예제
예제: 스크립트 편집기를 통해 게임 만들기
스크립트 편집기 설정
- 태그를 다음과 같이 8개 생성합니다.
태그명: Color 데이터 종류: STRING 초기값: #ff0000
태그명: Game ON 데이터 종류: BOOL 초기값: False
태그명: Points 데이터 종류: INT (INT16)
태그명: sleepTime 데이터 종류: INT (INT16) 초기값: 500
태그명: level 데이터 종류: INT (INT16) 초기값: 1
태그명: difficulty 데이터 종류: INT (INT16)
태그명: clicked 데이터 종류: BOOL
태그명: default_sleep 데이터 종류: INT (INT16) 초기값: 500
-
페이지를 생성하고 이름을 “Main Menu”로 설정합니다. 프로젝트 브라우저에서 페이지 클릭 후 배경색을 검은색으로 설정합니다.
-
문자 오브젝트 3개를 생성합니다. 다음 그림처럼 오브젝트를 배치하고 각각의 문자 내용을 수정합니다. 문자 오브젝트의 배경은 검은색으로, 폰트의 색상은 하얀색으로 설정합니다. “Main Menu” 오브젝트의 폰트 크기는 30으로 설정합니다.
-
새 페이지 2개를 생성합니다. 하나는 Gameplay 라는 이름으로 변경하고, 다른 하나는 Selection 이라는 이름으로 변경합니다. 두 페이지 모두 배경색은 검은색으로 지정합니다.
-
Gameplay 페이지에서 문자 오브젝트 2개와 사각형 오브젝트 하나를 생성합니다. 오브젝트는 다음 그림처럼 배치합니다. 문자 오브젝트는 배경색을 검은색으로, 폰트 색상을 흰색으로 지정합니다. 사각형 오브젝트의 채우기 속성에는 Color 태그를 연결합니다. 화면 중앙 상단에 위치한 문자 오브젝트에는 Points 태그를 연결합니다.
- Selection 페이지에서는 문자 오브젝트를 3개 등록합니다. 각각 Easy, Medium, Hard 라는 내용을 입력한 다음 다음 그림처럼 배치 및 수정합니다.
- 페이지 생성은 완료되었으며 다음은 스크립트 작성을 진행합니다. 총 9개의 스크립트를 생성해야 하며, 모두 수동 스크립트입니다. Gameplay 라는 이름의 스크립트를 생성하고 다음 내용을 복사 및 붙여넣기 합니다.
while(tag.read("Game ON")){
var currPoint = tag.read("Points"); // 현재 포인트 저장
var chance = Math.floor( Math.random() * (100 - 1 + 1)) + 1; // 랜덤 숫자 생성
tag.write("clicked", 0); // 클릭 상태 초기화
thread.msleep(100);
if(chance > 50){ // 녹색 또는 적색이 될 확률 각각 50%
tag.write("Color", "#00FF00");
}
else{
tag.write("Color", "#FF0000");
}
thread.msleep(tag.read("sleepTime"));
if(tag.read("Points") > currPoint){ // 사용자가 점수를 획득하는 경우
tag.write("level", tag.read("Points") + 1); // 레벨 증가
thread.msleep(100);
if(tag.read("sleepTime") > 250) // sleep이 250 ms 이하가 아니면
tag.write("sleepTime", tag.read("default_sleep") - (tag.read("Points") * 20)); // 1점마다 20씩 값 감소
thread.msleep(100);
}
}
다음 스크립트는 Exit Game 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
system.exit(); // will just quit the game
다음 스크립트는 Start Game 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
page.open("Selection"); // oSelection 페이지 열기 (난이도 설정)
다음 스크립트는 Point 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
while(!tag.read("clicked")){ // 사용자가 클릭을 안 한 상태일 때
tag.write("clicked", 1); // 클릭을 한 것처럼 값을 씁니다.
if(tag.read("Color") == "#FF0000")
{
tag.write("Points", tag.read("Points") - 1); // 적색이면 점수 잃음
}
if(tag.read("Color") == "#00FF00")
{
tag.write("Points", tag.read("Points") + 1); // 녹색이면 점수 획득
thread.msleep(100);
tag.write("Color", "#FF0000"); // 색을 적색으로 변경
}
}
다음 스크립트는 Difficulty 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
switch(tag.read("difficulty")){
case 1:
tag.write("sleepTime", 1500);
tag.write("default_sleep", 1500);
page.open("Gameplay");
tag.write("Game ON", 1);
thread.msleep(100);
system.runScript("Gameplay");
break;
case 2:
tag.write("sleepTime", 1000);
tag.write("default_sleep", 1000);
page.open("Gameplay");
tag.write("Game ON", 1);
thread.msleep(100);
system.runScript("Gameplay");
break;
case 3:
tag.write("sleepTime", 500);
tag.write("default_sleep", 500);
page.open("Gameplay");
tag.write("Game ON", 1);
thread.msleep(100);
system.runScript("Gameplay");
break;
}
다음 스크립트는 Hard_Selection 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
tag.write("difficulty", 3); // 난이도를 Hard 로 설정
thread.msleep(100);
system.runScript("Difficulty");
다음 스크립트는 Med_Selection 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
tag.write("difficulty", 2);// 난이도를 Medium으로 설정
thread.msleep(100);
system.runScript("Difficulty");
다음 스크립트는 Easy_Selection 이라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
tag.write("difficulty", 1); //난이도를 Easy로 설정
thread.msleep(100);
system.runScript("Difficulty");
마지막으로 생성할 스크립트는 Return Main Menu 라는 이름으로 만든 뒤 다음 내용을 복사 및 붙여넣기 합니다.
page.open("Main Menu");
thread.msleep(100);
tag.write("Game ON", 0);
thread.msleep(100);
tag.write("Points", 0);
tag.write("level", 1);
thread.msleep(100);
- 이제 생성된 스크립트를 오브젝트 동작에 지정하는 작업을 진행합니다. 모두 누를 때 동작으로 지정하며, 다음과 같이 설정합니다.
오브젝트: “Start Game” 스크립트: Start Game
오브젝트: “Exit Program” 스크립트: Exit Game
오브젝트: “Easy” 스크립트: Easy_selection
오브젝트: “Medium” 스크립트: Med_selection
오브젝트: “Hard” 스크립트: Hard_selection
오브젝트: 사각형 오브젝트 스크립트: Point
오브젝트: “Exit” 스크립트: Return to Main Menu
런타임 스크립트
- 도구 > 시뮬레이터 실행을 클릭하여 시뮬레이터를 실행합니다.
- Start Game! 을 클릭합니다. 난이도 설정 화면이 표시되면 아무 난이도나 선택하여 다음 단계로 진행합니다. Gameplay 페이지가 화면에 표시됩니다.
- 사각형이 녹색이 되면 클릭합니다. 녹색일 때 클릭하면 점수가 1점 증가하며, 또한 점수가 증가하면서 sleepTime의 값이 함께 줄어듭니다. 종료하고 싶을 때 Exit 버튼을 누릅니다.
- 다시 게임을 시작하려면 Start Game을 클릭하고 다시 난이도를 선택합니다. 게임을 완전히 종료하려면 Exit Program을 클릭합니다.