Java でクラス プロジェクト用の単純なじゃんけん GUI ゲームを作成します。
MVC 方法論を使用しようとして、resultsGUI()
以下のコードを「コントローラー」クラスから「ビュー」クラスに移動しました。
Controller クラスで View クラスのインスタンスを作成し、次のようにメソッドを呼び出してみview.resultsGUI();
ましたが、コンパイラで例外エラーがスローされました。
resultsGUI
View クラスにあるメソッドを呼び出してchooseWinner()
、コードが の一部であったときのように、メソッドの下部 (以下も)で実行するにはどうすればよいchooseWinner()
ですか?
私は初心者で、助けに感謝します。
以下の chooseWinner メソッド:
public static void chooseWinner(int x) {
playerChoice = x;
String winningCombo = "" + Math.min(compChoice, playerChoice)
+ Math.max(compChoice, playerChoice);
switch (Integer.parseInt(winningCombo)) {
case 1:
text = "Paper wins!";
if (playerChoice == 2) {
playerWon = 1;
}
break;
case 2:
text = "Rock wins!";
if (playerChoice == 1) {
playerWon = 1;
}
break;
case 3:
text = "Scissors wins!";
if (playerChoice == 3) {
playerWon = 1;
}
break;
}
if (playerWon == 1) {
text1 = "Congrats, you win!";
playerWon = 0;
win = win + 1;
total = total + 1;
} else if (playerWon == 2) {
text1 = "It's a tie!";
playerWon = 0;
} else {
text1 = "Computer wins!";
total = total + 1;
}
}
以下の resultsGUI メソッド: public void resultsGUI() { JFrame rFrame = new JFrame("Match Results"); コンテナ パネル = rFrame.getContentPane(); panel.setLayout(null);
JLabel l0 = new JLabel(controller.text1 + controller.text);
l0.setBounds(75, 10, 300, 35);
panel.add(l0);
//show the result in a new splash screen
JLabel l1 = new JLabel("Human's Choice");
l1.setBounds(40, 35, 150, 35);
panel.add(l1);
JLabel l2 = new JLabel("Computer's Choice");
l2.setBounds(215, 35, 150, 35);
panel.add(l2);
JLabel l3 = new JLabel(new ImageIcon(System.getProperty("user.dir") + "/image/" + (controller.playerChoice - 1) + ".jpg"));
l3.setBounds(10, 100, 170, 60);
panel.add(l3);
JLabel l4 = new JLabel(new ImageIcon(System.getProperty("user.dir") + "/image/" + (controller.compChoice - 1) + ".jpg"));
l4.setBounds(200, 100, 170, 60);
panel.add(l4);
JLabel l5 = new JLabel("Win/Loss rate: " + controller.win + "/" + controller.total);
l5.setBounds(125, 25, 150, 350);
panel.add(l5);
JLabel l6 = new JLabel("Tie: " + controller.tie);
l6.setBounds(125, 30, 125, 370);
panel.add(l6);
rFrame.setSize(400, 270);
rFrame.setVisible(true);
}