javascript 팁이 있는 곳입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 109

0

조회 수 : 8070 신고 : 0

작성자 : 이병준
포인트 : 0 | 레벨 : 0
미리보기 :  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
 <meta http-equiv="content-type" content="text/html; charset=ecukr">
  <TITLE>지렁이게임</TITLE>
    <style>
    .block {width:25px;height:25px;border:solid 3;border-color:#999999;border-top-color:#ffffff;border-left-color:#ffffff}
    .onblock {width:25px;height:25px;border:solid 2;border-color:#CC0000;background-color:red;}
    .hblock{width:25px;height:25px;border:solid 2;border-color:#0033CC;background-color:blue;}
    .nblock{width:25px;height:25px;border:solid 2;border-color:#339900;background-color:#33CC33;}
    .xblock{width:25px;height:25px;border:solid 2;border-color:#000000;background-color:#000000;}
    </style>
    <script>
    //////////////////////////////////////////////////////
    // 만든이 : 리트쿠우(LitQoo) / 김현수
    // 홈페이지 : hsdooki.namoweb.net / litqoo.tistory.com
    // 이메일 : hsdooki@dreamwiz.com
    //////////////////////////////////////////////////////

        var set_row=10;
        var set_col=10;
        var direction="t";
        var sn = new Array();
        var newblock = new snake(0,0);
        var cnt = 0;
        var timerid=0;
        var set_xblock=0;
        var ticker=0;

        
        //구조체
        function snake(x,y,st){
            this.x=x;
            this.y=y;
            this.st=st;
        }

        //랜덤함수
        function snake_rand(max){
            rand=0;
            while(rand==0)rand=(Math.floor(Math.random()*max));
            return rand;
        }

        //새꼬리 만드기
        function make_new(){
            while(1){
                x=snake_rand(set_col+1);
                y=snake_rand(set_row+1);
                tempname = eval("game.block_"+x+"_"+y+"");
                if(tempname.className=="block"){
                    tempname.className="nblock";
                    break;
                }
            }
            newblock.x = x;
            newblock.y = y;
        }

        //블럭디스플레이
        function display(s,st){
            tempname = eval("game.block_"+s.x+"_"+s.y+"");
            tempname.className = st;
        }

        //타이머
        function game_timer(){
            
            ticker++;
            
            //꼬리옮기기
            if(cnt>=1){
                display(sn[cnt],"block");
                for (i=cnt;i>=1;i--)
                {    
                    sn[i].x = sn[i-1].x;
                    sn[i].y = sn[i-1].y;                
                    display(sn[i],"onblock");
                }
            }

            //머리옮기기
            if(direction=="t")sn[0].y--;
            if(direction=="b")sn[0].y++;
            if(direction=="l")sn[0].x--;
            if(direction=="r")sn[0].x++;
            
            //끝났는지 범위 검사
            if(sn[0].x<=0 || sn[0].y<=0 || sn[0].y>set_row || sn[0].x>set_col){game_end(); return false;}
            tempname = eval("game.block_"+sn[0].x+"_"+sn[0].y+"");
            
            //새블럭먹었을경우 꼬리 늘이고 새블럭
            if(tempname.className=="nblock"){
                cnt++;
                sn[cnt] = new snake(sn[cnt-1].x,sn[cnt-1].y);
                display(sn[cnt],"onblock");
                make_new();

            //끝났는지 블럭검사
            }else if(tempname.className!="block"){
                game_end(); return false;
            }
            
            //포인트계산
            game.gp.value=cnt*10+set_xblock*100+ticker;

            //머리블럭 나타내기
            display(sn[0],"hblock");
            
            //속력계산
            turm = 800-cnt*20;
            if(turm<200)turm=200;
            game.speed.value = turm;
            timerid=setTimeout("game_timer()",turm);
        }

        //그리기
        function make_map(){
            temp="";
            for(y=1;y<=set_row;y++){
                for(x=1;x<=set_col;x++){
                    temp+=("<input type=button name='block_"+x+"_"+y+"' class='block'>");
                }
                temp+=("<br>");
            }
            return temp;
        }
        
        //방향설정
        function game_key(event){
            if(event.keyCode==37)direction="l";
            if(event.keyCode==38)direction="t";
            if(event.keyCode==39)direction="r";
            if(event.keyCode==40)direction="b";
        }
    
        //게임시작, 초기화
        function game_start(){
            set_col = game.game_col.value*1;
            set_row = game.game_row.value*1;
            set_xblock = game.game_xblock.value*1;
            ticker=0;
            newblock.x=0;
            newblock.y=0;
            sn[0]=new snake(5,5);
            sn[1]=new snake(5,6);
            cnt = 1;
            //그리기
            map = make_map();
            document.getElementById("game_div").innerHTML=map;
            game_timer();
            make_new();
            make_xblock();
        }

        //장애물 생성
        function make_xblock(){
            check=1;
            while(set_xblock>=check){
                x=snake_rand(set_col-1)+1;
                y=snake_rand(set_row-1)+1;
                xbox=new snake(x,y);
                tempname = eval("game.block_"+x+"_"+y+"");
                if(tempname.className=="block"){
                    display(xbox,"xblock");
                    check++;
                }
            }
        }

        //게임끝
        function game_end(){
            game.gdata.value="가로:"+game.game_col.value+",세로:"+game.game_row.value+",장애물:"+game.game_xblock.value+",꼬리:"+cnt+",시간:"+ticker;
            clearTimeout(timerid);        
            alert("게임끝");
        }

    </script>
 </HEAD>
 <BODY onload="" onkeydown="game_key(event)">
 

 <form name=game method="post">
<INPUT TYPE="hidden" NAME="gid" value="snake">
<input type="hidden" name="gdata" value="">
<input type="hidden" name="gpoint" value="">

 <TABLE border=1 align=center>
 <TR>
    <TD> 가로<input name=game_row value=10 size=3>
            세로<input name=game_col value=10 size=3>
            장애물<input name=game_xblock value=5 size=3><INPUT TYPE="button" VALUE="게임시작" ONCLICK="game_start()"></TD>
 </TR>
 <TR>
        <TD align=center>    
            <div id="game_div">        
            <script>
            for(y=1;y<=set_row;y++){
                for(x=1;x<=set_col;x++){
                    document.write("<input type=button name='block_"+x+"_"+y+"' class='block'>");
                }
                document.write("<br>");
            }
            </script>
            </div>
        </TD>
 </TR>
 <TR>
    <TD align=center>점수<input name=gp value=0 size=3 readonly> 속도<input name=speed value=0 size=3 readonly> </TD>
 </TR>
 </TABLE>
 </form>
 </BODY>
</HTML>

소스를 다듬을 필요가 있을것 같은데 영 귀찮네요...
그나저나 링크엔 점수를 등록하여 랭킹을 표시할수있게 해놨는데
이걸 계속 뚫으시는 분들이 있네요. 이런 개구쟁이들 같으니..
당췌 이걸 어떻게 막아야 할지..
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 BEST 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기 본문으로 바로가기
  • 추천수 50개이상
  • 추천수 30개이상
  • 추천수 20개이상
  • 추천수 10개이상
  • 추천수 3개이상
닫기

첫번째 댓글을 남겨주세요!

List of Articles
번호 제목 글쓴이 날짜 추천 수sort 조회 수
89 골때리는 자바스크립트 세계 3탄. 이병준 2010-05-28   7585
88 골때리는 자바스크립트 4탄!!! 이병준 2010-05-28   6598
87 골때리는 자바스크립트 5탄!!! 이병준 2010-05-28   6621
86 골때리는 자바스크립트의 세계 7탄! 이병준 2010-05-28   6931
85 골때리는 자바스크립트의 세계 8탄! 이병준 2010-05-28   6974
84 골때리는 자바스크립트의 세계 9탄! 이병준 2010-05-28   6829
83 골때리는 자바스크립트 번외편!!! 이병준 2010-05-28   7565
82 이미지 클릭시 최적사이즈로 팝업 열리게 하는 스크립트 늘푸른 2010-07-24   8139
81 스위칭 하는 자바스크립트.. 늘푸른 2010-07-24   6899
80 아이폰으로 접속했을떄 특정 페이지로 이동시키는 자바스크립트 주영아빠 2010-10-26   7195
79 롤링 자동 스크립트 웹기프트 2010-11-13   9125
78 이미지에 마우스 올리면... 이미지가 상하로 살짝쌀짝 웹기프트 2010-11-13   7004
77 새로고침할때마다 바뀌는 랜덤배너 소스 title: [ani]깜빡이는 표정빽짱구 2011-07-21   8495
76 오늘날짜 스크립트 title: [ani]깜빡이는 표정빽짱구 2011-10-27   6633
75 모바일 페이지 코딩시 주소창 사라지는 방법 title: [ani]깜빡이는 표정빽짱구 2012-10-12   6234
74 생활코딩이라는 사이트입니다. [3] title: [ani]깜빡이는 표정빽짱구 2014-05-14   2479
73 hit 버튼클릭시 레이어창 띄우기 [1] title: [ani]깜빡이는 표정빽짱구 2008-06-19 1 16593
72 hit [Javascript]버튼클릭시 레이어창 띄우기 file [4] title: [ani]깜빡이는 표정빽짱구 2008-11-13 1 18717
71 '베너가져가기' 클릭 시 "소스"가 복사되는 스크립트 정천 2010-03-05 1 8671
70 클릭시 내용보여주고 숨기기 [1] title: [ani]방울UI 2013-06-25 1 5085