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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

546閲覧

wScratchPad.jsを使った銀はがしにて、1度削った銀部分をタップすると再度カウントされてしまう。

Hiyoko_mochi

総合スコア30

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2022/06/27 12:47

Javascript勉強中です。

やりたい事

wScratchPad.jsを用いて、銀はがしを試しています。

下記の記述で、当たりが3回出ると「おめでとう!」のアラートが
出るようになっていますが、1度削った当たりの部分を再度タップすると、
また削った判定がされてしまいます。

最初に行った事(土台)

【html】 <ul> <li id="wScratchPad1"></li> <li id="wScratchPad2"></li> <li id="wScratchPad3"></li> <li id="wScratchPad4"></li> <li id="wScratchPad5"></li> <li id="wScratchPad6"></li> </ul>
【Javascript】 <script type="text/javascript"> var count = 0; var endFlg = false; function check() { if (!endFlg && count > 2) { endFlg =true; alert("おめでとう!"); return false; } } strikeList = new Array(); while (strikeList.length < 3){ var rand = Math.floor(Math.random()*2+1); if (!("," + strikeList.join(",") + ",").match("," + rand + ",")) { strikeList[strikeList.length] = rand; } } for (var i = 1; i < 10; i = i +1){ if (("," + strikeList.join(",") + ",").match("," + i + ",")) { $("#wScratchPad" + i).wScratchPad({ width: 80, height: 80, image: "/img/atari.png", color: "#000", cursor: "/img/coin.png", size: 50, scratchDown: function(e, percent) { if (percent > 1){ count++; } }, scratchUp: function(e, percent) { check(); } }); } else { $("#wScratchPad" + i).wScratchPad({ width: 80, height: 80, image: "/img/hazure.png", color: "#000", cursor: "/img/coin.png", size: 50, scratchUp: function(e, percent) { if(!endFlg) { endFlg = false; alert("ざんねんでした!"); } } }); } } </script>

この中で

scratchDown: function(e, percent) { if (percent > 1){ count++; } }, scratchUp: function(e, percent) { check(); }

この部分に手を加える事でいけそうな気もしており、
いくつか試してみましたが、銀はがし自体が消えてしまったり、
動かなくなってしまったりしてしまいます。

1度削った当たりの部分は、再度触れてもカウントしないようにさせたいのですが、
どうしたら良いのかわからず、お手上げ状態です。

恐縮ではございますが、お知恵貸して頂ければ幸いです。

よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

自己解決

余り良いやり方ではないかもしれませんが、
1%以上だとカウントしてしまうのであれば
特定の%以下の場合のみカウントさせると言う風にしてしまえば良いと思い

scratchDown: function(e, percent) { if (percent < 20){ count++; } },

上記にした所、求めていた挙動になりました。

ご助言頂いた方、ありがとうございました。

投稿2022/06/28 04:32

Hiyoko_mochi

総合スコア30

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

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

0

scratchDownのコールバックの中から外側の変数がうまく扱えないのですかね・・

scratchDownを削除して、
check関数を次のような感じにしてみたらどうでしょうか。

js

1 const array = [] 2 function check(e, percent) { 3 const id = $(e.target).parent().attr("id") 4 if (percent > 1 && !array.includes(id)) { 5 array.push(id) 6 } 7 if (!endFlg && array.length > 2) { 8 endFlg = true; 9 alert("おめでとう!"); 10 return false; 11 } 12 }

投稿2022/06/27 15:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Hiyoko_mochi

2022/06/28 04:29

ご助言ありがとうございます。 check関数で試してみましたが、同じ挙動になってしまい変わらずでした。 只、初歩的な部分に気づき解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問