Naver Perl Community & Study Cafe


2008.12.11 11:06

Goo::Canvas


얼마전 cpan에서 테트리스게임을 구현한 코드를 발견하였다.

yewenbin이란 중국사람이 만들었는데 멋지다.



소스 코드를 다운받아서 분석하던 중 ( perl은 소스코드를 바로 확인할 수 있어 좋은듯 )

Goo::Canvas 라는 모듈을 발견하고 이게 뭘까?? cpan에서 검색해 보았다.

Goo::Canvas

Perl interface to the GooCanvas
Goo-Canvas-0.05 - 29 Mar 2008 - 叶文彬 


오옷!! Gtk+ 를 사용하여 자동으로 그림을 그려주는 모듈인데

재밌는 기능이 많은듯 +_+ 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my $canvas = Goo::Canvas->new();
$canvas->set_size_request(450, 280); #Windows 크기와 동일하게 지정
$canvas->set_bounds(0, 0, 450, 280); #출력범위 설정

my $root = $canvas->get_root_item();
my $rect = Goo::Canvas::Rect->new(
$root, 20, 20, 180, 180, #처음 x(가로 좌표) , 처음 y (세로자표) , 가로넓이 , 세로 넓이 
        'line-width' => 2, # 테두리 두께
        'radius-x' => 0, #끝을 뭉퉁하게~
        'radius-y' => 0,
        'stroke-color' => 'blue', #테두리 색
        'fill-color' => 'skyblue' # rect를  채울 색 
);
rect->signal_connect('button-press-event', # 버튼이 눌러졌을때 이벤트
                          \&on_rect_button_press);


4각의 틀을 그려주고 그 틀에 이벤트를 넣는것,

글자 출력 및 회전(rotate) 기능까지 있어

yewenbin이 테트리스 및 지뢰찾기까지 

이 모듈을 사용하여 구현한 것을 확인 할 수 있었다.



테스트를 코드를 작성하던 중

좀 재밌게 응용할 수 없을까? 해서 

사각틀을 클릭하면 문자열이 프로펠러처럼

슝슝~ 돌아가는 프로그램을 작성해 보았다.

Glib::Timeout을 사용하면 알아서 작동을 후욱후욱...



신고
Trackback 1 Comment 0