BLOG ARTICLE University of Kent | 1 ARTICLE FOUND

  1. 2007.12.23 Java 교육용 프로그램 Greenfoot

Greenfoot은 영국의 Kent 대학에서 쉽게 에니메이션이나 게임을 만들 수 있도록 해주는 Java를 기반으로 한 통합개발툴(IDE)입니다. Java로 만들어졌으므로 윈도우, 맥, 리눅스등 대부분의 환경에서 사용이 가능합니다.

1. 설치

설치는 매우 간단하며 우선 JDK가 설치되어 있어야 합니다. OS가 윈도우일 경우에는 JDK가 설치되어 있지 않으면 다운로드 받고 설치합니다. (맥은 설치되어 있습니다.)

 JDK 설치를 확인하고  greenfoot 사이트 다운로드 페이지에서 사용하는 OS별로 설치파일을 다운로드 받습니다. 맥에서는 압축파일만 풀면됩니다. (윈도우는 설치 파일을 실행합니다.)


2. 실행

greenfoot를 실행합니다. 메뉴에서 Scenario/New를 선택합니다. 상단의 File 입력창에 시나리오명을 입력하고 하단의 [Creat]버튼을 클릭 합니다. 저는 Test로 하였습니다. 아래와 같이 Greenfoot가 실행된 모습을 보실 수 있습니다.

사용자 삽입 이미지

1) 기본 클래스
기본으로 World와 Actor 클래스가 생성되어 있습니다. 두 클래스 모두 추상(abstract) 클래스이므로 바로 사용하실 수는 없습니다. greenfoot는 4개의 클래스로 이루어져 있습니다.

> Greenfoot
전반적인 시스템을 관리하는 클래스입니다. 사용자 입력, 속도, 효과음 출력, 시작, 중지 등에 관련된 메소드를 가지고 있습니다.

> GreenfootImage
화면출력을 담당하는 클래스입니다. 이미지/벡터 및 문자열 출력과 속성에 관한 메소드를 가지고 있습니다.

> World
스테이지(배경)를 관리하는 클래스입니다. 오브젝트 추가/삭제, 배경 및 타일 출력에 관한 메소드를 가지고 있습니다.

> Actor
World 에서 출력되는 오브젝트 클래스입니다. 오브젝트의 움직임과 속성에 관한 메소드를 가지고 있습니다.


2) Object 생성
사용자 삽입 이미지
먼저 World를 생성합니다. 좌측과 같이 World를 우클릭하여 나오는 메뉴에서 New subclass...를 클릭합니다.

클래스 이름을 MyWorld로 입력하고 [Ok] 버튼을 클릭합니다.



생성된 MyWorld를 다시 우클릭 하여 Set image... 를 클릭하여 backgrounds에서 적당한 이미지를 선택합니다.

그 밑의 Actor를 우클릭 하여 다시 New subclass...를 선택합니다. 저는 아래와 같이 클래스 이름을 Tux로 입력하고 리눅스의 마스코트인 tux.png이미지를 선택하였습니다. 각자 취향에 맞는 클래스명과 이미지를 선택한 후 [Ok] 버튼을 클릭합니다.

사용자 삽입 이미지

아래와 같이 MyWorld와 Tux가 생성된 것을 확인합니다.

사용자 삽입 이미지


3. 소스코드 편집

1) Tux class
Tux를 더블클릭하여 소스 에디터를 오픈하여 아래의 내용을 추가로 입력합니다.

import greenfoot.*;  // (World, Actor, GreenfootImage, and Greenfoot)

/**
 * Write a description of class Tux here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Tux extends Actor
{
    private int speed = 2;
    /**
     * Act - do whatever the Tux wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */

    public void act()
    {
        // Add your action code here.
        int xpos = getX();
        int ypos = getY();
       
        if(Greenfoot.isKeyDown("up")) {
            setRotation(0);
            ypos -= speed;
        }       
        if(Greenfoot.isKeyDown("down")) {
            setRotation(180);
            ypos += speed;
        }
        if(Greenfoot.isKeyDown("left")) {
            setRotation(270);
            xpos -= speed;
        }
        if(Greenfoot.isKeyDown("right")) {
            setRotation(90);
            xpos += speed;
        }
        setLocation(xpos, ypos);
    }   
}

짐작하시는 바와 같이 키를 누르면 이미지를 방향에 맞게 회전시켜 전진하게 합니다. greenfoot에서는 범위를 넘어가면 자동으로 좌표가 조절되기 때문에 범위 체크를 하지 않았습니다.

2) MyWorld class
이제 MyWorld를 더블클릭하여 에디터를 오픈하여 아래와 같이 변경합니다.

import greenfoot.*;  // (World, Actor, GreenfootImage, and Greenfoot)

/**
 * Write a description of class MyWorld here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class MyWorld extends World
{

    /**
     * Constructor for objects of class MyWorld.
     *
     */
    public MyWorld()
    {   
        // Create a new world with 20x20 cells with a cell size of 10x10 pixels.
        super(40, 40, 10); // 스테이지 크기 변경
       
        addObject(new Tux(), 20, 20); // 오브젝트 등록
       
        // Put in your own background image by replacing "greenfoot.png" with the
        // image that should be used as background and uncommenting the line below.
       
        //setBackground("greenfoot.png");
    }
}

Tux를 우클릭하여 new Tux()를 선택하여 스테이지로 가져올 수 있지만, 실행 시에 항상 나타나게 하기위해 addObject 메소드로 World에 추가합니다. 이제 하단의 [Complie all]을 클릭하여 컴파일 후 [> run] 버튼을 클릭하여 테스트를 해봅니다.

3) 확인
아래와 같이 방향키에 따라 Tux가 움직이는 모습을 보실 수 있습니다. (greenfoot에 관해 자세한 사항은 Greenfoot 홈페이지에서 메뉴얼과 다양한 시나리오를 다운 받으실 수 있습니다.)

사용자 삽입 이미지
홈페이지에서 소개를 보면 고등학교 이하의 학생들의 교육을 위한 툴이라고 되어 있습니다. 프로그래밍 또는 Java를 처음 시작하는 학생들을 위해 딱딱하지 않고, 쉽게 흥미를 갖고 배울 수 있게 해 줄 것 같습니다.

Kent대학에서 만들어진 또다른 유사품으로 BlueJ가 있습니다. 이는 Java를 이용해 OOP를  가르치기 위한 툴도 있으니 흥미있는 분들은 홈페이지에서 확인해 보세요.

'개발 툴' 카테고리의 다른 글

적당히 참견하는 Xcode  (4) 2008.02.25
OS X의 파이썬  (0) 2008.02.20
Java 교육용 프로그램 Greenfoot  (0) 2007.12.23
Xcode에서 Flex - Hello World 작성  (0) 2007.12.12
Adobe Flex Builder를 딱 한번 써보고...  (8) 2007.12.03
구글 Android 개발환경 둘러 보기  (8) 2007.11.14