프로그래밍 TIP/JAVASCRIPT

[JAVASCRIPT] 사랑 가능성 테스트 최종본

여름나라겨울이야기 2013. 5. 25. 02:45
728x90
이름으로 알아보는 그 사람과 나의 미래 예측

가능성 테스트 결과

내역 보기
첫번째 문자/획수 두번째 문자/획수 세번째 문자/획수
본인의 이름
획수
상대의 이름
획수
획수의 합




소스는 아래와 같습니다

==========================================================================

<html lang="ko">
<head>
<meta charset="utf-8">
<title> 사랑 가능성 테스트 </title>
<style>
body {
    font: normal 11px auto 굴림체, 바탕체, 고딕;
    color: #4f6b72;
    background: #E6EAE9;
}

a {
    color: #c75f3e;
}

caption {
    padding: 0 0 5px 0;
    width: 700px;     
    font: italic 11px 굴림체, 바탕체, 고딕;
    text-align: right;
}

th {
    font: bold 11px 굴림체, 바탕체, 고딕;
    color: #4f6b72;
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    border-top: 1px solid #C1DAD7;
    letter-spacing: 2px;
    text-transform: uppercase;
    text-align: left;
    padding: 6px 6px 6px 12px;
}

th.nobg {
    border-top: 0;
    border-left: 0;
    border-right: 1px solid #C1DAD7;
    background: none;
}

td {
    font: 11px 굴림체, 바탕체, 고딕;
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    background: #fff;
    padding: 6px 6px 6px 12px;
    color: #4f6b72;
}

td.alt {
    background: #F5FAFA;
    color: #797268;
}

th.spec {
    border-left: 1px solid #C1DAD7;
    border-top: 0;
    background: #fff url(images/bullet1.gif) no-repeat;
    font: bold 10px 굴림체, 바탕체, 고딕;
}

