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

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

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1939閲覧

JavaFXのlabelに変数を表示させたい

AGUA_Channel

総合スコア14

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

2グッド

1クリップ

投稿2020/01/10 19:52

前提・実現したいこと

現在Eclipseでマンカラというゲームのプログラムを作成しています

マンカラのルールは以下の動画を参考にしました
マンカラルール

なお、★テスト用★で表示される内容は正しいものです

なお、scene4とscene5は上記のことが分かれば作れると思われる為、省略
scene4とscene5では問題ないという前提で
また、import関係は省略。
省略したimport文を入れた時エラーメッセージは出ませんので正しいものを使っているとご判断ください。
※※は※※~※※まで同じなので省略。

現在分からない点は
・BX1~BX8の表示方法(ラベルの更新方法)
・sentenceの内容が正しく表示されない

初歩的なミスでもあるかもしれませんがどうかご教授お願い致します。

発生している問題・エラーメッセージ

BX1~BX8とsentenceの表示が正しく出来ない コンパイルエラー無し

該当のソースコード

java

1public class JavaFXPlactice extends Application { 2 3 public static Scene scene2 = null; 4 public static Scene scene3 = null; 5 6 //共通変数 7 public static String sentence="1Pの番です"; 8 public static int move,sentcnt; 9 public static int[] BOXs= {3,3,3,0,3,3,3,0,0}; 10 11 @Override 12 public void start(Stage stage)throws Exception { 13 14 stage.setTitle("マンカラゲーム"); 15 stage.setWidth(1000); 16 stage.setHeight(800); 17 18 // ステージの作成 19 Game1Pfirst(stage); 20 Game2Pfirst(stage); 21 22 stage.setScene(scene2); 23 stage.show(); 24 } 25 //ゲームルールに沿った判断 26 public static class Gamove{ 27 public static int[] Game(int bn,int move){ 28 29 //初期値設定 30 BOXs[8]=0; 31 int i=bn; 32 //1マス先から置くので 33 i++; 34 35 //駒を進める 36 do { 37 for(;move!=0&&i<BOXs.length;move--,i++) { 38 BOXs[i]++; 39 if(i==3&&move==0) { 40 BOXs[8]=1; 41 } 42 System.out.println("move:"+move); 43 System.out.println("i:"+i); 44 } 45 if(!(i==7&&move==0)) { 46 BOXs[8]=1; 47 } 48 //一周するため 49 if(move>=1) { 50 i=0; 51 System.out.println("i,reset:"+i); 52 } 53 //もう一周? 54 }while(move!=0); 55 56 BOXs[bn]=0; 57 58 //★テスト用★ 59 for(int j=0;j<8;j++) { 60 System.out.println("BX"+(j+1)+"マス:"+BOXs[j]); 61 } 62 System.out.println("bn:"+bn); 63 64 return BOXs; 65 } 66 } 67 68 //★1Pの始まり★ 69 public static void Game1Pfirst(Stage stage) { 70 GridPane GamePane=new GridPane(); 71 72 Label BX1,BX2,BX3,BX4,BX5,BX6,BX7,BX8; 73 74 //※※ 75 BX1=new Label(String.valueOf(BOXs[0])); 76 BX1.setFont(new Font(25)); 77 BX2=new Label(String.valueOf(BOXs[1])); 78 BX2.setFont(new Font(25)); 79 BX3=new Label(String.valueOf(BOXs[2])); 80 BX3.setFont(new Font(25)); 81 BX4=new Label(String.valueOf(BOXs[3])); 82 BX4.setFont(new Font(25)); 83 BX5=new Label(String.valueOf(BOXs[4])); 84 BX5.setFont(new Font(25)); 85 BX6=new Label(String.valueOf(BOXs[5])); 86 BX6.setFont(new Font(25)); 87 BX7=new Label(String.valueOf(BOXs[6])); 88 BX7.setFont(new Font(25)); 89 BX8=new Label(String.valueOf(BOXs[7])); 90 BX8.setFont(new Font(25)); 91          //※※ 92 93 for(int i=0;i<8;i++) { 94 System.out.println("BOXs["+i+"]の値:"+BOXs[i]); 95 } 96 97 //★★★ 98 Button btn1 = new Button("右を動かす"); 99 btn1.setFont(new Font(15)); 100 //駒数が0 101 if(BOXs[0]==0) { 102 sentence="1Pの番です(駒数が0のマスは選べません)"; 103 btn1.setOnMouseClicked(event -> setScene(stage,scene2)); 104 } 105 //ゲーム処理 106 btn1.setOnAction(event -> BOXs=Gamove.Game(0,BOXs[0])); 107 //勝利判定 108 if(BOXs[0]==0&&BOXs[1]==0&&BOXs[2]==0) { 109 btn1.setOnMouseClicked(event -> setScene(stage,scene4)); 110 } 111 //次のターンがどうなるか 112 if(BOXs[8]==1) { 113 sentcnt++; 114 sentence="1Pの番です("+sentcnt+"回目)"; 115 btn1.setOnMouseClicked(event -> setScene(stage,scene2)); 116 }else { 117 sentcnt=1; 118 sentence="2Pの番です"; 119 btn1.setOnMouseClicked(event -> setScene(stage,scene3)); 120 } 121 //★★★ 122 Button btn2 = new Button("中央を動かす"); 123 btn2.setFont(new Font(15)); 124 //駒数が0なので戻る 125 if(BOXs[1]==0) { 126 sentence="1Pの番です(駒数が0のマスは選べません)"; 127 btn2.setOnMouseClicked(event -> setScene(stage,scene2)); 128 } 129 //ゲーム処理 130 btn2.setOnAction(event -> BOXs=Gamove.Game(1,BOXs[1])); 131 //勝利判定 132 if(BOXs[0]==0&&BOXs[1]==0&&BOXs[2]==0) { 133 btn2.setOnMouseClicked(event -> setScene(stage,scene4)); 134 } 135 //次のターンがどうなるか 136 if(BOXs[8]==1) { 137 sentcnt++; 138 sentence="1Pの番です("+sentcnt+"回目)"; 139 btn2.setOnMouseClicked(event -> setScene(stage,scene2)); 140 }else { 141 sentcnt=1; 142 sentence="2Pの番です"; 143 btn2.setOnMouseClicked(event -> setScene(stage,scene3)); 144 } 145 //★ 146 Button btn3 = new Button("左を動かす"); 147 btn3.setFont(new Font(15)); 148 //駒数が0 149 if(BOXs[2]==0) { 150 sentence="1Pの番です(駒数が0のマスは選べません)"; 151 btn3.setOnMouseClicked(event -> setScene(stage,scene2)); 152 } 153 //ゲーム処理 154 btn3.setOnAction(event -> BOXs=Gamove.Game(2,BOXs[2])); 155 //勝利判定 156 if(BOXs[0]==0&&BOXs[1]==0&&BOXs[2]==0) { 157 btn3.setOnMouseClicked(event -> setScene(stage,scene4)); 158 } 159 //次のターンがどうなるか 160 if(BOXs[8]==1) { 161 sentcnt++; 162 sentence="1Pの番です("+sentcnt+"回目)"; 163 btn3.setOnMouseClicked(event -> setScene(stage,scene2)); 164 }else { 165 sentcnt=1; 166 sentence="2Pの番です"; 167 btn3.setOnMouseClicked(event -> setScene(stage,scene3)); 168 } 169 //★★★ 170 171 GridPane.setConstraints(BX1,1,3); 172 BX1.setPrefSize(150,100); 173 GridPane.setConstraints(BX2,2,3); 174 BX2.setPrefSize(150,100); 175 GridPane.setConstraints(BX3,3,3); 176 BX3.setPrefSize(150,100); 177 GridPane.setConstraints(BX4,4,2); 178 BX4.setPrefSize(150,100); 179 GridPane.setConstraints(BX5,3,1); 180 BX5.setPrefSize(150,100); 181 GridPane.setConstraints(BX6,2,1); 182 BX6.setPrefSize(150,100); 183 GridPane.setConstraints(BX7,1,1); 184 BX7.setPrefSize(150,100); 185 GridPane.setConstraints(BX8,0,2); 186 BX8.setPrefSize(150,100); 187 GridPane.setConstraints(btn1,1,4); 188 btn1.setPrefSize(150,50); 189 GridPane.setConstraints(btn2,2,4); 190 btn2.setPrefSize(150,50); 191 GridPane.setConstraints(btn3,3,4); 192 btn3.setPrefSize(150,50); 193 194 GamePane.getChildren().addAll(BX1,BX2,BX3,BX4,BX5,BX6,BX7,BX8,btn1,btn2,btn3); 195 196 VBox root =new VBox(10); 197 scene2 = new Scene(root); 198 199 Label label=new Label(sentence); 200 label.setFont(new Font(30)); 201 202 label.setPrefSize(1000,30); 203 GamePane.setPrefSize(1000,700); 204 205 root.getChildren().addAll(label,GamePane); 206 } 207 //★2Pの始まり★ 208 public static void Game2Pfirst(Stage stage) { 209 GridPane GamePane=new GridPane(); 210 211 Label BX1,BX2,BX3,BX4,BX5,BX6,BX7,BX8; 212 213 //※※ 214 215 Button btn1 = new Button("右を動かす"); 216 btn1.setFont(new Font(15)); 217 //駒数が0なので戻る 218 if(BOXs[6]==0) { 219 sentence="1Pの番です(駒数が0のマスは選べません)"; 220 btn1.setOnMouseClicked(event -> setScene(stage,scene2)); 221 } 222 //ゲームクラスで処理 223 btn1.setOnAction(event -> BOXs=Gamove.Game(6,BOXs[6])); 224 //勝利判定 225 if(BOXs[0]==0&&BOXs[1]==0&&BOXs[2]==0) { 226 btn1.setOnMouseClicked(event -> setScene(stage,scene5)); 227 } 228 //次のターンがどうなるか調べる 229 if(BOXs[6]==1) { 230 sentcnt++; 231 sentence="2Pの番です("+sentcnt+"回目)"; 232 btn1.setOnMouseClicked(event -> setScene(stage,scene3)); 233 }else { 234 sentcnt=1; 235 sentence="1Pの番です"; 236 btn1.setOnMouseClicked(event -> setScene(stage,scene2)); 237 } 238 //★ 239 Button btn2 = new Button("中央を動かす"); 240 btn2.setFont(new Font(15)); 241 //駒数が0なので戻る 242 if(BOXs[5]==0) { 243 sentence="1Pの番です(駒数が0のマスは選べません)"; 244 btn2.setOnMouseClicked(event -> setScene(stage,scene2)); 245 } 246 //ゲームクラスで処理 247 btn2.setOnAction(event -> BOXs=Gamove.Game(5,BOXs[5])); 248 //勝利判定 249 if(BOXs[0]==0&&BOXs[1]==0&&BOXs[2]==0) { 250 btn2.setOnMouseClicked(event -> setScene(stage,scene5)); 251 } 252 //次のターンがどうなるか調べる 253 if(BOXs[8]==1) { 254 sentcnt++; 255 sentence="2Pの番です("+sentcnt+"回目)"; 256 btn2.setOnMouseClicked(event -> setScene(stage,scene3)); 257 }else { 258 sentcnt=1; 259 sentence="1Pの番です"; 260 btn2.setOnMouseClicked(event -> setScene(stage,scene2)); 261 } 262 //★ 263 Button btn3 = new Button("左を動かす"); 264 btn3.setFont(new Font(15)); 265 //駒数が0なので戻る 266 if(BOXs[4]==0) { 267 sentence="1Pの番です(駒数が0のマスは選べません)"; 268 btn3.setOnMouseClicked(event -> setScene(stage,scene2)); 269 } 270 //ゲームクラスで処理 271 btn3.setOnAction(event -> BOXs=Gamove.Game(4,BOXs[4])); 272 //勝利判定 273 if(BOXs[0]==0&&BOXs[1]==0&&BOXs[2]==0) { 274 btn2.setOnMouseClicked(event -> setScene(stage,scene5)); 275 } 276 //次のターンがどうなるか調べる 277 if(BOXs[8]==1) { 278 sentcnt++; 279 sentence="2Pの番です("+sentcnt+"回目)"; 280 btn3.setOnMouseClicked(event -> setScene(stage,scene3)); 281 }else { 282 sentcnt=1; 283 sentence="1Pの番です"; 284 btn3.setOnMouseClicked(event -> setScene(stage,scene2)); 285 } 286 287 GridPane.setConstraints(BX1,1,3); 288 BX1.setPrefSize(150,100); 289 GridPane.setConstraints(BX2,2,3); 290 BX2.setPrefSize(150,100); 291 GridPane.setConstraints(BX3,3,3); 292 BX3.setPrefSize(150,100); 293 GridPane.setConstraints(BX4,4,2); 294 BX4.setPrefSize(150,100); 295 GridPane.setConstraints(BX5,3,1); 296 BX5.setPrefSize(150,100); 297 GridPane.setConstraints(BX6,2,1); 298 BX6.setPrefSize(150,100); 299 GridPane.setConstraints(BX7,1,1); 300 BX7.setPrefSize(150,100); 301 GridPane.setConstraints(BX8,0,2); 302 BX8.setPrefSize(150,100); 303 GridPane.setConstraints(btn1,1,0); 304 btn1.setPrefSize(150,50); 305 GridPane.setConstraints(btn2,2,0); 306 btn2.setPrefSize(150,50); 307 GridPane.setConstraints(btn3,3,0); 308 btn3.setPrefSize(150,50); 309 310 GamePane.getChildren().addAll(BX1,BX2,BX3,BX4,BX5,BX6,BX7,BX8,btn1,btn2,btn3); 311 312 VBox root =new VBox(10); 313 scene3 = new Scene(root); 314 315 Label label=new Label(sentence); 316 label.setFont(new Font(30)); 317 318 label.setPrefSize(1000,30); 319 GamePane.setPrefSize(1000,700); 320 321 root.getChildren().addAll(label,GamePane); 322 } 323 324 public static void setScene(Stage stage,Scene changeScene) { 325 stage.setScene(changeScene); 326 stage.show(); 327 } 328 public static void main(String[] args) { 329 launch(); 330 } 331}
TN8001, DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

★★★のところのifですが最初(Game1Pfirstを呼んだとき)の1回しか通りません。
ボタンを押したときの処理ですから、

Java

1Button btn1 = new Button("右を動かす"); 2btn1.setFont(new Font(15)); 3btn1.setOnAction(e -> { 4 //駒数が0 5 if (BOXs[0] == 0) { 6 sentence = "1Pの番です(駒数が0のマスは選べません)"; 7 label.setText(sentence); 8// setScene(stage, scene2); 9 return; 10 } 11 12 //ゲーム処理 13 BOXs = Gamove.Game(0, BOXs[0]); 14 BX1.setText(String.valueOf(BOXs[0])); 15 BX2.setText(String.valueOf(BOXs[1])); 16 BX3.setText(String.valueOf(BOXs[2])); 17 BX4.setText(String.valueOf(BOXs[3])); 18 BX5.setText(String.valueOf(BOXs[4])); 19 BX6.setText(String.valueOf(BOXs[5])); 20 BX7.setText(String.valueOf(BOXs[6])); 21 BX8.setText(String.valueOf(BOXs[7])); 22 23 //勝利判定 24 if (BOXs[0] == 0 && BOXs[1] == 0 && BOXs[2] == 0) { 25 setScene(stage, scene4); 26 return; 27 } 28 //次のターンがどうなるか 29 if (BOXs[8] == 1) { 30 sentcnt++; 31 sentence = "1Pの番です(" + sentcnt + "回目)"; 32 label.setText(sentence); 33// setScene(stage, scene2); 34 return; 35 } else { 36 sentcnt = 1; 37 sentence = "2Pの番です"; 38// label.setText(sentence); 39 setScene(stage, scene3); 40 return; 41 } 42});

こういった感じになるはずです。

しかしGame1PfirstBX1Game2PfirstBX1は別物なので、シーンが変わったときに値が反映されません。
シーンを分けずにボタンの表示非表示で、手番を表現したほうが楽かなと思います。


追記 参考コード

  • BX1をbox0に、btn1をbtn0に変更(BOXsと対応する数字に合わせる&文字数を揃える)
  • 冗長なコントロールの設定をforで圧縮
  • setOnActionが行数を食うので全部共通化
  • Gamoveのstaticをやめて引っ張られていたメンバもインスタンスフィールドに
  • Gamove.Gameをvoidに(どうせBOXsいじれちゃうので)
  • ゲーム画面中で完結しそうなのでSceneは使わない(タイトル画面等全然関連しない画面ならシーンを分けるんでしょうけど、勝利画面はマスを残したいんですよね?)

LabelやButtonを配列でメンバに持てば、もうちょっとすっきりするかもしれないが、本題には関係しないのでやめた(初期化部分であまりにも面倒なところだけ、一時的に配列を使用)

Gamoveの連続移動の判定(BOXs[8])がうまく動いていないように思うが、
(「for(;move!=0;)なのでif(i==3&&move==0)は絶対来ないよ」と、IDEが教えてくれていました)
頭がよくないので考えるのをやめたw

Java

1import javafx.application.Application; 2import javafx.event.ActionEvent; 3import javafx.geometry.Pos; 4import javafx.scene.Parent; 5import javafx.scene.Scene; 6import javafx.scene.control.Button; 7import javafx.scene.control.Control; 8import javafx.scene.control.Label; 9import javafx.scene.layout.GridPane; 10import javafx.scene.layout.VBox; 11import javafx.scene.text.Font; 12import javafx.stage.Stage; 13 14public class JavaFXPlactice extends Application { 15 16 private int sentcnt; 17 private int[] BOXs = { 3, 3, 3, 0, 3, 3, 3, 0, 0 }; 18 19 private Label label = new Label(); 20 21 private Label box0 = new Label(); 22 private Label box1 = new Label(); 23 private Label box2 = new Label(); 24 private Label box3 = new Label(); 25 private Label box4 = new Label(); 26 private Label box5 = new Label(); 27 private Label box6 = new Label(); 28 private Label box7 = new Label(); 29 30 private Button btn0 = new Button("左を動かす"); // 1P 31 private Button btn1 = new Button("中央を動かす"); 32 private Button btn2 = new Button("右を動かす"); 33 private Button btn4 = new Button("左を動かす"); // 2P 34 private Button btn5 = new Button("中央を動かす"); 35 private Button btn6 = new Button("右を動かす"); 36 37 private Gamove gamove = new Gamove(); 38 39 class Gamove { 40 void Game(int bn, int move) { 41 42 //初期値設定 43 BOXs[8] = 0; 44 int i = bn; 45 //1マス先から置くので 46 i++; 47 48 //駒を進める 49 do { 50 for (; move != 0 && i < 8; move--, i++) { 51 BOXs[i]++; 52 if (i == 3 && move == 0) { 53 BOXs[8] = 1; 54 } 55 System.out.println("move:" + move); 56 System.out.println("i:" + i); 57 } 58 if (!(i == 7 && move == 0)) { 59 BOXs[8] = 1; 60 } 61 //一周するため 62 if (move >= 1) { 63 i = 0; 64 System.out.println("i,reset:" + i); 65 } 66 //もう一周? 67 } while (move != 0); 68 69 BOXs[bn] = 0; 70 71 //★テスト用★ 72 for (int j = 0; j < 8; j++) { 73 System.out.println("box" + j + "マス:" + BOXs[j]); 74 } 75 System.out.println("bn:" + bn); 76 } 77 } 78 79 80 @Override 81 public void start(Stage stage) { 82 83 stage.setTitle("マンカラゲーム"); 84 stage.setWidth(1000); 85 stage.setHeight(800); 86 87 stage.setScene(new Scene(getGamePane())); 88 stage.show(); 89 90 updateUI(); 91 p1Turn(); 92 } 93 94 //★ゲームパネル★ 95 private Parent getGamePane() { 96 97 label.setFont(new Font(30)); 98 label.setPrefSize(1000, 30); 99 100 Label[] boxes = { box0, box1, box2, box3, box4, box5, box6, box7 }; 101 for (Label l : boxes) { // 長くなるので一時的に配列に入れループでセット 102 l.setFont(new Font(25)); 103 l.setPrefSize(150, 100); 104 l.setAlignment(Pos.CENTER); 105 } 106 107 Button[] btns = { btn0, btn1, btn2, btn4, btn5, btn6 }; 108 for (Button b : btns) { 109 b.setFont(new Font(15)); 110 b.setPrefSize(150, 50); 111 b.setOnAction(this::onButtonAction); // b.setOnAction(e->onButtonAction(e)) 112 } 113 114 Control[][] controls = { // たいして短くなっていないが、場所の対応がわかりやすい 115 { null, btn6, btn5, btn4, null, }, 116 { null, box6, box5, box4, null, }, 117 { box7, null, null, null, box3, }, 118 { null, box0, box1, box2, null, }, 119 { null, btn0, btn1, btn2, null, }, 120 }; 121 for (int row = 0; row < controls.length; row++) { 122 for (int col = 0; col < controls[0].length; col++) { 123 if (controls[row][col] == null) continue; 124 GridPane.setConstraints(controls[row][col], col, row); 125 } 126 } 127 128 GridPane GamePane = new GridPane(); 129 GamePane.setPrefSize(1000, 700); 130 131 GamePane.getChildren().addAll(boxes); 132 GamePane.getChildren().addAll(btns); 133 134 VBox root = new VBox(10); 135 root.getChildren().addAll(label, GamePane); 136 137 return root; 138 } 139 140 private void updateUI() { 141 box0.setText(String.valueOf(BOXs[0])); 142 box1.setText(String.valueOf(BOXs[1])); 143 box2.setText(String.valueOf(BOXs[2])); 144 box3.setText(String.valueOf(BOXs[3])); 145 box4.setText(String.valueOf(BOXs[4])); 146 box5.setText(String.valueOf(BOXs[5])); 147 box6.setText(String.valueOf(BOXs[6])); 148 box7.setText(String.valueOf(BOXs[7])); 149 150 btn0.setDisable(BOXs[0] == 0); // 移動できないボタンは押せないようにする 151 btn1.setDisable(BOXs[1] == 0); 152 btn2.setDisable(BOXs[2] == 0); 153 btn4.setDisable(BOXs[4] == 0); 154 btn5.setDisable(BOXs[5] == 0); 155 btn6.setDisable(BOXs[6] == 0); 156 } 157 158 // ボタンを押したとき 全部共通 159 private void onButtonAction(ActionEvent actionEvent) { 160 Button b = (Button) actionEvent.getSource(); // 押されたボタン 161 if (b == btn0) gamove.Game(0, BOXs[0]); 162 if (b == btn1) gamove.Game(1, BOXs[1]); 163 if (b == btn2) gamove.Game(2, BOXs[2]); 164 if (b == btn4) gamove.Game(4, BOXs[4]); 165 if (b == btn5) gamove.Game(5, BOXs[5]); 166 if (b == btn6) gamove.Game(6, BOXs[6]); 167 updateUI(); 168 169 if (b == btn0 || b == btn1 || b == btn2) { // 1P 170 if (BOXs[0] == 0 && BOXs[1] == 0 && BOXs[2] == 0) { 171 p1Win(); 172 } else if (BOXs[8] == 1) { 173 sentcnt++; 174 label.setText("1Pの番です(" + sentcnt + "回目)"); 175 } else { 176 sentcnt = 1; 177 p2Turn(); 178 } 179 } else if (b == btn4 || b == btn5 || b == btn6) { // 2P 180 if (BOXs[4] == 0 && BOXs[5] == 0 && BOXs[6] == 0) { 181 p2Win(); 182 } else if (BOXs[8] == 1) { 183 sentcnt++; 184 label.setText("2Pの番です(" + sentcnt + "回目)"); 185 } else { 186 sentcnt = 1; 187 p1Turn(); 188 } 189 } 190 } 191 192 // 1Pの勝利 193 private void p1Win() { 194 label.setText("1Pが勝利しました"); 195 btn0.setDisable(true); 196 btn1.setDisable(true); 197 btn2.setDisable(true); 198 btn4.setDisable(true); 199 btn5.setDisable(true); 200 btn6.setDisable(true); 201 } 202 203 // 2Pの勝利 204 private void p2Win() { 205 label.setText("2Pが勝利しました"); 206 btn0.setDisable(true); 207 btn1.setDisable(true); 208 btn2.setDisable(true); 209 btn4.setDisable(true); 210 btn5.setDisable(true); 211 btn6.setDisable(true); 212 } 213 214 // 1Pのターン 215 private void p1Turn() { 216 label.setText("1Pの番です"); 217 btn0.setVisible(true); 218 btn1.setVisible(true); 219 btn2.setVisible(true); 220 btn4.setVisible(false); 221 btn5.setVisible(false); 222 btn6.setVisible(false); 223 } 224 225 // 2Pのターン 226 private void p2Turn() { 227 label.setText("2Pの番です"); 228 btn0.setVisible(false); 229 btn1.setVisible(false); 230 btn2.setVisible(false); 231 btn4.setVisible(true); 232 btn5.setVisible(true); 233 btn6.setVisible(true); 234 } 235 236// public static void setScene(Stage stage, Scene changeScene) { 237// stage.setScene(changeScene); 238// stage.show(); 239// } 240 241 public static void main(String[] args) { 242 launch(); 243 } 244}

投稿2020/01/11 09:04

編集2020/01/13 01:01
TN8001

総合スコア9244

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

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

AGUA_Channel

2020/01/13 09:30 編集

ご丁寧な解説ありがとうございます。おかげさまでBXに関する問題は解決することができました。 あとはGameクラスを正しく設定できれば完成ですね・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問