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 조회 수
69 hit 깔끔한 공지창 title: [ani]깜빡이는 표정빽짱구 2006-03-06 2 51884
68 창의크기를 자연스럽게 조절하자 title: [ani]깜빡이는 표정빽짱구 2006-01-07 3 5316
67 hit index 페이지에 다른문서 불러오기? title: [ani]깜빡이는 표정빽짱구 2006-03-09 4 10276
66 hit 여러 방법의 팝업창 소스 [6] title: [ani]깜빡이는 표정빽짱구 2008-02-27 4 66895
65 잘못된 연산창 띄우기 title: [ani]깜빡이는 표정빽짱구 2005-11-28 5 5986
64 해상도가 틀리면 접속못하게 하는 소스 title: [ani]깜빡이는 표정빽짱구 2006-03-06 5 6850
63 외부에서 자바스크립 js 파일 불러들이기 title: [ani]깜빡이는 표정빽짱구 2005-12-21 6 6772
62 빈링크 #로 링크걸지 않고 다른방법으로 하기 [3] title: [ani]깜빡이는 표정빽짱구 2006-02-23 6 8014
61 hit 팝업창 관련 속성들 title: [ani]깜빡이는 표정빽짱구 2006-02-07 7 11461
60 hit 클릭시 시작페이지로 설정하기 title: [ani]깜빡이는 표정빽짱구 2006-03-28 7 12989
59 하루동안 팝업창 띄우지 않기 title: [ani]깜빡이는 표정빽짱구 2005-02-23 8 9485
58 여러가지 형태로 경고창을 띄워보자 title: [ani]깜빡이는 표정빽짱구 2005-11-28 8 6424
57 양쪽으로 새창띄우기 title: [ani]깜빡이는 표정빽짱구 2005-11-28 8 6139
56 hit 팝업 띄우기 (SP2에서도) title: [ani]깜빡이는 표정빽짱구 2005-03-08 9 11288
55 아이프레임시 스크롤바 길게 늘어나기. [2] title: [ani]깜빡이는 표정빽짱구 2004-02-11 10 5096
54 마우스 따라다니는 아날로그 시계 title: [ani]깜빡이는 표정빽짱구 2004-02-29 10 5463
53 제홈에 쓰인 마우스 오른쪽 금지태그 title: [ani]깜빡이는 표정빽짱구 2004-03-31 10 8958
52 상태표시줄 한글자씩 나타내기 title: [ani]깜빡이는 표정빽짱구 2004-04-21 10 5468
51 선택복사하기 title: [ani]깜빡이는 표정빽짱구 2004-04-22 10 5857
50 해당셀로 따라다니는 화살표 title: [ani]깜빡이는 표정빽짱구 2005-12-04 10 6278