質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

551閲覧

ゲームタイムとランキング

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/09/18 08:31

編集2019/09/18 08:43

Javascriptでタイピングゲームを作成したのですが、これにクリアタイムによるランキングをつけたいのですが、うまくいきませんでした。修正できる方、いらっしゃいましたら是非お願いします。

理想

ゲーム開始から終了までにかかった時間を計測し、そのタイムをランキングに掲載しようと考えています。

試行したJavascript

javascript

1//0~25までの乱数を格納する配列 2var rand = new Array(); 3//問題の文字列を格納 4var mondai = ""; 5//何問目か格納 6var count = 0; 7//問題数 8var queNum = 150; 9 10/*--------------------------------------------*/ 11 12//キー状態管理変数の定義 13var KEYS = new Array(256); 14//キーの状態を false (押されていない)で初期化 15for(var i=0; i<KEYS.length; i++) { 16 KEYS[i] = false; 17} 18//キーが押された時に呼び出される処理を指定 19window.onkeydown = function(e) { 20 //キーボードによる自動スクロールの防止 21 e.preventDefault(); 22 //キーを押された状態に更新 23 KEYS[e.keyCode] = true; 24 typeGame(); 25 26}; 27//キーが離された時に呼び出される処理を指定 28window.onkeyup = function(e) { 29 //キーを離された状態に更新 30 KEYS[e.keyCode] = false; 31}; 32//キーコードを格納する配列 33var kCode = new Array(65,66,67,68,69,70,71,72,73, 34 74,75,76,77,78,79,80,81,82, 35 83,84,85,86,87,88,89,90); 36//文字を格納する配列 37var Alphabet = new Array("A","B","C","D","E","F","G","H","I", 38 "J","K","L","M","N","O","P","Q","R", 39 "S","T","U","V","W","X","Y","Z"); 40 41/*--------------------------------------------*/ 42 43//タイピングゲームの問題をセットする 44function gameSet(){ 45 //問題文とカウント数とタイムをクリアする 46 mondai = ""; 47 count = 0; 48 var score = 0; 49 //0~25までの乱数を queNum 個作成して配列randに格納する 50 for (var i = 0;i < queNum ;i++){ 51 rand[i] = Math.floor( Math.random() * 26 ); 52 } 53 54 //問題文の作成 55 for ( var i = 0 ; i < queNum ; i++){ 56 mondai = mondai + Alphabet[rand[i]]; 57 } 58 59 //問題枠に表示する 60 document.getElementById("frame").innerHTML = mondai; 61} 62 63//キー入力を受け取る 64function typeGame(){ 65 //入力されたキーコードと、問題文のキーコードを比較 66 if(KEYS[kCode[rand[count]]]){ 67 //カウント数を+1にする 68 count++; 69 70 //全文字入力したか確認 71 if (count < queNum){ 72 //問題文の頭の一文字を切り取る 73 mondai = mondai.substring(1,mondai.Length); 74 //問題枠に表示する 75 document.getElementById("frame").innerHTML = mondai; 76 }else{ 77 //問題枠にゲーム終了を表示 78 document.getElementById("frame").innerHTML = "ゲーム終了"; 79 } 80 } 81} 82 83/*--------------------------------------------*/ 84 85gameSet();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/09/18 08:39

「うまくいきませんでした。」とありますが、どのようにうまく行かなかったのでしょうか。
退会済みユーザー

退会済みユーザー

2019/09/18 08:42

クリアタイムやランキングの表示ができませんでした。 上記に記載のJSでは消しております。
guest

回答1

0

ベストアンサー

クリア時間は目処がたっていますか?
開始時のnew Date().getTime()と終了時のnew Date().getTime()の差が経過時間です。

ランキングには、ランキング用の配列を保持して、
クリア時間をpushしてsortすればいいでしょう

ランキングの保持やネット越しの対戦などはすこしハードルが高いので割愛します

ranking

仮にデフォルトの順位を1~5秒だとして、そこに2.5秒の記録を入れ込むにはこう

var r=['00:01.00','00:02.00','00:03.00','00:04.00','00:05.00',]; console.log(r); (async()=>{ var s=new Date().getTime(); await new Promise(resolve=>{ setTimeout(()=>resolve(),2500); }); var e=new Date().getTime(); var diff=e-s; var time=(100+diff/100000).toString().substr(1,2)+":"+ (100+diff/1000).toString().substr(1,2)+"."+ (100+diff/10).toString().substr(1,2); r.push(time); r=r.sort().splice(0,5); console.log(r); })();

投稿2019/09/18 08:46

編集2019/09/18 09:03
yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/18 08:51

ありがとうございます。試してみます。 あと、ランキング用の配列を教えていただけたらと思います。 お手数かけます。
yambejp

2019/09/18 09:04

ランキング(ちょー簡易版)処理を追記しておきました
退会済みユーザー

退会済みユーザー

2019/09/18 20:38

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問