묻고답하기


JavaScript에 김별님께서 올리신 소스 입니다.

제가 이걸 홈페이지에 적용하려고 하는데

제로보드 포인트와 연동되게 하고 싶어서 열심히 찾아봤지만

도무지 할 수가 없더라고요ㅠ


퍼즐을 완성하면 포인트를 줄 수 있게 하는 방법을 아신다면 제발 가르쳐 주시기 바랍니다. (꾸벅)

(아, 그리고 제로보드(아웃로그인)이랑 연동 되어서 10포인트 내고 게임 하고 포인트 모자라면 게임을 못하게 할 수 있는 방법이 있다면 그것도...;;;; ㅠㅠ)



하하하ㅠ

아무튼, 언제나 좋은 하루 보내시길 바랍니다 ^^








===== 김별님의 원본 소스 입니다 =============================================================




예전에 자바스크립트 공부하려고 만들어본 게임입니다.
사용법은 상단의 7가지 설정만 맞춰주시면 되구요..
예제 파일은 http://kimstar.pe.kr/home/msn/game/puzzle/jiri_puzzle.htm 에서 확인하세요..


<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>퍼즐</title>
<script language="JavaScript">
<!--
//////////////////////////////////////////////////////////////////////////////
// 출처 : http://kimstar.pe.kr
// 작성자 : kimstar
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
// 사용자 설정
//////////////////////////////////////////////////////////////////////////////
var h_count = 5;                                      // 가로로 쪼갤 갯수
var v_count = 4;                                      // 세로로 쪼갤 갯수
var p_img = "puzzle_copy.jpg";                // 사용할 이미지
var p_width = 455;                                   // 이미지 폭
var p_height = 340;                                  // 이미지 높이
var blank_point = 2;                                 // 상좌:1, 상우:2, 하좌:3, 하우:4

function complete_job() {                        // 끝났을때 할 일
        alert('축하합니다.');
}
//////////////////////////////////////////////////////////////////////////////



var init_x = 0;
var init_y = 0;

var cell_width = eval(p_width / h_count);
var cell_height = eval(p_height / v_count);

var cur_x;
var cur_y;
var shuffle_now = false;

function move_clip(i, j) {
        if (i-1 >= 0 && eval("puzzle_"+(i-1)+"_"+j+".innerHTML") == "") {
                eval("puzzle_"+(i-1)+"_"+j+".innerHTML=puzzle_"+i+"_"+j+".innerHTML");
                eval("puzzle_"+i+"_"+j+".innerHTML=''");
                cur_x = i;
                cur_y = j;
        }

        if (i+1 < v_count && eval("puzzle_"+(i+1)+"_"+j+".innerHTML") == "") {
                eval("puzzle_"+(i+1)+"_"+j+".innerHTML=puzzle_"+i+"_"+j+".innerHTML");
                eval("puzzle_"+i+"_"+j+".innerHTML=''");
                cur_x = i;
                cur_y = j;
        }
        
        if (j-1 >= 0 && eval("puzzle_"+i+"_"+(j-1)+".innerHTML") == "") {
                eval("puzzle_"+i+"_"+(j-1)+".innerHTML=puzzle_"+i+"_"+j+".innerHTML");
                eval("puzzle_"+i+"_"+j+".innerHTML=''");
                cur_x = i;
                cur_y = j;
        }
        
        if (j+1 < h_count && eval("puzzle_"+i+"_"+(j+1)+".innerHTML") == "") {
                eval("puzzle_"+i+"_"+(j+1)+".innerHTML=puzzle_"+i+"_"+j+".innerHTML");
                eval("puzzle_"+i+"_"+j+".innerHTML=''");
                cur_x = i;
                cur_y = j;
        }
        
        if (shuffle_now==false) {complete_check();}
}

function shuffle() {
        shuffle_now = true;
        rnd_x = eval(cur_x + Math.round(Math.random()*2) - 1);
        rnd_y = eval(cur_y + Math.round(Math.random()*2) - 1);

        if (rnd_x<0) {rnd_x=0;}
        if (rnd_y<0) {rnd_y=0;}
        if (rnd_x>=v_count) {rnd_x=v_count-1;}
        if (rnd_y>=h_count) {rnd_y=h_count-1;}

        move_clip(rnd_x, rnd_y);
}

function shuffle_all() {
        shuffle_rate = h_count*v_count*10;
        for (i=0; i<shuffle_rate; i++) { shuffle(); }
        shuffle_now=false;
}

function complete_check() {
        miss_match = 0;


        for (i=0; i<v_count; i++) {
                for (j=0; j<h_count; j++) {
                        if (eval("clip_"+i+"_"+j+".parentElement.id.toString()") != "puzzle_"+i+"_"+j) {
                                miss_match = miss_match + 1;
                        }
                }
        }

        if (miss_match==1) {
                complete_job();
        }
}

