前提・実現したいこと
Eclipseで作成したプログラムです
最初のコードの結果に応じてp1Turn()から始めるかp2Turn()から始めるか、といったプログラムを作ろうと試みています。
最初のサイコロ画面を表示→p1が大きければp1Turn(),p2が大きければp2Turn()で始まる
といった感じにしたいのですがどのようにすればよいか分かりません。
どうかご教授お願い致します。
発生している問題・エラーメッセージ
双方コンパイルエラー無し 下のコードはimport文を省略していますが正しいものが使われている前提でお答えください。
該当のソースコード
java
1public class RPSandMancala extends Application { 2 3 //シーンの宣言 4 public static Scene scene1 = null; 5 6 //グローバル変数 7 public static String ps1,ps2; 8 public static int p1=0,p2=0; 9 10 @Override 11 public void start(Stage stage)throws Exception { 12 13 //サイコロ 14 while(p1==p2) { 15 p1=(int)(Math.random()*6)+1; 16 p2=(int)(Math.random()*6)+1; 17 } 18 ps1 = String.valueOf(p1); 19 ps2 = String.valueOf(p2); 20 21 stage.setTitle("マンカラゲーム"); 22 23 // ステージの作成 24 First(stage); 25 26 stage.setScene(scene1); 27 stage.show(); 28 } 29 30 //★最初のサイコロ画面★ 31 public static void First(Stage stage) { 32 GridPane MainPane=new GridPane(); 33 34 Label lbl1=new Label("1P"); 35 lbl1.setFont(new Font(25)); 36 Label lbl2=new Label("2P"); 37 lbl2.setFont(new Font(25)); 38 39 Label pn1 = new Label(" "+ps1); 40 pn1.setFont(new Font(25)); 41 pn1.setPrefSize(100,30); 42 Label pn2 = new Label(" "+ps2); 43 pn2.setFont(new Font(25)); 44 pn2.setPrefSize(100,30); 45 46 Button btn = new Button("ゲームへ"); 47 btn.setFont(new Font(25)); 48 btn.setPrefSize(150,50); 49 50 GridPane.setConstraints(lbl1,0,0); 51 GridPane.setConstraints(lbl2,1,0); 52 GridPane.setConstraints(pn1,0,1); 53 GridPane.setConstraints(pn2,1,1); 54 GridPane.setConstraints(btn,2,2); 55 56 MainPane.getChildren().addAll(lbl1,lbl2,pn1,pn2,btn); 57 58 VBox root =new VBox(10); 59 scene1 = new Scene(root); 60 61 Label label=new Label("数値の大きいほうが先攻となります"); 62 label.setFont(new Font(30)); 63 64 label.setPrefSize(1000,30); 65 MainPane.setPrefSize(1000,700); 66 67 root.getChildren().addAll(label,MainPane); 68 } 69 //★最初のサイコロ画面★ 70 public static void setScene(Stage stage,Scene changeScene) { 71 stage.setScene(changeScene); 72 stage.show(); 73 } 74 public static void main(String[] args) { 75 // TODO 自動生成されたメソッド・スタブ 76 launch(); 77 } 78}
java
1public class JavaFXPlactice2 extends Application { 2 3 private int sentcnt; 4 private int[] BOXs = { 3, 3, 3, 0, 3, 3, 3, 0 }; 5 private boolean OneMore=false; 6 private ImageView mv1,mv2; 7 8 private Label label = new Label(); 9 10 private Label box0 = new Label(); 11 private Label box1 = new Label(); 12 private Label box2 = new Label(); 13 private Label box3 = new Label(); 14 private Label box4 = new Label(); 15 private Label box5 = new Label(); 16 private Label box6 = new Label(); 17 private Label box7 = new Label(); 18 19 private Button btn0 = new Button("左を動かす"); // 1P 20 private Button btn1 = new Button("中央を動かす"); 21 private Button btn2 = new Button("右を動かす"); 22 private Button btn4 = new Button("右を動かす"); // 2P 23 private Button btn5 = new Button("中央を動かす"); 24 private Button btn6 = new Button("左を動かす"); 25 26 private Gamove gamove = new Gamove(); 27 28 class Gamove { 29 void Game(int bn, int move) { 30 31 //初期値設定 32 OneMore=false; 33 int i = bn; 34 //1マス先から置くので 35 i++; 36 37 //駒を進める 38 do { 39 for (; move != 0 && i < 8; move--, i++) { 40 BOXs[i]++; 41 if (i == 3 && move == 1) { 42 OneMore=true; 43 } 44 if (i == 7 && move == 1) { 45 OneMore=true; 46 } 47 System.out.println("move:" + move); 48 System.out.println("i:" + i); 49 } 50 //一周するため 51 if (move >= 1) { 52 i = 0; 53 System.out.println("i,reset:" + i); 54 } 55 //もう一周? 56 } while (move != 0); 57 58 BOXs[bn] = 0; 59 60 //★テスト用★ 61 for (int j = 0; j < 8; j++) { 62 System.out.println("box" + j + "マス:" + BOXs[j]); 63 } 64 System.out.println("bn:" + bn); 65 System.out.println("★★OneMore:" + OneMore+"★★"); 66 67 } 68 } 69 70 71 @Override 72 public void start(Stage stage) { 73 74 stage.setTitle("マンカラゲーム"); 75 stage.setWidth(800); 76 stage.setHeight(600); 77 78 stage.setScene(new Scene(getGamePane())); 79 stage.setResizable(false); 80 stage.show(); 81 82 updateUI(); 83 p1Turn(); 84 } 85 86 //★ゲームパネル★ 87 private Parent getGamePane() { 88 89 label.setFont(new Font(30)); 90 label.setPrefSize(800, 30); 91 92 Label[] boxes = { box0, box1, box2, box3, box4, box5, box6, box7 }; 93 for (Label l : boxes) { // 長くなるので一時的に配列に入れループでセット 94 l.setFont(new Font(25)); 95 l.setPrefSize(150, 100); 96 l.setAlignment(Pos.CENTER); 97 } 98 99 Button[] btns = { btn0, btn1, btn2, btn4, btn5, btn6 }; 100 for (Button b : btns) { 101 b.setFont(new Font(15)); 102 b.setPrefSize(150, 50); 103 b.setOnAction(this::onButtonAction); // b.setOnAction(e->onButtonAction(e)) 104 } 105 106 Control[][] controls = { // たいして短くなっていないが、場所の対応がわかりやすい 107 { null, btn6, btn5, btn4, null, }, 108 { null, box6, box5, box4, null, }, 109 { box7, null, null, null, box3, }, 110 { null, box0, box1, box2, null, }, 111 { null, btn0, btn1, btn2, null, }, 112 }; 113 for (int row = 0; row < controls.length; row++) { 114 for (int col = 0; col < controls[0].length; col++) { 115 if (controls[row][col] == null) continue; 116 GridPane.setConstraints(controls[row][col], col, row); 117 } 118 } 119 120 GridPane GamePane = new GridPane(); 121 GamePane.setPrefSize(1000, 700); 122 123 GamePane.getChildren().addAll(boxes); 124 GamePane.getChildren().addAll(btns); 125 126 VBox Window = new VBox(10); 127 Window.getChildren().addAll(label, GamePane); 128 129 //背景 130 Image image1=new Image("file:C:/paint.png"); 131 mv1=new ImageView(image1); 132 Image image2=new Image("file:C:/paint2.png"); 133 mv2=new ImageView(image2); 134 135 Group root=new Group(); 136 root.getChildren().addAll(mv1,mv2,Window); 137 138 return root; 139 } 140 141 private void updateUI() { 142 box0.setText(String.valueOf(BOXs[0])); 143 box1.setText(String.valueOf(BOXs[1])); 144 box2.setText(String.valueOf(BOXs[2])); 145 box3.setText(String.valueOf(BOXs[3])); 146 box4.setText(String.valueOf(BOXs[4])); 147 box5.setText(String.valueOf(BOXs[5])); 148 box6.setText(String.valueOf(BOXs[6])); 149 box7.setText(String.valueOf(BOXs[7])); 150 151 btn0.setDisable(BOXs[0] == 0); // 移動できないボタンは押せないようにする 152 btn1.setDisable(BOXs[1] == 0); 153 btn2.setDisable(BOXs[2] == 0); 154 btn4.setDisable(BOXs[4] == 0); 155 btn5.setDisable(BOXs[5] == 0); 156 btn6.setDisable(BOXs[6] == 0); 157 } 158 159 // ボタンを押したとき 全部共通 160 private void onButtonAction(ActionEvent actionEvent) { 161 Button b = (Button) actionEvent.getSource(); // 押されたボタン 162 if (b == btn0) gamove.Game(0, BOXs[0]); 163 if (b == btn1) gamove.Game(1, BOXs[1]); 164 if (b == btn2) gamove.Game(2, BOXs[2]); 165 if (b == btn4) gamove.Game(4, BOXs[4]); 166 if (b == btn5) gamove.Game(5, BOXs[5]); 167 if (b == btn6) gamove.Game(6, BOXs[6]); 168 updateUI(); 169 170 if (b == btn0 || b == btn1 || b == btn2) { // 1P 171 if (BOXs[0] == 0 && BOXs[1] == 0 && BOXs[2] == 0) { 172 173 p1Win(); 174 } else if (OneMore==true) { 175 sentcnt++; 176 label.setText("1Pの番です(" + sentcnt + "回目)"); 177 } else { 178 sentcnt = 1; 179 p2Turn(); 180 } 181 } else if (b == btn4 || b == btn5 || b == btn6) { // 2P 182 if (BOXs[4] == 0 && BOXs[5] == 0 && BOXs[6] == 0) { 183 p2Win(); 184 } else if (OneMore==true) { 185 sentcnt++; 186 label.setText("2Pの番です(" + sentcnt + "回目)"); 187 } else { 188 sentcnt = 1; 189 p1Turn(); 190 } 191 } 192 } 193 194 // 1Pの勝利 195 private void p1Win() { 196 label.setText("1Pが勝利しました"); 197 btn0.setDisable(true); 198 btn1.setDisable(true); 199 btn2.setDisable(true); 200 btn4.setDisable(true); 201 btn5.setDisable(true); 202 btn6.setDisable(true); 203 mv1.setVisible(true); 204 mv2.setVisible(false); 205 } 206 207 // 2Pの勝利 208 private void p2Win() { 209 label.setText("2Pが勝利しました"); 210 btn0.setDisable(true); 211 btn1.setDisable(true); 212 btn2.setDisable(true); 213 btn4.setDisable(true); 214 btn5.setDisable(true); 215 btn6.setDisable(true); 216 mv1.setVisible(false); 217 mv2.setVisible(true); 218 } 219 220 // 1Pのターン 221 private void p1Turn() { 222 label.setText("1Pの番です"); 223 btn0.setVisible(true); 224 btn1.setVisible(true); 225 btn2.setVisible(true); 226 btn4.setVisible(false); 227 btn5.setVisible(false); 228 btn6.setVisible(false); 229 mv1.setVisible(false); 230 mv2.setVisible(false); 231 } 232 233 // 2Pのターン 234 private void p2Turn() { 235 label.setText("2Pの番です"); 236 btn0.setVisible(false); 237 btn1.setVisible(false); 238 btn2.setVisible(false); 239 btn4.setVisible(true); 240 btn5.setVisible(true); 241 btn6.setVisible(true); 242 mv1.setVisible(false); 243 mv2.setVisible(false); 244 245 } 246 247 public static void main(String[] args) { 248 launch(); 249 } 250}
回答1件
あなたの回答
tips
プレビュー