ゲームのランキングスコアを保持したいです。
詳細
現在、タイピングゲームを作成しており、ある程度完成したのですが、一つ問題があることに気づきました。
ページ内ではランキングの更新があると、次のプレイの時にもその上位タイム情報が維持されるのですが、ページを更新、あるいはほかの端末で行うと、そのタイムが保持されないという状況が発生しました。
このタイムをページがリロード(再読込)されても保持するようにはどのように書き換えたらいいのでしょうか。下部に入力してみたJSを置いておきます。ご解答よろしくお願いします。
例
ランキング表示
|順位|初期タイム|1回目終了後|2回目終了後|リロード後
|--:|:--|
|1位|59:59:00|30:00:00|25:00:00|59:59:00
|2位|59:59:01|59:59:00|30:00:00|59:59:01
|3位|59:59:02|59:59:01|59:59:00|59:59:02
|4位|59:59:03|59:59:02|59:59:01|59:59:03
|5位|59:59:04|59:59:03|59:59:02|59:59:04
※1回目記録30:00:00/2回目記録25:00:00
ランキング表示のhtml
html
1 <script src="/header.js"></script> 2 <script> 3 var r=[ 4 ['23:59.95','abc'], 5 ['23:59.96','xyz'], 6 ['23:59.97','ijk'], 7 ['23:59.98','aaa'], 8 ['23:59.99','zzz'], 9 ]; 10 var qs=[ 11 '', 12 ]; 13 const viewRank=()=>{ 14 document.querySelector('#rank span').innerHTML=r.map(x=>x.join(" ")).join("<br>"); 15 }; 16 window.addEventListener('DOMContentLoaded',()=>{ 17 viewRank(); 18 document.querySelector('#start').addEventListener('click',e=>{ 19 const t1=e.target; 20 const t2=document.querySelector('#a'); 21 t1.disabled=true; 22 t2.disabled=false; 23 const name=prompt("お名前を入力してください。"); 24 if(name=="") name="UnKnown"; 25 (async()=>{ 26 qs=qs.map(x=>[x,Math.random()]).sort((x,y)=>x[1]-y[1]).map(x=>x[0]); 27 const s=new Date().getTime(); 28 for(var i=0;i<qs.length;i++){ 29 const qStr=qs[i]; 30 document.querySelector('#q span').textContent=qStr; 31 t2.value=""; 32 t2.focus(); 33 await new Promise(resolve=>{ 34 const timerId=setInterval(()=>{ 35 if(t2.value==qStr){ 36 clearInterval(timerId); 37 resolve(); 38 } 39 },10); 40 }); 41 } 42 const e=new Date().getTime(); 43 const diff=e-s; 44 const str=(10000+diff/1000).toString(); 45 const time=str.substr(1,2)+":"+ 46 str.substr(3,5); 47 r.push([time,name]); 48 //r=await r.sort((x,y)=>x[0]>y[0]).splice(0,5); 49 //以下追加入力 50 r=await r.sort((x,y)=>x[0]>y[0]?1:-1).splice(0,5); 51 viewRank(); 52 t1.disabled=false; 53 t2.disabled=true; 54 })(); 55 }); 56 }); 57 </script> 58 <input type="button" value="ゲーム開始!" id="start"> 59 <div id="q">Q:<span>ここに問題が表示されます。</span></div> 60 <div>A:<input type="text" id="a"></div> 61 <div id="rank">ランキングトップ5<br> 62 <span></span> 63 </div>
名前入力(ランキング表示の際に使用)
↓
ゲームスタート
↓
終了
↓
ランキング表示
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/29 03:29
2019/09/29 03:34
退会済みユーザー
2019/09/29 04:07
2019/09/29 09:16
退会済みユーザー
2019/09/29 09:48