Changeset 132


Ignore:
Timestamp:
05/05/12 05:39:04 (13 years ago)
Author:
atzm
Message:
  • add score board
Location:
pycodeshooter/trunk
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • pycodeshooter/trunk/index.html

    r131 r132  
    1313    <script type="text/javascript" charset="UTF-8" src="shooter/system.js"></script> 
    1414    <script type="text/javascript"> 
     15    function updateHighScore(highscore) { 
     16        var table = "<tr><th>Rank</th><th>Name</th><th>Score</th><th>Time</th></tr>"; 
     17 
     18        for (var i = 0; i < highscore.length; i++) { 
     19            var name  = highscore[i].name; 
     20            var score = highscore[i].value; 
     21            var stime = highscore[i].stime; 
     22            var etime = highscore[i].etime; 
     23            var time  = etime - stime; 
     24            var min   = Math.floor(time / 60); 
     25            var sec   = time % 60; 
     26 
     27            table += "<tr><td>" + (i+1) + "</td><td>" + name + "</td><td>" + 
     28                score + "</td><td>" + min + ":" + sec + "</td></tr>"; 
     29        } 
     30 
     31        document.getElementById("highscore").innerHTML = 
     32            "<table style=\"text-align:center;\">" + table + "</table>"; 
     33    } 
     34 
    1535    window.onload = function () { 
    1636        var req = new XMLHttpRequest(); 
     37        req.open("GET", document.getElementById("api_score").value, false); 
     38        req.send(null); 
     39        updateHighScore(JSON.parse(req.responseText)); 
     40 
     41        req = new XMLHttpRequest(); 
    1742        req.open("GET", document.getElementById("api").value, false); 
    1843        req.send(null); 
     
    86111            }; 
    87112 
     113            if (20 < player.name.length) { 
     114                setMessage(msg, "Name is too long"); 
     115                return; 
     116            } 
     117 
    88118            for (var n in player) { 
    89119                if (n == "name" || n == "image") 
     
    103133 
    104134            setTimeout(function() { 
    105                 initGame(document.getElementById("screen"), msg, player); 
     135                var stime = ~~(new Date() / 1000); 
     136 
     137                initGame(document.getElementById("screen"), msg, player, function (name, value) { 
     138                    var etime = ~~(new Date() / 1000); 
     139                    var url   = document.getElementById("api_score").value; 
     140                    var req   = new XMLHttpRequest(); 
     141                    req.open("GET", url + "?name=" + encodeURIComponent(name) + "&value=" + 
     142                                    value + "&stime=" + stime + "&etime=" + etime , false); 
     143                    req.send(null); 
     144                    updateHighScore(JSON.parse(req.responseText)); 
     145                }); 
    106146 
    107147                // auto enemy encounter 
     
    150190                <input type="hidden" value="1"  id="shotlevel" /> 
    151191                <input type="hidden" value="/etc/pycodebattler/?mode=json" id="api" /> 
     192                <input type="hidden" value="score/score.cgi" id="api_score" /> 
    152193                <img src="images/logo.png" style="visibility: hidden;" id="logoimg" /> 
    153194 
     
    239280        </dl> 
    240281 
     282        <p>ハむスコア</p> 
     283        <span id="highscore" style="font-size: small;">Now loading...</span> 
     284 
    241285        <p>システムメッセヌゞ</p> 
    242286        <span id="message" style="font-size: small;">Now loading...</span> 
  • pycodeshooter/trunk/shooter/system.js

    r131 r132  
    595595 *  Initializer 
    596596 */ 
    597 function initGame(canvas, msg, playerData) { 
     597function initGame(canvas, msg, playerData, scoreCallback) { 
    598598    System.screen.canvas = canvas; 
    599599    System.message       = msg; 
     
    681681                             -0.5) 
    682682        ]; 
     683 
     684        if (trooper.isDead() && scoreCallback) { 
     685            scoreCallback(trooper.name, System.score[trooper.name]); 
     686        } 
    683687    }); 
    684688 
Note: See TracChangeset for help on using the changeset viewer.