シミュレーション

Last-modified: 2023-01-19 (木) 22:11:35

ギルド対抗戦賢者の噴水

ギルマス・副マスを悩ませる供え物を当てるクエストを練習できるスクリプトを作りました。
使い方は以下のテキストファイルを拡張子「.hta」で保存して実行するだけ。
グループクエスト/ギルド対抗戦

fileMapleStoryGuildQuest.hta
<!-- ????X?N???v?g -->
<html>
<head>
    <title>???C?v???X?g?[???[?M???h??R???????? ??K???[?h</title>
    <script language="JavaScript">
    <!--
        var g_count;
        var g_answer = new Array(4);
        
        function putout(s){
            document.form.result.value += s + "\n";
            var r = document.form.result.createTextRange();
            r.move("character",document.form.result.value.length);
            r.select();
        }
        
        function get_match(t,u){
            var n = 0;
            for( i=0; i<t.length; i++ ){
                if( t[i] == u[i] ){
                    n++; t[i] = -1; u[i] = 0;
                }
            }
            return n;
        }
        
        function get_unmatch(t,u){
            var n = 0;
            for( i=0; i<t.length; i++ ){
                for( j=0; j<u.length; j++ ){
                    if( t[i] == u[j] ){
                        n++; t[i] = -1; u[j] = 0;
                        break;
                    }
                }
            }
            return n;
        }
        
        // ?????????
        function init() {
            for( i=0; i<4; i++ ){
                g_answer[i] = 1 + Math.floor(Math.random() * 4);
            }
            g_count = 0;
        }
        
        // ???????
        function check() {
            var comp = new Array(4);
            var user = new Array(0, 0, 0, 0);
            var match, unmatch, nolook;
            var log = "";
            
            // ?????R?s?[???
            for( i=0; i<comp.length; i++ ) comp[i] = g_answer[i];
            
            // ????????????
            for( i=0; i<4; i++ ){
                for( j=0; j<4; j++ ){
                    if( document.form["man"+i][j].checked ){
                        user[i] = document.form["man"+i][j].value;
                    }
                }
                if( user[i] == 0 ){
                    alert("??????u????????);
                    return;
                }
            }
            
            // ???????????
            match = get_match( comp, user );
            
            if( match == 4 ){
                putout("?????????????????");
                init();
                return;
            }
            else{
                if( match != 0 ) log += match+"?????";
                if( ++g_count == 7 ){
                    putout("7????????????????????");
                    init();
                    return;
                }
            }
            
            // ??????????????
            unmatch = get_unmatch( comp, user );
            
            if( unmatch != 0 ){
                log += unmatch+"????????";
            }

            // ???????????????
            if( nolook = 4-match-unmatch ){
                log += nolook+"?????????";
            }
            
            putout(g_count + ":" + log);
            return;
        }
    // -->
    </script>
</head>
<body onLoad="init()">
    <form name="form">
        <table border="1">
        <tr>
            <td></td>
            <td>???i??M?@</td>
            <td>?i?f??M?B</td>
            <td>?B?f??M?j</td>
            <td>?@?f??j??</td>
        </tr>
        <tr>
            <td>1</td>
            <td><input type="radio" name="man0" value="1">?M?/td>
            <td><input type="radio" name="man1" value="1">?M?/td>
            <td><input type="radio" name="man2" value="1">?M?/td>
            <td><input type="radio" name="man3" value="1">?M?/td>
        </tr>
        <tr>
            <td>2</td>
            <td><input type="radio" name="man0" value="2">???</td>
            <td><input type="radio" name="man1" value="2">???</td>
            <td><input type="radio" name="man2" value="2">???</td>
            <td><input type="radio" name="man3" value="2">???</td>
        </tr>
        <tr>
            <td>3</td>
            <td><input type="radio" name="man0" value="3">?</td>
            <td><input type="radio" name="man1" value="3">?</td>
            <td><input type="radio" name="man2" value="3">?</td>
            <td><input type="radio" name="man3" value="3">?</td>
        </tr>
        <tr>
            <td>4</td>
            <td><input type="radio" name="man0" value="4">?H?i</td>
            <td><input type="radio" name="man1" value="4">?H?i</td>
            <td><input type="radio" name="man2" value="4">?H?i</td>
            <td><input type="radio" name="man3" value="4">?H?i</td>
        </tr>
        </table>
        <textarea name="result" cols="80" rows="8" readonly></textarea>
        <input type="button" value="?g???C" onClick="check()">
    </form>
</body>
</html>