나는 간단한 격자 해적 게임을 코딩 해왔다. 나는 플레이어에게 쉽고 어려운 라벨이 붙은 두 개의 버튼이있는 스크린을 보여주기를 바란다. 버튼을 눌렀을 때 화면이 닫히고 다른 크기의 그리드가있는 새 창이 열립니다. 현재 코드는 열심히 설정하고 쉽게 두 개씩 두 개씩 코딩하려는 3 x 3 격자로 작성되었습니다. 내가 문제가되는 것은 다른 gui를 넣기위한 새로운 방법을 선언하는 것입니다. 이미 가지고있는 것과 분리됩니다. 모든 제안/솔루션을 크게 주시면 감사하겠습니다. 스타터내 간단한 게임의 난이도 설정하기
import java.awt.*;
import javax.swing.*;
import javax.swing.Timer;
import java.util.*;
import java.awt.event.*;
public class PirateGame extends JFrame implements ActionListener {
JLabel label1, label2, label3;
ImageIcon image1, image2, image3, image4, image5;
JTextField textResult;
JButton [] buttons;
int treasureLocation;
int clicks = 0;
public int count = 0;
public static void main(String[] args){
new PirateGame();
}
public PirateGame(){
this.setSize(700,700);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Treasure Hunt Game");
JPanel thePanel = new JPanel();
thePanel.setLayout(new GridLayout(0,3,0,0));
image1 = new ImageIcon(getClass().getResource("Treasure.jpg"));
image2 = new ImageIcon(getClass().getResource("Pirate.jpg"));
image3 = new ImageIcon(getClass().getResource("sand2.jpg"));
image4 = new ImageIcon(getClass().getResource("emptyhole.jpg"));
image5 = new ImageIcon(getClass().getResource("map.jpg"));
label1 = new JLabel("Click the buttons!");
label1.setFont(new Font("Serif", Font.PLAIN, 20));
label1.setForeground(Color.red);
label2 = new JLabel(image5);
label3 = new JLabel(image2);
buttons = new JButton[9];
buttons[0] = new JButton(image3);
buttons[1] = new JButton(image3);
buttons[2] = new JButton(image3);
buttons[3] = new JButton(image3);
buttons[4] = new JButton(image3);
buttons[5] = new JButton(image3);
buttons[6] = new JButton(image3);
buttons[7] = new JButton(image3);
buttons[8] = new JButton(image3);
thePanel.add(buttons[0]);
thePanel.add(buttons[1]);
thePanel.add(buttons[2]);
thePanel.add(buttons[3]);
thePanel.add(buttons[4]);
thePanel.add(buttons[5]);
thePanel.add(buttons[6]);
thePanel.add(buttons[7]);
thePanel.add(buttons[8]);
thePanel.add(label1);
thePanel.add(label2);
thePanel.add(label3);
buttons[0].addActionListener(this);
buttons[1].addActionListener(this);
buttons[2].addActionListener(this);
buttons[3].addActionListener(this);
buttons[4].addActionListener(this);
buttons[5].addActionListener(this);
buttons[6].addActionListener(this);
buttons[7].addActionListener(this);
buttons[8].addActionListener(this);
this.add(thePanel);
this.setVisible(true);
treasureLocation = new Random().nextInt(buttons.length);
System.out.println(treasureLocation);
}
public void actionPerformed(ActionEvent evt){
Object source = evt.getSource();
if (source == buttons[treasureLocation]) {
buttons[treasureLocation].setIcon(image1);
label1.setText("You've found me Treasure!");
Timer timer = new Timer(3000,
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
PirateGame.this.setVisible(false);
PirateGame.this.dispose();
new PirateGame();
}
});
timer.setRepeats(false);
timer.start();
}
else
{((JButton)source).setIcon(image4);
label1.setText("Keep tryin' ARGG!");
}
clicks++;
System.out.println(clicks);
if ((clicks == 5) && (source != buttons[treasureLocation])){
label1.setText("One more try Matey!");
}
if ((clicks == 6) && (source != buttons[treasureLocation])) {
label1.setText("Walk the Plank!");
Timer timer2 = new Timer(3000,
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
PirateGame.this.setVisible(false);
PirateGame.this.dispose();
new PirateGame();
}
});
timer2.setRepeats(false);
timer2.start();
}
if (clicks == 7){
PirateGame.this.setVisible(false);
PirateGame.this.dispose();
new PirateGame();
}
}
}