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
109 모바일 접속시 특정 페이지로 이동 title: [ani]깜빡이는 표정빽짱구 2018-10-21   372
108 생활코딩이라는 사이트입니다. [3] title: [ani]깜빡이는 표정빽짱구 2014-05-14   2484
107 상태표시줄을 바꿔보자6 (시간넣기) title: [ani]깜빡이는 표정빽짱구 2004-02-07 12 4692
106 손님이 원하는색을 입력받아 배경화면으로 적용하기! title: [ani]깜빡이는 표정빽짱구 2004-02-29 19 4744
105 best of best 상태표시줄 바꿔보자2 title: [ani]깜빡이는 표정빽짱구 2004-02-07 20 4779
104 상태표시줄을 바꿔보자5 (마퀴형식) title: [ani]깜빡이는 표정빽짱구 2004-02-07 14 4790
103 상태표시줄 바꿔보자4 (소문자가 대문자로) [1] title: [ani]깜빡이는 표정빽짱구 2004-02-07 13 4916
102 렌덤배경 이미지 title: [ani]깜빡이는 표정빽짱구 2004-02-22 13 4921
101 best of best 메트릭스 효과 문자 title: [ani]깜빡이는 표정빽짱구 2004-04-21 22 4921
100 오른쪽 마우스 클릭시 즐겨찾기 나오기 title: [ani]깜빡이는 표정빽짱구 2004-04-07 13 4975
99 best of best 출렁거리며 내려오는 공지창 title: [ani]깜빡이는 표정빽짱구 2004-04-19 20 5014
98 속보용 알림장 [1] title: [ani]깜빡이는 표정빽짱구 2004-04-08 17 5064
97 클릭시 내용보여주고 숨기기 [1] title: [ani]방울UI 2013-06-25 1 5089
96 아이프레임시 스크롤바 길게 늘어나기. [2] title: [ani]깜빡이는 표정빽짱구 2004-02-11 10 5096
95 따라다니는 메뉴 끄기기능까지 title: [ani]깜빡이는 표정빽짱구 2004-04-05 16 5264
94 창의크기를 자연스럽게 조절하자 title: [ani]깜빡이는 표정빽짱구 2006-01-07 3 5316
93 떨어지는 낙역또는 눈 title: [ani]깜빡이는 표정빽짱구 2005-11-28 17 5454
92 마우스 따라다니는 아날로그 시계 title: [ani]깜빡이는 표정빽짱구 2004-02-29 10 5463
91 상태표시줄 한글자씩 나타내기 title: [ani]깜빡이는 표정빽짱구 2004-04-21 10 5468
90 마우스 오른쪽 단추클릭시 경고창 띠우기 title: [ani]깜빡이는 표정빽짱구 2004-04-05 11 5473