(KATAMINOを解くプログラムを作成する)KATAMINOを解くプログラム★前回の記事yucatio.hatenablog.comスタートボタンを押したときの挙動をプログラミングしていきます。actionの登録スタートボタンへactionを登録します。スタートボタンがクリックされたときにaction.startSolveを呼びます。この関数はすぐ下で実装します。}actionの実装action.startSolveを実装します。KATAMINOを解くのをスタートさせ、状態をsolving(解いている)に変更します。追加ここまで}画面の状態の変更stateManager.setSolverStateを定義します。追加ここまで}表示するピースのデータ形式の変更STEP1では、kataminoFieldを描画用関数に渡し、kataminoFieldのマスをテーブルの1セルに対応させて描画していました。STEP2ではそれをやめ、スピンの画像を表示する方法に変更します。そのためには、ピースのIDとスピンのID、位置を渡す必要があります。位置としてoffsetを渡します。offsetはピースの左上が、フィールドの左上からどのくらい離れているかを表します。フィールドに置かれているピースのIDとスピンのID、オフセットを格納した配列(placedPieces)をスタックに追加します。ピース新たに置かれたら、配列の最後にそのピースのIDとスピンのID、オフセットを追加します。後略}表示用コールバックの作成と呼び出しSTEP1で作成したsolverは、solve関数の中でdisplay.showを呼び出していましたが、プログラムの構成の変更にともない呼び出し方を変更します。stateManagerの呼び出しはactionから行う必要があるので、solverにコールバックを渡します。フィールドに置かれたピースが変更された場合にはsolverからactionのメソッドを呼び出すようにします。},}solve関数を変更してフィールドが変更された時にコールバックを呼び出します。後略}solve関数の引数が追加されたので、setTimeoutで呼び出しているsolver.solveにも引数を追加します。そのままでは引数は与えられないので、無名関数でラップします。中略}stateへのフィールドに置かれているピースの追加フィールドに置かれているピース(placedPieces)は描画に必要となるため、stateに登録します。[],}フィールドに置かれているピースの更新placedPiecesを更新するsetPlacedPieces関数をstateManagerに作成します。追加ここまで}実行結果ここまでの実行結果です。ピースが置かれたときに、stateManager.setPlacedPiecesが呼ばれ、フィールドに置かれているピースが表示されることが確認できました。ページが長くなってしまったので、一旦ここで区切ります。ピースの表示は次回行います。※消費税10%価格に変更済ページです。「ピーターからの問題」1から9までを使って分数の穴埋め算。(1)はてなブログをはじめよう!yucatioさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。