th.specalt {
    border-left: 1px solid #C1DAD7;
    border-top: 0;
    background: #f5fafa url(images/bullet2.gif) no-repeat;
    font: bold 10px 굴림체, 바탕체, 고딕;
    color: #797268;
}
</style>
<SCRIPT LANGUAGE=javascript>
<!--
    // 한글 자모 초성
    var ChoSeong = new Array(
        // Unicode
        new Array (  
            0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139, 0x3141, 0x3142, 0x3143, 0x3145,
            0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e  
        ),
        // 한글 자모
        new Array(
            "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ",
            "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"
        ),
        // 획수
        new Array(
            2, 4, 2, 3, 6, 5, 4, 4, 8, 2,
            4, 1, 3, 6, 4, 4, 4, 4, 3
        )
    );

    // 한글 자모 중성
    var JungSeong = new Array(
        // Unicode
        new Array (  
            0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
            0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162,
            0x3163  
        ),
        // 한글 자모
        new Array(
            "ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ",
            "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ",
            "ㅣ"
        ),
        // 획수
        new Array(
            2, 3, 3, 4, 2, 3, 3, 4, 2, 4,
            5, 3, 3, 2, 4, 5, 3, 3, 1, 2,
            1
        )
    );

    // 한글 자모 종성
    var JongSeong = new Array(
        // Unicode
       new Array (  
            0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3139, 0x313a,
            0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3144, 0x3145,
            0x3146, 0x3147, 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e  
        ),
        // 한글 자모
        new Array(
              "", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ",
            "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ",
            "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"
        ),
        // 획수
        new Array(
            0, 2, 4, 4, 2, 5, 5, 3, 5, 7,
            9, 9, 7, 9, 9, 8, 4, 4, 6, 2,
            4, 1, 3, 4, 3, 3, 4, 3
        )
    );

    var loveProphecy = new Array();

    for(var i = 0; i < 3; i++) {
        loveProphecy[i] = new Array();

        for(var k = 0; k < 3; k++) {
            loveProphecy[i][k] = new Array();
        }
    }

    loveProphecy[0][0][0] = "☆☆☆ - 어쩔수 없이 사귀게 될사이..";
    loveProphecy[0][0][1] = "☆☆♡ - 아름다운 천생연분";
    loveProphecy[0][0][2] = "☆☆□ - 고생끝에 멋찌게..";
    loveProphecy[0][1][0] = "☆♡☆ - 서로 다정하게 지낼수 있는사이";
    loveProphecy[0][1][1] = "☆♡♡ - 열심히 노력해봐 ..";
    loveProphecy[0][1][2] = "☆♡ㅁ - 하늘의 별이 되어줄 남자";
    loveProphecy[0][2][0] = "☆□☆ - 남이 부러워할 정도로 다정한 사이..";
    loveProphecy[0][2][1] = "☆□♡ - 아무리 노력해도 않되는 사이.. 꽝...";
    loveProphecy[0][2][2] = "☆□□ - 아빠와 딸처럼 포근한 사이";
    loveProphecy[1][0][0] = "♡☆☆ - 아주 짧은 사랑][불 같은 사랑";
    loveProphecy[1][0][1] = "♡☆♡ - 장래를 꿈꿔도 될사이..";
    loveProphecy[1][0][2] = "♡☆□ - 첫 끝발이 멍멍이 끝발..";
    loveProphecy[1][1][0] = "♡♡☆ - 초면부터 정이 뚜욱...";
    loveProphecy[1][1][1] = "♡♡♡ - 정말로 사랑하는 사이..";
    loveProphecy[1][1][2] = "♡♡□ - 시작부터 원수..지간..";
    loveProphecy[1][2][0] = "♡□☆ - 남자는 좋아하는데 여자는 별로...";
    loveProphecy[1][2][1] = "♡□♡ - 좋으면서 싫은척..";
    loveProphecy[1][2][2] = "♡ㅁㅁ - 서로를 위하는 천사 커플";
    loveProphecy[2][0][0] = "□☆☆ - 하나도 안어울려";
    loveProphecy[2][0][1] = "□☆♡ - 누가 머래도 친하고 싶은사이..";
    loveProphecy[2][0][2] = "□☆□ - 슬픔의 연속 와장장 깨질 커플";
    loveProphecy[2][1][0] = "□♡☆ - 비온담에 땅이 굳어질사이 절대 포기하지마... ";
    loveProphecy[2][1][1] = "□♡♡ - 천생연분...";
    loveProphecy[2][1][2] = "□♡□ - 잘되다가 깨질사이......";
    loveProphecy[2][2][0] = "□□☆ - 가슴아픈사이..";
    loveProphecy[2][2][1] = "□□♡ - 노력없이도 자연히 이루어질 사이..";
    loveProphecy[2][2][2] = "□□□ - 한쌍의 바퀴벌레...";

    function fnLoveProphecy(firstSum, secondSum, thirdSum) {
        var prophecyNumber1 = fnProphecyNumber(firstSum);
        var prophecyNumber2 = fnProphecyNumber(secondSum);
        var prophecyNumber3 = fnProphecyNumber(thirdSum);
       
        idFirstSum.innerHTML = firstSum;
        idSecondSum.innerHTML = secondSum;
        idThirdSum.innerHTML = thirdSum;
        idProphecyResult.innerHTML = loveProphecy[prophecyNumber1][prophecyNumber2][prophecyNumber3];
    }

    function fnProphecyNumber(sumValue) {
        switch(parseInt(sumValue)) {
            case 3:        case 5:        case 13:    case 14:    case 18:
                return 0; // 별      
            case 1:        case 2:        case 7:        case 8:        case 10:    case 11:    case 15:
                return 1; // 하트       
            case 4:        case 6:        case 9:        case 12:    case 16:    case 17:
                return 2; // 네모
        }
    }

    var hangulToJaso = function (text) 
    { 
        var chars = new Array() 
        var v = new Array(); 
        for (var i = 0; i < text.length; i++)  
        { 
            chars[i] = text.charCodeAt(i); 
            if (chars[i] >= 0xAC00 && chars[i] <= 0xD7A3)  
            { 
                var i1, i2, i3; 
                i3 = chars[i] - 0xAC00; 
                i1 = i3 / (21 * 28); 
                i3 = i3 % (21 * 28); 
                i2 = i3 / 28; 
                i3 = i3 % 28; 
                v.push(String.fromCharCode(ChoSeong[0][parseInt(i1)])); 
                v.push(String.fromCharCode(JungSeong[0][parseInt(i2)])); 
                if (i3 != 0x0000) 
                    v.push(String.fromCharCode(JongSeong[0][parseInt(i3)])); 
            } 
            else { 
                v.push(String.fromCharCode(chars[i] )); 
            } 
        } 
        return v; 
    } 

    function fnJasoStrokeCount(arrJaso, arrStrokeCountOfJaso, jaso) {
        if(chkUndefined(jaso)) {
            return 0;
        }

        for(var i = 0; i < arrJaso.length; i++) {
            if(jaso == arrJaso[i]) {
                return arrStrokeCountOfJaso[i];
            }
        }
    }

    function chkUndefined(arg) {
        return arg == undefined || arg == "" || arg == "null";
    }

    function fnCalculateLoveProphecy() {
        var nameOne = inputNameOne.value;       
        var nameTwo = inputNamTwo.value;       

        var arrNameOne = new Array();
        var arrNameTwo = new Array();

        arrNameOne[0] = hangulToJaso(nameOne.substring(0, 1));
        arrNameOne[1] = hangulToJaso(nameOne.substring(1, 2));
        arrNameOne[2] = hangulToJaso(nameOne.substring(2, 3))

        arrNameTwo[0] = hangulToJaso(nameTwo.substring(0, 1));
        arrNameTwo[1] = hangulToJaso(nameTwo.substring(1, 2));
        arrNameTwo[2] = hangulToJaso(nameTwo.substring(2, 3));

        var firstStrokeCount = fnCharacterStrokeCount(arrNameOne[0]) + fnCharacterStrokeCount(arrNameTwo[0]);
        var secondStrokeCount = fnCharacterStrokeCount(arrNameOne[1]) + fnCharacterStrokeCount(arrNameTwo[1]);
        var thirdStrokeCount = fnCharacterStrokeCount(arrNameOne[2]) + fnCharacterStrokeCount(arrNameTwo[2]);

        // start : 화면 표시
        idNameOneFirst.innerHTML    = nameOne.substring(0, 1);
        idNameOneSecond.innerHTML   = nameOne.substring(1, 2);
        idNameOneThird.innerHTML    = nameOne.substring(2, 3);

        idNameOneFirstStrokeCount.innerHTML    = fnCharacterStrokeCount(arrNameOne[0]);
        idNameOneSecondStrokeCount.innerHTML   = fnCharacterStrokeCount(arrNameOne[1]);
        idNameOneThirdStrokeCount.innerHTML    = fnCharacterStrokeCount(arrNameOne[2]);

        idNameTwoFirst.innerHTML    = nameTwo.substring(0, 1);
        idNameTwoSecond.innerHTML   = nameTwo.substring(1, 2);
        idNameTwoThird.innerHTML    = nameTwo.substring(2, 3);

        idNameTwoFirstStrokeCount.innerHTML    = fnCharacterStrokeCount(arrNameTwo[0]);
        idNameTwoSecondStrokeCount.innerHTML   = fnCharacterStrokeCount(arrNameTwo[1]);
        idNameTwoThirdStrokeCount.innerHTML    = fnCharacterStrokeCount(arrNameTwo[2]);
        // finsh : 화면 표시
       
        fnLoveProphecy(firstStrokeCount, secondStrokeCount, thirdStrokeCount)
    }

    function fnCharacterStrokeCount(source) {
        var strokeCount = 0;

        strokeCount += fnJasoStrokeCount(ChoSeong[1], ChoSeong[2], source[0]);
        strokeCount += fnJasoStrokeCount(JungSeong[1], JungSeong[2], source[1]);
        strokeCount += fnJasoStrokeCount(JongSeong[1], JongSeong[2], source[2]);

        return strokeCount;
    }
