この単純なペア ゲームを作成し、すべてのコードをapp.jsに詰め込みました。それをプレイするには、単純に画面上でカードをペアにする必要があります。ペアにするたびにcard
、移動回数、ゲーム タイマーなどのゲーム変数を含むオブジェクトがコンソールに出力されます。これらのゲーム変数が表示されるはずです。画面の右下にありますが、CardFlipper
コントローラーの$scope
. どうすればいいですか?関数とオブジェクトをコントローラー内に移動する必要がありますか? Angular JS を使用するのはこれが初めてなので、これを行うためのより良いプラクティスまたはより効率的な方法を提案してください。ここに私の app.js があります:
var app = angular.module('memoApp', []); app.filter('シャッフル', function() { リターン関数(配列) { var カウンター = array.length、temp、index; while (カウンター--) { インデックス = (Math.random() * カウンター) | 0; temp = 配列[カウンター]; 配列[カウンター] = 配列[インデックス]; 配列[インデックス] = temp; 配列を返します。 } }); app.directive('カード', function() { リターン関数(スコープ、要素){ element.bind('クリック', function(e) { e.preventDefault(); RevealCard($(this).children('a')); console.log(カード); }); } }); 関数 CardFlipper($scope) { $scope.deck = [ 1、2、3、4、5、6、7、8、9、 1、2、3、4、5、6、7、8、9 ]; $scope.card = カード; }; /* ゲーム */ 変数カード = { カウント: 0, ペア: 0, 移動: 0, タイマー: 0 }; var タイマー = setInterval(関数(){ card.timer++; }、1000); var明らかにカード=関数(選択){ if (card.count!=1) { // 最初の動き: データを保存 card.pair = pick.data('ペア'); card.count = 1; turnCard('ワイプ'); turnCard('フリップ', ピック, card.pair); } そうしないと { // 二手目: 比較 if (picked.data('pair')==card.pair) { if (!picked.hasClass('flip')) { turnCard('win',picked,picked.data('pair')); } そうしないと { turnCard('ワイプ'); } } そうしないと { turnCard('フリップ', ピック, pick.data('ペア')); } card.count = 2; card.moves++; } }; var turnCard = function(結果、選択、ペア) { スイッチ (結果) { ケース「フリップ」: pick.toggleClass('flip').html(ペア); 壊す; ケース「勝つ」: pick.addClass('flip').html(card.pair); $('ul#game .flip').addClass('win'); 壊す; ケース「ワイプ」: $('ul#game li').find('a').removeClass('flip').html(''); 壊す; } };