//-->
</script>
</head>
<body>
<table border="1">
    <tr>
        <td>
                        <script language="JavaScript">
                                document.write("<div id='layer1' style='overflow:hidden; width:"+p_width+"px; height:"+p_height+"px; position:relative; left:0px; top:0px;'>");
                                for (i=0; i<v_count; i++) {
                                        for (j=0; j<h_count; j++) {
                                                left_position = j*cell_width;
                                                top_position = i*cell_height;
                                                rel_top_position = (i*cell_height)-(j*cell_height);
                                                rel_top_position = rel_top_position - i*((h_count-1)*cell_height);
                                                rel_top_position = rel_top_position - (i*cell_height);

                                                document.write("<div id='puzzle_"+i+"_"+j+"' style='width:"+cell_width+"px; height:"+cell_height+"px; position:relative; left:"+(left_position + init_x)+"px; top:"+(rel_top_position + init_y)+"px; z-index:1; overflow : hidden;' onmouseover="this.style.cursor='hand'"; onclick='move_clip("+i+", "+j+")'>");
                                                document.write("<img name='clip_"+i+"_"+j+"' src='"+p_img+"' border='0' style='position:relative; left:"+eval(left_position*(-1))+"px; top:"+eval(top_position*(-1))+"px; z-index:1;'>");
                                                document.write("</div>");
                                        }
                                }
                                document.write("</div>");


                                switch(blank_point) {
                                        case 1:
                                                eval("puzzle_0_0.innerHTML = ''");
                                                cur_x = 0;
                                                cur_y = 0;
                                                break;
                                        case 3:
                                                eval("puzzle_"+(i-1)+"_0.innerHTML = ''");
                                                cur_x = v_count - 1;
                                                cur_y = 0;
                                                break;
                                        case 2:
                                                eval("puzzle_0_"+(j-1)+".innerHTML = ''");
                                                cur_x = 0;
                                                cur_y = h_count - 1;
                                                break;
                                        case 4:
                                                eval("puzzle_"+(i-1)+"_"+(j-1)+".innerHTML = ''");
                                                cur_x = v_count - 1;
                                                cur_y = h_count - 1;
                                                break;
                                        default:                                        
                                                eval("puzzle_"+(i-1)+"_"+(j-1)+".innerHTML = ''");
                                                cur_x = v_count - 1;
                                                cur_y = h_count - 1;
                                }
                                document.write("<input type='hidden' name='clip_"+cur_x+"_"+cur_y+"'>");
                        </script>
        </td>
        <td>
                        <img src="puzzle_copy.jpg" width="455" height="340" border="0">            
        </td>
    </tr>
</table>
<br>
<input type=button value="섞기" onclick="shuffle_all()">
</body>

</html>
글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
데빌소년 이미지 이름 질문입니다! [2] 2014.02.05 by 데빌소년
BonaSera 게시판에 카테고리를 만개 이상 넣었더니 페이지 로딩이 너무 느립니다. 어떻게 하면 좋을까요? [13] 2020.03.14 by BonaSera
socialskyo 1.7.4 스팸 일괄 삭제 기능 어디서 어떻게 하는 건ㄱ [5] 2014.02.05 by 이즈야
김잉깡1 홈페이지에 파일 업로드가 엄청나게 느리네요. [1] 2014.02.05 by 銀童
미르르 포인트랭킹스킨 닉네임 일부숨기려면..  
qwew1 홈화면에서 로그인 펼쳐지는것이 동영상 뒤로나옵니다 file  
심심하루 모바일에서 메뉴를 누르면 왜 안뜰까요??.. [1] 2014.02.05 by 외인
날라리1234 1.7.4 업데이트 이후 문제.  
착한악마 게시판 본문을 선택해서 넣는 방법?? [4] 2014.02.05 by 착한악마
처리낭군 prettyphoto 애드온 익스에선 엑박이 종종 뜨는거 해결 방법 있나요? [2] 2014.02.05 by nado0124
모르게떠염 윈도우 팝업창 가운데 정렬하는 방법  
헤르만 신규도메인 개설후 쉬운설치가 안됩니다 file  
루팡쿠팡 anonymouse.org 차단하는방법좀 알려주세요..ㅠㅠ  
라피에르 1.7.4 이후 스케치북 게시판 모바일 환경에서 댓글이 안달립니다.  
모찌모찌 1.5.4→1.7.3 코어 업데이트에 대해 질문드립니다 [2] file 2014.02.06 by 다람군
지원필요 코어업뎃되면서 추천 비새로고침이 안먹힙니다..  
차윰 홈페이지 상단에 경고문 [7] 2014.02.05 by 차윰
제스제스 page 모듈 제목 관련 [2] 2014.02.05 by ForHanbi
손주사랑 레이아웃 질문드림니다 [1] 2014.02.05 by ForHanbi
처리낭군 1.7.4 업데이트 후에 모바일에서만 썸네일이 나오지 않습니다.  
영흥도우럭 미스테리한 회원가입 문구 [5] file 2014.02.05 by 야옹이님
anais616 php editor [1] 2014.02.05 by 야옹이님
Hyungs msg_make_directory_failed 에러 문제가 있습니다.  
anais616 http 없이 웹주소 입력하기 [2] 2014.02.05 by 야옹이님
라피에르 프로필 이미지 랜덤으로 지정할 수 있나요? [2] file 2014.02.05 by natura
kakuri 게시판에 글쓰기가 안됩니다. 도움부탁드립니다. [5] file 2014.02.05 by 푸시아
BonaSera [짧은 주소]" http://도메인/번호 " 로 접속시 상위 모듈 이름이 나오지 않게 하고 싶습니다.  
dhchoi 외부페이지에서 영어/중국어/일본어등 각기 다른 파일을 볼러 올 수 있나요?  
meetata 1.7.4 업데이트 후 모바일이 전반적으로 문제인가봐요...  
보라돌이이 안녕하세요. 제로보드 새내기 입니다....ㅠ_ㅠ도와주세요 file