1

「1」の編集履歴(バックアップ)一覧はこちら

1」(2010/10/16 (土) 08:54:31) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

// IMAGINE月齢時計を表示するJavaScriptのソースコード拾ってきたので、@wiki用にしてみました。 // ただし、JavaScript入力プラグイン(js)が管理者のみ編集可なページでないと使えなかったので、 // テストしてません><; // // 2010/10/06 : これだと動的ページにならないので、改良が必要っぽい。 // // 管理者のみ編集可ページにしてみましたが、動きません。 // プラグインってのがどう使えばいいかわかんないです・・・ #divid(clock){} #divid(moonlist){} #javascript(){{ <script type="text/javascript"> <!-- /* * * 女神転生 IMAGINE 内部時計と月齢一覧 * * 参考にした月齢一覧があるのですがurlが判らない。どこかのblogに貼ってあったのですが・・・。 * * Update History * * Date Description * ---------- ----------------------------------------------------------- * 2007/09/10 取り合えず版を作成 * 2007/11/15 表示を少し変更して横幅を短くした * 2008/04/07 年を外して曜日を表示するように変更 * 2008/05/26 上弦・下弦を表示 * 2008/07/05 時間の表示方法を少し変更 * */ // 2秒ごとにゲーム内時間が1分進みます。 // 実時間2分でゲーム内時間1時間経過 // ゲーム内時間が0:00または12:00になると月齢が1/8ずつ進みます。 // 実時間24分で月齢1/8進む // 月齢表示の左下が明るい期間は「上弦」です。 // 月齢はNEW MOON(新月)、1/8、2/8、……、FULL MOON(満月)と変化します。 // 月齢表示の左下が暗い期間は「下弦」です。 // 月齢はFULL MOON(満月)、7/8、6/8、……、NEW MOON(新月)と変化します。 // var First =true var megaTime, realTime; function ListMoon() { var targetDate, targetTime, targetYear, targetMonth, targetDay, targetHour, targetMin, targetSec; var adjustMin, adjustSec, html, date, time, moon; targetDate = new Date(); targetTime = targetDate.getTime(); targetYear = targetDate.getYear(); targetMonth = targetDate.getMonth(); targetDay = targetDate.getDate(); targetHour = targetDate.getHours(); targetMin = targetDate.getMinutes(); targetSec = targetDate.getSeconds(); if (targetYear < 2000) targetYear += 1900; adjustMin = 24 - Math.floor((targetTime - baseTime ) / 1000 / 60) % 24; // ミリ秒なので1000で割る。次の月齢を得るために分を補正 adjustSec = 60 - Math.floor((targetTime - baseTime ) / 1000 ) % 60; // 00秒が月齢の変わり目では無いので補正 html = "<table cellspacing='1' cellpadding='3' border='1' bordercolor='silver' style='font-size:10pt;'>"; html += "<tr bgcolor=white>"; html += " <th>実時間</th><th>月齢</th>"; html += "</tr>"; for (i = 0; i < 300; i++) { date = new Date(targetYear, targetMonth, targetDay, targetHour, targetMin + adjustMin + (24 * i), targetSec +adjustSec); time = date.getTime(); moon = Math.floor(baseMoon + (time - baseTime) / 24 / 60 / 1000) % 16; switch (moon) { case 0: bgcolor = "#bbddff"; break; case 8: bgcolor = "#ffcccc"; break; default: bgcolor = "#ffffff"; } // チェックされていない もしくは 満月・新月のとき表示 if (!CheckFlg() || (moon==0 || moon==8)) { html += "<tr bgcolor='" + bgcolor + "'>"; html += "<td>" + GetDateString(date) + "</td><td>" + GetMoonString(moon) +"</td>"; html += "</tr>"; } } html += "</table>"; document.getElementById("moonList").innerHTML = html; } /* * 時刻表示 */ function Clock(megaTime, realTime) { var html; // html = "<table cellspacing='1' cellpadding='3' border='1' bordercolor='silver' style='font-size:10pt;font-family=:\"Courier New\",monospace;' >"; html = ""; html += "<form method='post' style='margin: 0px;'>"; html += " <table cellspacing='1' cellpadding='3' border='1' bordercolor='silver' style='font-size:10pt;' >"; html += " <tr bgcolor=white>"; html += " <td><b>実時間</b></td>" + "<td>" + realTime +"</td>"; html += " </tr>"; html += " <tr bgcolor=white>"; html += " <td><b>Imagine</b></td>" + "<td>" + megaTime +"</td>"; html += " </tr>"; html += " </table>"; html += " <div style='font-size:10pt;'>" html += " <label for='1'><input id='1' name='moon' type='checkbox' value='ok'" if (CheckFlg()) html += " checked" html += " >満月・新月のみ</label>" html += " </div>" html += "</form>" document.getElementById("clock").innerHTML = html; } /* * 満月・新月のみ のチェックの有無 * * Arg : None * RC : true/false */ function CheckFlg() { if (First) { First=false; return true } // 最初は表示のみ if (document.forms[0].moon.checked) { return true; } else { return false; } } /* * IMAGINE内の時間を取得 * * Arg : None * RC : 月齢と時間 */ function GetMegaTime() { // var nowDate, nowTime; var min, hour, rc, moon; var nowDate = new Date(); var nowTime = nowDate.getTime(); min = Math.floor(((nowTime - baseTime) / 1000 / 2 )) % 60; // 2秒で1分 hour = Math.floor(((nowTime - baseTime) / 1000 / 2 / 60 )) % 24; if (hour < 10) hour = "0" + hour; if (min < 10) min = "0" + min; moon = Math.floor(baseMoon + (nowTime - baseTime) / 24 / 60 / 1000) % 16; rc = GetMoonString(moon) + "" + GetMoonType(moon) + " " + hour + ":" + min; return rc } /* * 日時を文字列に変換 * * Arg : 日時 * RC : 日時(文字列) */ function GetDateString(date) { // var year, month, day, hour, min; var year = date.getYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hour = date.getHours(); var min = date.getMinutes(); if (year < 2000) year += 1900; if (hour < 10) hour = "0" + hour; if (min < 10) min = "0" + min; if (day < 10) day = "0" + day; if (month < 10) month = "0" + month; return year + "/" + month + "/" + day + " " + hour + ":" + min; } /* * 月齢を文字列に変換 * * Arg : 月齢(0-15) * RC : 月齢(0-7 or 文字列) */ function GetMoonString(moon) { var rc; switch (moon) { case 0: rc ="NEW MOON" ; break; case 4: rc ="HALF MOON"; break; case 8: rc ="FULL MOON"; break; case 12: rc ="HALF MOON"; break; default : if (moon > 8) rc =(16 - moon) + "/8 MOON"; else rc =moon + "/8 MOON"; } return rc } /* * 上弦・下弦を取得 * * Arg : 月齢(0-15) * RC : ↑ ↓ or   (上弦、下弦、満月・新月) */ function GetMoonType(moon) { var rc; if (moon ==0 || moon ==8) rc =" " else if (moon <8) rc ="↑" else rc ="↓" return rc } /* * 現時間を取得 * * Arg : None * RC : 現時間 */ function GetNow() { // var year, month, date, hour, min, sec, now; var week = new Array("日","月","火","水","木","金","土"); var now = new Date(); var year = now.getYear(); var month = now.getMonth() + 1; var day = now.getDay(); var date = now.getDate(); var hour = now.getHours(); var min = now.getMinutes(); var sec = now.getSeconds(); if (year < 2000) year += 1900; if (hour < 10) hour = "0" + hour; if (min < 10) min = "0" + min; if (sec < 10) sec = "0" + sec; if (date < 10) date = "0" + date; if (month < 10) month = "0" + month; return month + "/" + date + "(" + week[day] +")" + " " + hour + ":" + min + ":" + sec; // return year + "/" + month + "/" + date + " " + hour + ":" + min + ":" + sec; } function update_watch() { megaTime =GetMegaTime(); realTime =GetNow(); Clock(megaTime, realTime); ListMoon(); setTimeout('update_watch()', 1000); // 1000msec = 1sec } // // 2007/09/10 13:47:40 => 4/8 => 4/16 var baseMoon = 4; //var baseDate = new Date(2007, 8, 10, 13, 47, 40); var baseDate = new Date(2009,12-1, 8, 13, 47, 40); var baseTime = baseDate.getTime() ; // メンテの度に微妙に時間がズレるので補正 //var baseTime = baseDate.getTime() +2 * 2 * 1000; // メンテの度に微妙に時間がズレるので補正 // ゲーム内が進んでいる時は - // ゲーム内が遅れている時は + var baseMin = baseDate.getMinutes(); update_watch(); --> </script> }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: