忍者ブログ

からすまる日誌 JavaScript

応用2(23) 神経衰弱(6)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

応用2(23) 神経衰弱(6)

神経衰弱つづき 
 
前回のファイルを修正
 
・closeの概念を削除
・付随するattrも2か所削除 
・cssのopen,closeも削除 
 
おそらくここまで

--->test5.html
 
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title>JavaScript</title>
  <link rel="stylesheet" href="test5.css">
  <script src="../jquery-3.4.1.min.js"></script>
 </head>
 <body>
  <div id="stage"></div>
  
  <script src="test5.js"></script>  
 </body>
</html>
 
--->test5.js
 
$(function(){
 console.log('hi');
 
 var kigo = ['!','!','#','#','$','$','&','&',
       '=','=','@','@','+','+','?','?'];
 //シャッフルする
 for (i=0; i<50; i++){
  var r1 = Math.floor(Math.random()*kigo.length);
  var r2 = Math.floor(Math.random()*kigo.length);
  var temp = kigo[r1];
  kigo[r1] = kigo[r2];
  kigo[r2] = temp;
 }
 console.log([kigo]);
 
 //カードの配置
 for (i=0; i<kigo.length; i++){
  var ele = $('<div>').text(kigo[i]);//divを生成、textで配列の中身を入れる
  $('#stage').append(ele);//stage上に配置
 }
 
 var clicks = 0;//カードのクリック回数
 var eles = [];//オブジェクトそのもの(ここではthis)を入れる配列
 
 //click時の動作予約 
 $('#stage div').on('click',function(){
  eles[clicks] = $(this);//呼び出し元(クリックされたパネル)の「オブジェクトそのもの」
  //elesの配列が何番目かはclicksの回数が自動で入る
  
  $(this).css({'background':'#ffb7a3','color':'#f00'});
  clicks ++;//クリック回数を増やす
  
  //判定をする
  if (clicks==2){//クリック数が2回目だったら
   clicks = 0;
   hantei();//判定の関数を呼び出す
  }
 });
 
 //当たり判定
 function hantei(){
  if(eles[0].text()==eles[1].text()){
   console.log('一致');
   
  }else{
   console.log('不一致');
   eles[0].animate({'opacity':'20%'},1500,function(){//第二引数でミリ秒、第三引数でアニメが終わったら次実行
     eles[0].css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   });//違っていたらカードが透明になる。先生版は値0
   //第二引数は時間(ミリ秒)
   eles[1].animate({'opacity':'20%'},1500,function(){
     eles[1].css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1'});
   });//違っていたらカードが透明になる
  }
 }
 
});
 
--->test5.css
 
body{
 background: #FFc;
 background-image: url(img/fish_kue2.png);
 background-size: contain;/*元画像の縦横比は保持、要素に画像が全て収まるように調整*/
 /*background-size: cover;*/
}
#stage{
 display: flex;/*横並び*/
 flex-wrap: wrap;/*アイテムは複数行に分割*/
 width: 400px;
 margin: auto;
 border: solid 1px #ccc;
 background: #000;
}
#stage div{
 /*カードのデザイン*/
 width: 100px;
 height: 100px;
 text-align: center;/*ボックスの中央に配置*/
 background: #000;
 background-image: url(img/fish_kue2.png);
 background-size: contain;
 background-repeat: no-repeat;
 
 box-sizing: border-box;/*border含めたサイズ*/
 border: solid 1px #ccc;
 /*文字*/
 font-size: 2rem;
 line-height: 3;
 cursor: pointer;
}
 
 

修正していきましょう。
カードが当たっていたら、もうクリックできないようにしたい。
 
   $(this).css({'background':'#ffb7a3','color':'#f00','pointer-events':'none'});/*pointerを制御*/
 
'pointer-events':'none'
ポインタがカーソルに戻り、そのうえクリックを認めなくなる
  
判定関数のなかで不一致の時にポインタも戻す
 
   console.log('不一致');
   eles[0].animate({'opacity':'20%'},1500,function(){//第二引数でミリ秒、第三引数でアニメが終わったら次実行
     eles[0].css({'background':'#000','background-image':'url(img/fish_kue2.png)','background-size':'contain','background-repeat': 'no-repeat','opacity':'1',
     'pointer-events':'auto'},);
 
 
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R