前提・実現したいこと
javafxを使ってパズルゲームを作成しています。
パズルが動いた時の動作(横に移動など)を履歴としてテキストエリアに保存し、テキストが10行以上になったら一番古いもの(最初は1行目)を削除してその下に履歴を入れるという仕様にしたいのですがなかなか上手くいきません。この仕様を満たすにはどうしたらよいでしょうか?
記述したソースコードでは履歴が10行以上になるとテキストエリアが大きくなり、古いものは消えない仕様になっています。
該当のソースコード
//gameHistoryがテキストエリアのfxidです。
String up = (count + "手目: " + "ボタン" + Btn + "が上に移動" + "\n");
String down = (count + "手目: " + "ボタン" + Btn + "が下に移動" + "\n");
String right = (count + "手目: " + "ボタン" + Btn + "が右に移動" + "\n");
String left = (count + "手目: " + "ボタン" + Btn + "が左に移動" + "\n");
//押したボタンと空白のボタンのX座標が同じときのみ実行(縦の操作) if (clickedBtn.getLayoutX() == button16.getLayoutX()) { moveCount.setText(count + "手目"); count++; //押したボタンと空白のボタンが隣接(下) if (clickedBtn.getLayoutY() == button16.getLayoutY() - 60) { clickedBtn.setLayoutY(layoutPuzzleButtonY + 60); button16.setLayoutY(layoutEmptyButtonY - 60); gameHistory.setText(gameHistory.getText() + down); } //押したボタンと空白のボタンが1つ離れている(下) else if (clickedBtn.getLayoutY() == button16.getLayoutY() - 120) { for (Button group1 : group) { double groupMoveX = group1.getLayoutX(); double groupMoveY = group1.getLayoutY(); if (layoutPuzzleButtonX == groupMoveX) { group1.setLayoutY(groupMoveY + 60); if (groupMoveY > layoutEmptyButtonY || groupMoveY == layoutEmptyButtonY - 180) { group1.setLayoutY(groupMoveY + 0); } } } button16.setLayoutY(layoutEmptyButtonY = layoutPuzzleButtonY); gameHistory.setText(gameHistory.getText() + down); } //押したボタンと空白のボタンが2つ離れている(下) else if (clickedBtn.getLayoutY() == button16.getLayoutY() - 180) { for (Button group1 : group) { double groupMoveX = group1.getLayoutX(); double groupMoveY = group1.getLayoutY(); if (layoutPuzzleButtonX == groupMoveX) { group1.setLayoutY(groupMoveY + 60); } } button16.setLayoutY(layoutEmptyButtonY = layoutPuzzleButtonY); gameHistory.setText(gameHistory.getText() + down); } //押したボタンと空白のボタンが隣接(上) else if (clickedBtn.getLayoutY() == button16.getLayoutY() + 60) { clickedBtn.setLayoutY(layoutPuzzleButtonY - 60); button16.setLayoutY(layoutEmptyButtonY + 60); gameHistory.setText(gameHistory.getText() + up); }
以下は上、右、左でほぼ同じコードなので省略します。
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。