어느 사이트에서 플래시 테트리스(tetris) 게임 소스 길이를 줄이려는 노력을 하고 있더군요. 아래는 965 바이트 용량의 테트리스 게임 소스입니다. 자신만의 테트리스 게임을 만들어보고 싶은 분들은 소스를 실행해보시고 수정하시다보면 작품 하나 만드실 수 있을듯 합니다. 새 플래시 도큐먼트를 만드시고 액션창에 소스를 붙여 넣기 하신 후 [CTRL]+[ENTER]키를 누르시면 실행화면을 감상할 수 있습니다. 플래시를 잘모르시는 초보 여러분들을 위해 별도로 tetris.fla 파일을 첨부하겠습니다. 플래시(flash)에 흥미가 생긴 분들이 있다면 제가 운영하는 플래시 카페(http://flashcafe.org) 도 많이 애용해주세요. 그리고 다른 플래시 게임 자료가 필요하신 분들은 여기(http://www.hompydesign.com/club/flash_movie.php?menu0=Games) 에서 찾아보세요.
* 참고 : 자작게임중 한자게임(http://hompy.info/6)도 있는데 가장 방문자가 많고 반응도 좋은 포스팅이에요.

웹프로그래머의 홈페이지정보 블로그 http://hompy.info/

[Flash] http://hompy.info/attachment/1171130202.swf



//--- Mini Game 1Kb by Strille. Version 1.5, 965 bytes
//--- Paste this code on frame 1, set scene size to 240x360, frame rate to 18 and Flash version to 7
//--- The code is not written with speed in mind, only small .swf size

createTextField("t", 1, 0, 300, 239, 24);
function c(a, b, g, h) {
        for (x=0; x<16; x++) {
                if (s[x] & 1 << g) {
                        if (q == 300) {
                                m[a+(x%4)+(b+(x>>2))*15] = -h;
                                continue;
                        }
                        if (m[a+(x%4)+(b+(x>>2))*15]>0 or b+(x>>2)>19 or a+(x%4)<0 or a+(x%4)>9)
                                return 1;
                        if (q < -1) {
                                m[a+(x%4)+(b+(x>>2))*15] = h;
                                if (b+(x>>2)<0) {
                                        delete onEnterFrame;
                                        t.text = z + "\tPress a key";
                                }
                        }
                }
        }
}
t.onKeyDown = function() {
        q = Key.getCode();
        if (!onEnterFrame) {
                w = z = 0;
                s = [4325376,178954464,8653312,null,89458032,268435455,89520863,
                83886080,2183168,178937791,1615119,null,null,167772160];
                m = [];
                i = random(28);
                d = random(16777215);
                v = -(u=3);
                onEnterFrame = function () {
                        t.text = z;
                        if (q == 37) {
                                u--;
                                if (c(u, v, i, d))
                                        u++;
                        }
                        if (q == 38) {
                                q = i++;
                                if (!(i%4))
                                        i -= 4;
                                if (c(u, v, i, d))
                                        i = q;
                        }
                        if (q == 39) {
                                u++;
                                if (c(u, v, i, d))
                                        u--;
                        }
                        q = 300;
                        c(11, 3, d%28, 0xeeeeee);
                        c(u, v, i, d);
                        clear(); beginFill(0xeeeeee); lineStyle(0); lineTo(151, 0);
                        lineTo(151, 301); lineTo(0, 301); endFill(); lineStyle(2);
                        while (q--) {
                                if (m[q]) {
                                        beginFill(m[q]);
                                        if (m[q]<0) {
                                                beginFill(-m[q]);
                                                delete m[q];
                                        }
                                        moveTo(1+(q%15)*15, 1+int(q/15)*15); lineTo(15+1+(q%15)*15, 1+int(q/15)*15);
                                        lineTo(15+1+(q%15)*15, 15+1+int(q/15)*15); lineTo(1+(q%15)*15, 15+1+int(q/15)*15); endFill();
                                }
                        }
                        if (!(w++%(3-2*Key.isDown(40)))) {
                                v++;
                                if (c(u, v, i, d)) {
                                        v--;
                                        q--;
                                        c(u, v, i, d);
                                        for (i=0; i<20; i++) {
                                                for (x=0; m[x+i*15];x++) {}
                                                if (x == 10) {
                                                        m.splice(i*15, 15);
                                                        m.unshift(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
                                                        z += x;
                                                }
                                        }
                                        i = d%28;
                                        d = random(16777215);
                                        v = -(u=3);
                                }
                        }
                };
        }
};
t.onKeyDown();
Key.addListener(t);

//--- 출처: http://www.strille.net/works/tetris_1Kb/

트랙백 주소 :: http://hompy.info/trackback/89

댓글을 달아 주세요

  1. 추릿 2011/06/22 19:31  댓글주소  수정/삭제  댓글쓰기

    as3버전 소스는 못구할려낭..

  2. SI 2009/04/25 16:42  댓글주소  수정/삭제  댓글쓰기

    .. 소스 퍼갈께요 ㅇㅅㅇ.. 보고 공부해야겠다 ㅇㅅㅇ.

  3. dqqqq 2009/02/20 20:03  댓글주소  수정/삭제  댓글쓰기

    키보드랑 같이 위아래로 움직임 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

  4. ... 2009/02/20 14:30  댓글주소  수정/삭제  댓글쓰기

    이거 진짜 문제가...키보드 키가 안돼는...

  5. Jin;Aqua 2007/05/31 06:57  댓글주소  수정/삭제  댓글쓰기

    이거 좀 문제 있는것 같은데요. 키보드 누르다보면 좌우와 위아래 바가 같이 움직입니다.

    • 웹프로그래머 2007/05/31 08:49  댓글주소  수정/삭제

      게시물 하단에 출처가 있으니 찾아가서 문의해 보세요. 또는 문제점에 대한 해결책을 직접 찾아보시면 좋은 공부가 될겁니다.