//-->
</SCRIPT>
</head>
<body onLoad="inputNameOne.focus();">
<table cellspacing="0" summary="이름으로 알아보는 그 사람과 나의 미래 예측... 재미는 재미일뿐 오해하지 말자..." style="width: 500px;">
<caption>이름으로 알아보는 그 사람과 나의 미래 예측</caption>
<tr>
    <th><label for="inputNameOne">본인의 이름</label></th>
    <td><INPUT type="text" id="inputNameOne" name="inputNameOne" value="로미오" maxLength="3" onfocus="this.select();" style="ime-mode:active;"></td>
</tr>
<tr>
    <th><label for="inputNamTwo">상대의 이름</label></th>
    <td><INPUT type="text" id="inputNamTwo"name="inputNamTwo" value="줄리엣" maxLength="3" onfocus="this.select();" style="ime-mode:active;"></td>
</tr>
<tr>
    <th></th>
    <td style="text-align: right;"><INPUT type="button" value="Click!!!" onClick="fnCalculateLoveProphecy();"></td>
</tr>
</table>

<br/>

<table cellspacing="0" style="width: 500px;">
<tr>
    <th>가능성 테스트 결과</th>
</tr>
<tr>
    <th id="idProphecyResult" style="color: red;"></th>
</tr>
</table>

<br/>

<table cellspacing="0" style="width: 500px;" summary="결과 보기">
<caption>내역 보기</caption>
<tr>
    <th class="nobg"></th>
    <th class="specalt">첫번째 문자/획수</th>
    <th class="specalt">두번째 문자/획수</th>
    <th class="specalt">세번째 문자/획수</th>
</tr>
<tr>
    <th>본인의 이름</th>
    <td id="idNameOneFirst" style="text-align: right;"></td>
    <td id="idNameOneSecond" style="text-align: right;"></td>
    <td id="idNameOneThird" style="text-align: right;"></td>
</tr>
<tr>
    <th>획수</th>
    <td id="idNameOneFirstStrokeCount" style="text-align: right;" class="alt"></td>
    <td id="idNameOneSecondStrokeCount" style="text-align: right;" class="alt"></td>
    <td id="idNameOneThirdStrokeCount" style="text-align: right;" class="alt"></td>
</tr>
<tr>
    <th>상대의 이름</th>
    <td id="idNameTwoFirst" style="text-align: right;"></td>
    <td id="idNameTwoSecond" style="text-align: right;"></td>
    <td id="idNameTwoThird" style="text-align: right;"></td>
</tr>
<tr>
    <th>획수</th>
    <td id="idNameTwoFirstStrokeCount" style="text-align: right;" class="alt"></td>
    <td id="idNameTwoSecondStrokeCount" style="text-align: right;" class="alt"></td>
    <td id="idNameTwoThirdStrokeCount" style="text-align: right;" class="alt"></td>
</tr>
<tr>
    <th>획수의 합</th>
    <td id="idFirstSum" style="color: red; text-align: right;"></td>
    <td id="idSecondSum" style="color: red; text-align: right;"></td>
    <td id="idThirdSum" style="color: red; text-align: right;"></td>
</tr>
</table>
</body>
</html>

반응형