前提・実現したいこと
現在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}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/13 09:30 編集