前提・実現したいこと
現在コードブレイカーというゲームを作成しております。 簡単に言いますと隠された3つの数字を当てるゲームです。 その中の処理でfor文を使い、入力された数字とプログラムで作られたランダムの数字を 当てていくところがあるのですが 何度目の挑戦か(入力した回数)を表示させたいです。 その中で挑戦回数を指定できるようにも指定したいと考えています。
該当のソースコード
package aaa; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class GameScreen extends JFrame implements ActionListener { int answer[]= new int[3]; int count = 0, hit =0 ,blow =0; JComboBox<Integer> btn1 = new JComboBox<Integer>(); JComboBox<Integer> btn2 = new JComboBox<Integer>(); JComboBox<Integer> btn3 = new JComboBox<Integer>(); public void init() { this.setTitle("game"); //フレームの設定(タイトル・サイズ・位置 this.setTitle("game"); this.setBounds(100, 100, 400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel ps = new JPanel(); JPanel pn = new JPanel(); JLabel label1 = new JLabel("?"); JLabel label2 =new JLabel("?"); JLabel label3 =new JLabel("?"); JLabel label4 = new JLabel(""); JLabel label5 = new JLabel(""); label4.setText(String.valueOf(hit)); label5.setText(String.valueOf(blow)); pn.add(label1); pn.add(label2); pn.add(label3); this.getContentPane().add(pn,BorderLayout.NORTH); ps.add(label4); ps.add(label5); this.getContentPane().add(ps,BorderLayout.SOUTH); for(int i=1; i<=6; i++) { btn1.addItem(i); btn2.addItem(i); btn3.addItem(i); } JButton btn4 = new JButton("チェック"); btn4.addActionListener(this); ps.add(btn1); ps.add(btn2); ps.add(btn3); ps.add(btn4); this.getContentPane().add(ps,BorderLayout.SOUTH); this.setVisible(true); for (int i = 0; i < answer.length; i++) { boolean sw = false; answer[i] = (int) (Math.random() * 6 + 1); do { sw = false; for (int j = i - 1; j >= 0; j--) { if (answer[i] == answer[j]) { sw= true; answer[i] = (int) (Math.random() * 6 + 1); } } } while (sw == true); } } @Override public void actionPerformed(ActionEvent e) { // TODO 自動生成されたメソッド・スタブ JButton btn = (JButton)e.getSource(); String txt = btn.getText(); if (txt.equals("チェック")) { //入力された値を取り出す Integer data1 = (Integer)btn1.getSelectedItem(); Integer data2 = (Integer)btn2.getSelectedItem(); Integer data3 = (Integer)btn3.getSelectedItem(); //答えの数字3つと、入力された数字3つを答え合わせする。 //配列設定 int datas [] = new int[3]; datas[0] = data1; datas[1] = data2; datas[2] = data3; hit = 0; blow = 0; count = 0; for (int i = 0; i < answer.length; i++) { for (int j = 0; j < answer.length; j++) { if (i == j && datas[i] == answer[j]) { hit++; } else if (datas[i] == answer[j]) { blow++; } } } } System.out.println("ヒット" + hit + " ブロー" + blow+" 回数"+count); if (hit == 3) { creen cls = new ClearScreen(); cls.init();//初期化。 } } }
試したこと
参考書などを読んで試してみましたが思うような結果になりません。
forやwhileを使ってみてもcountに入ってくるのは
繰り返した回数ではありませんでした。
補足情報(FW/ツールのバージョンなど)
eclipse2019_09
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー