Java 할당 - Minesweeper 게임 클론에서 작업 중입니다. 게임 끝 부분에 "Game Wow!"/ "Game Lost"창을 표시하는 역할을하는 gameWon() 및 gameLost() 메소드가 거의 동일합니다 (텍스트 레이블과 텍스트 프레임 만 다름). 나는 코드 중복이 좋지 않으므로 그것을 최적화하고 싶다. 문제는 OOP에 다소 익숙해졌으며 실제로 어떻게해야하는지 잘 모르겠다는 것입니다. 어쩌면 나는 여러 가지 상황에서 다르게 행동하거나 어쩌면 상속이 유용 할 수있는 방법으로 하나의 방법으로 병합 할 수 있습니다. 나는 정말로 알지 못한다. 그리고 너희 중의 일부가 나를 조금 도울 수 있기를 바란다. 귀하의 답변에 감사드립니다. 여기 Java OOP 최적화 코드
그 방법의 코드입니다 :gameOver
public static void gameOver() {
F1 = new JFrame("Game Over");
F1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F1.setSize(360, 120);
Container content = F1.getContentPane();
content.setBackground(Color.white);
content.setLayout(new FlowLayout());
JLabel textLabel = new JLabel("Sorry, you have lost this game! Better luck next time.",SwingConstants.CENTER);
textLabel.setPreferredSize(new Dimension(360, 40));
content.add(textLabel, BorderLayout.CENTER);
JButton button = new JButton("Exit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
content.add(button);
button = new JButton("Restart This Game");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
F1.dispose();
Board.doRepaint();
}
});
content.add(button);
button = new JButton("Play Again");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
F1.dispose();
restartGame();
}
});
content.add(button);
F1.setLocationRelativeTo(null);
F1.setVisible(true);
}
gameWon
public static void gameWon() {
F1 = new JFrame("Game Won");
F1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F1.setSize(360, 120);
Container content = F1.getContentPane();
content.setBackground(Color.white);
content.setLayout(new FlowLayout());
JLabel textLabel = new JLabel("Congratulations, you have won the game!",SwingConstants.CENTER);
textLabel.setPreferredSize(new Dimension(360, 40));
content.add(textLabel, BorderLayout.CENTER);
JButton button = new JButton("Exit");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
content.add(button);
button = new JButton("Restart This Game");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
F1.dispose();
Board.doRepaint();
}
});
content.add(button);
button = new JButton("Play Again");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
F1.dispose();
restartGame();
}
});
content.add(button);
F1.setLocationRelativeTo(null);
F1.setVisible(true);
}
두 개의 문자열을 취하는 일반적인 'GameComplete'버전을 만들 수 있습니다. 그러면 동일한 코드를 재사용하고 다른 텍스트를 표시 할 수 있습니다. – Craig