前提・実現したいこと
java勉強中の初心者です。javaで2択のクイズゲームを作っているのですが、クイズは5問あり、ランダムに問題を表示させるようにしました。あと2択のボタンを作り、クイズの内容によって合うテキストに表示するようにしました。(コードは汚いですが、、、)
そしてボタンを押せば、「正解」、「不正解」と表示されるのですが、その後に次の問題が表示されるようにしたいです。
発生している問題・エラーメッセージ
エラーメッセージ 特になし
該当のソースコード
package テスト; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class クイズゲーム implements ActionListener{ public static String a; public static String b; public static String c; public static JLabel lb1; public static JButton bt1,bt2; public static String seikai[] = {"骨川","メロンパン","ラブ","パーソナル","だだんだん"}; public static void main(String[]args){ c = クイズ.kuizurandom(); a = test.buttonrandom(); b = test.buttonrandom2(); GAME gm = new GAME("NOBUクイズ",500,500); bt1 = new JButton(a); bt2 = new JButton(b); lb1 = new JLabel(c); lb1.setHorizontalAlignment(JLabel.CENTER); lb1.setForeground(Color.red); JPanel headerPanel = new JPanel(); headerPanel.setBackground(Color.BLACK); Dimension headerPanelDimension = new Dimension(500,50); headerPanel.setPreferredSize(headerPanelDimension); gm.add(headerPanel,BorderLayout.NORTH); JPanel p = new JPanel(); bt1.addActionListener(e -> { bt1 = (JButton)e.getSource(); String str; str = bt1.getText(); answer(str); ---ここにnextkuizu()を挿入 }); bt2.addActionListener(e ->{ String str2; bt2 = (JButton)e.getSource(); str2 = bt2.getText(); answer(str2); ---ここにnextkuizu()を挿入 }); p.add(bt1); p.add(bt2); gm.add(lb1); gm.add(p,BorderLayout.PAGE_END); } @Override public void actionPerformed(ActionEvent e) { bt1 = (JButton)e.getSource(); String str,str2; str = bt1.getText(); answer(str); ---ここにnextkuizu()を挿入 bt2 = (JButton)e.getSource(); str2 = bt2.getText(); answer(str2); ---ここにnextkuizu()を挿入 } public static void answer(String b){ if(b.equals(seikai[0])){ lb1.setText("正解"); lb1.setForeground(Color.PINK); }else if(b.equals(seikai[1])){ lb1.setText("正解"); lb1.setForeground(Color.PINK); }else if(b.equals(seikai[2])){ lb1.setText("正解"); lb1.setForeground(Color.PINK); }else if(b.equals(seikai[3])){ lb1.setText("正解"); lb1.setForeground(Color.PINK); }else if(b.equals(seikai[4])){ lb1.setText("正解"); lb1.setForeground(Color.PINK); }else{ lb1.setText("不正解"); lb1.setForeground(Color.DARK_GRAY); } } public static void nextkuizu(){ lb1.setText(クイズ.kuizurandom()); bt1.setText(test.buttonrandom()); bt2.setText(test.buttonrandom2()); } }
package テスト; import java.util.Random; public class クイズ{ public static String kuizurandom(){ String[] mondai = new String[5]; mondai[0]="ドラえもんに登場するスネ夫の苗字は?"; mondai[1]="ドラえもんの好物はどら焼き、では妹のドラミちゃんの好物は?"; mondai[2]="硬式テニスで0点の事を2文字で何と言うでしょう?"; mondai[3]="パソコンのコンはコンピュータの略。ではパソの略は?"; mondai[4]="ばいきんまんが愛用しているロボットの名前は?"; Random a = new Random(); return mondai[a.nextInt(5)]; } }
package テスト; import java.util.Random; public class test{ public static String buttonrandom(){ String[] bu = new String[2]; bu[0]="骨川"; bu[1]="馬川"; String[] bu1 = new String[2]; bu1[0]="メロンパン"; bu1[1]="チョコレートパン"; String[] bu2 = new String[2]; bu2[0]="ラブ"; bu2[1]="レイブ"; String[] bu3 = new String[2]; bu3[0]="パーソナル"; bu3[1]="ターミナル"; String[] bu4 = new String[2]; bu4[0]="だだんだん"; bu4[1]="どどんどん"; Random d = new Random(); if(クイズゲーム.c.equals("ドラえもんに登場するスネ夫の苗字は?")){ return bu[d.nextInt(2)]; }else if(クイズゲーム.c.equals("ドラえもんの好物はどら焼き、では妹のドラミちゃんの好物は?")){ return bu1[d.nextInt(2)]; }else if(クイズゲーム.c.equals("硬式テニスで0点の事を2文字で何と言うでしょう?")){ return bu2[d.nextInt(2)]; }else if(クイズゲーム.c.equals("パソコンのコンはコンピュータの略。ではパソの略は?")){ return bu3[d.nextInt(2)]; }else return bu4[d.nextInt(2)]; } public static String buttonrandom2(){ String[] bu = new String[2]; bu[0]="骨川"; bu[1]="馬川"; String[] bu1 = new String[2]; bu1[0]="メロンパン"; bu1[1]="チョコレートパン"; String[] bu2 = new String[2]; bu2[0]="ラブ"; bu2[1]="レイブ"; String[] bu3 = new String[2]; bu3[0]="パーソナル"; bu3[1]="ターミナル"; String[] bu4 = new String[2]; bu4[0]="だだんだん"; bu4[1]="どどんどん"; switch(クイズゲーム.a){ case "骨川": return bu[1]; case "馬川": return bu[0]; case "メロンパン": return bu1[1]; case "チョコレートパン": return bu1[0]; case "ラブ": return bu2[1]; case "レイブ": return bu2[0]; case "パーソナル": return bu3[1]; case "ターミナル": return bu3[0]; case "だだんだん": return bu4[1]; case "どどんどん": return bu4[0]; default: return null; } } }
試したこと
nextkuizuメソッドを作りactionPerformedとActionListenerの処理の後に挿入してみたのですが、ボタンを押すと「正解」「不正解」の文字が出なくなり、クイズは変わるのですが、テキストの色が「正解」の色と同じだったり、ボタンの表示が1パターンだけになったりします。
すいませんが、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー