使用一个变量来决定一个 class class Java 中多个 class 的数组长度
using a varible to decide array length for several classes in one class Java
我在记忆游戏中每个级别(简单 4*4,中等 6*4,困难 6*6)做了 3 个 类。它们由相同的代码组成,但数组长度和其他变量的数量不同。我想通过将三个 类 合并为一个来使代码更高效,您有什么建议吗?如果有帮助,我在下面粘贴了三个不同的 类 :)
来自 3 个不同的数组和变量 类:
JButton[] button = new JButton[16];
JButton[] button = new JButton[24];
JButton[] button = new JButton[36];
int[] StoreCards = new int[16];
int[] StoreCards = new int[24];
int[] StoreCards = new int[36];
static int[] card = new int[9];
static int[] card = new int[13];
static int[] card = new int[19];
简单级别:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
class EasyWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton[] button = new JButton[16];
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
int[] StoreCards = new int[16];
static int[] cardChecker = new int[2];
static int[] card = new int[9];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(1, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(4, 4, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 2, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public EasyWindow() {
super("User: " + StartWindow.user + " || Easy Level");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
for (int n = 0; n <= button.length - 1; n++) {
button[n] = new JButton();
Center.add(button[n]);
button[n].addActionListener(this);
button[n].setBackground(Color.white);
}
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
flipped = 3;
Reset();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[15];
while (x < 16) {
number = (int) RandomNumbers.GetRandomNumber(8);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
for (int n = 0; n <= button.length - 1; n++) {
button[n].setIcon(Back);
}
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 16) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
for (int n = 0; n <= button.length; n++) {
if (Button[0] == n || Button[1] == n) {
button[n].setVisible(false);
}
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
for (int n = 0; n <= button.length - 1; n++) {
if (event.getSource() == button[n]) {
int number = StoreCards[n];
button[n].setIcon(new ImageIcon(number + imageType));
Card1and2(number, n);
flipped++;
Reset();
}
}
if (event.getSource() == Celebrities) {
Back = new ImageIcon("ceback.png");
imageType = "c.png";
}
if (event.getSource() == Cities) {
Back = new ImageIcon("ciback.png");
imageType = ".jpg";
}
if (event.getSource() == Memes) {
Back = new ImageIcon("mback.png");
imageType = ".png";
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class EasyLevelWindow {
public static void main(String[] args) {
EasyWindow win = new EasyWindow();
}
中等水平:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
class MediumWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton[] button = new JButton[24];
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
int[] StoreCards = new int[24];
static int[] cardChecker = new int[2];
static int[] card = new int[13];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(2, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(6, 4, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 1, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public MediumWindow() {
super("User: " + StartWindow.user + " || Medium Level");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
for (int n = 0; n <= button.length - 1; n++) {
button[n] = new JButton();
Center.add(button[n]);
button[n].addActionListener(this);
button[n].setBackground(Color.white);
}
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
flipped = 3;
Reset();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[23];
while (x < 24) {
number = (int) RandomNumbers.GetRandomNumber(12);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
for (int n = 0; n <= button.length - 1; n++) {
button[n].setIcon(Back);
}
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 24) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
for (int n = 0; n <= button.length; n++) {
if (Button[0] == n || Button[1] == n) {
button[n].setVisible(false);
}
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
for (int n = 0; n <= button.length - 1; n++) {
if (event.getSource() == button[n]) {
int number = StoreCards[n];
button[n].setIcon(new ImageIcon(number + imageType));
Card1and2(number, n);
flipped++;
Reset();
}
}
if (event.getSource() == Celebrities) {
Back = new ImageIcon("ceback.png");
imageType = "c.png";
}
if (event.getSource() == Cities) {
Back = new ImageIcon("ciback.png");
imageType = ".jpg";
}
if (event.getSource() == Memes) {
Back = new ImageIcon("mback.png");
imageType = ".png";
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class MediumLevelWindow {
public static void main(String[] args) {
MediumWindow win = new MediumWindow();
}
}
困难程度:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
class HardWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton[] button = new JButton[36];
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
int[] StoreCards = new int[36];
static int[] cardChecker = new int[2];
static int[] card = new int[19];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(2, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(6, 6, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 1, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public HardWindow() {
super("User: " + StartWindow.user + " || Hard Level");
setSize(780, 730);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
for (int n = 0; n <= button.length - 1; n++) {
button[n] = new JButton();
Center.add(button[n]);
button[n].addActionListener(this);
button[n].setBackground(Color.white);
}
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
flipped = 3;
Reset();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[35];
while (x < 36) {
number = (int) RandomNumbers.GetRandomNumber(18);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
for (int n = 0; n <= button.length - 1; n++) {
button[n].setIcon(Back);
}
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 36) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
for (int n = 0; n <= button.length; n++) {
if (Button[0] == n || Button[1] == n) {
button[n].setVisible(false);
}
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
for (int n = 0; n <= button.length - 1; n++) {
if (event.getSource() == button[n]) {
int number = StoreCards[n];
button[n].setIcon(new ImageIcon(number + imageType));
Card1and2(number, n);
flipped++;
Reset();
}
}
if (event.getSource() == Celebrities) {
Back = new ImageIcon("ceback.png");
imageType = "c.png";
}
if (event.getSource() == Cities) {
Back = new ImageIcon("ciback.png");
imageType = ".jpg";
}
if (event.getSource() == Memes) {
Back = new ImageIcon("mback.png");
imageType = ".png";
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class HardLevelWindow {
public static void main(String[] args) {
HardWindow win = new HardWindow();
}
}
您可能想使用 ArrayList,像这样:
ArrayList<JButton> buttons = new ArrayList<>();
//...
for (int n = 0; n < boardSize; n++) {
JButton button = new JButton();
buttons.add(button); // add to the end of the expandable list
Center.add(button);
button.addActionListener(this);
button.setBackground(Color.white);
}
其中 boardSize
是指定大小的构造函数的参数。
您可以创建一个 Parent
class 例如:BaseGame
这是抽象的。像那样:
public abstract class BaseGame {
private abstract int[] getStoreCards();
private abstract JButton[] getButtons();
private abstract int[] getCards();
... your other code goes here
}
然后您可以在实现这些方法的地方创建子 classes,例如:
public class EasyGame {
@Override
private int[] getStoreCards() {
return new int[16];
}
@Override
private int[] getCards() {
return new int[9];
}
@Override
private JButton[] getButtons() {
return new JButton[16];
}
}
因此,在您通常初始化数组的代码中的任何地方,请改用这些方法。
int[] Button = new int[2];
变成
getButtons();
我在记忆游戏中每个级别(简单 4*4,中等 6*4,困难 6*6)做了 3 个 类。它们由相同的代码组成,但数组长度和其他变量的数量不同。我想通过将三个 类 合并为一个来使代码更高效,您有什么建议吗?如果有帮助,我在下面粘贴了三个不同的 类 :)
来自 3 个不同的数组和变量 类:
JButton[] button = new JButton[16];
JButton[] button = new JButton[24];
JButton[] button = new JButton[36];
int[] StoreCards = new int[16];
int[] StoreCards = new int[24];
int[] StoreCards = new int[36];
static int[] card = new int[9];
static int[] card = new int[13];
static int[] card = new int[19];
简单级别:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
class EasyWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton[] button = new JButton[16];
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
int[] StoreCards = new int[16];
static int[] cardChecker = new int[2];
static int[] card = new int[9];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(1, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(4, 4, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 2, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public EasyWindow() {
super("User: " + StartWindow.user + " || Easy Level");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
for (int n = 0; n <= button.length - 1; n++) {
button[n] = new JButton();
Center.add(button[n]);
button[n].addActionListener(this);
button[n].setBackground(Color.white);
}
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
flipped = 3;
Reset();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[15];
while (x < 16) {
number = (int) RandomNumbers.GetRandomNumber(8);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
for (int n = 0; n <= button.length - 1; n++) {
button[n].setIcon(Back);
}
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 16) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
for (int n = 0; n <= button.length; n++) {
if (Button[0] == n || Button[1] == n) {
button[n].setVisible(false);
}
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
for (int n = 0; n <= button.length - 1; n++) {
if (event.getSource() == button[n]) {
int number = StoreCards[n];
button[n].setIcon(new ImageIcon(number + imageType));
Card1and2(number, n);
flipped++;
Reset();
}
}
if (event.getSource() == Celebrities) {
Back = new ImageIcon("ceback.png");
imageType = "c.png";
}
if (event.getSource() == Cities) {
Back = new ImageIcon("ciback.png");
imageType = ".jpg";
}
if (event.getSource() == Memes) {
Back = new ImageIcon("mback.png");
imageType = ".png";
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class EasyLevelWindow {
public static void main(String[] args) {
EasyWindow win = new EasyWindow();
}
中等水平:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
class MediumWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton[] button = new JButton[24];
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
int[] StoreCards = new int[24];
static int[] cardChecker = new int[2];
static int[] card = new int[13];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(2, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(6, 4, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 1, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public MediumWindow() {
super("User: " + StartWindow.user + " || Medium Level");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
for (int n = 0; n <= button.length - 1; n++) {
button[n] = new JButton();
Center.add(button[n]);
button[n].addActionListener(this);
button[n].setBackground(Color.white);
}
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
flipped = 3;
Reset();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[23];
while (x < 24) {
number = (int) RandomNumbers.GetRandomNumber(12);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
for (int n = 0; n <= button.length - 1; n++) {
button[n].setIcon(Back);
}
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 24) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
for (int n = 0; n <= button.length; n++) {
if (Button[0] == n || Button[1] == n) {
button[n].setVisible(false);
}
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
for (int n = 0; n <= button.length - 1; n++) {
if (event.getSource() == button[n]) {
int number = StoreCards[n];
button[n].setIcon(new ImageIcon(number + imageType));
Card1and2(number, n);
flipped++;
Reset();
}
}
if (event.getSource() == Celebrities) {
Back = new ImageIcon("ceback.png");
imageType = "c.png";
}
if (event.getSource() == Cities) {
Back = new ImageIcon("ciback.png");
imageType = ".jpg";
}
if (event.getSource() == Memes) {
Back = new ImageIcon("mback.png");
imageType = ".png";
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class MediumLevelWindow {
public static void main(String[] args) {
MediumWindow win = new MediumWindow();
}
}
困难程度:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
class HardWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton[] button = new JButton[36];
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
int[] StoreCards = new int[36];
static int[] cardChecker = new int[2];
static int[] card = new int[19];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(2, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(6, 6, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 1, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public HardWindow() {
super("User: " + StartWindow.user + " || Hard Level");
setSize(780, 730);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
for (int n = 0; n <= button.length - 1; n++) {
button[n] = new JButton();
Center.add(button[n]);
button[n].addActionListener(this);
button[n].setBackground(Color.white);
}
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
flipped = 3;
Reset();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[35];
while (x < 36) {
number = (int) RandomNumbers.GetRandomNumber(18);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
for (int n = 0; n <= button.length - 1; n++) {
button[n].setIcon(Back);
}
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 36) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
for (int n = 0; n <= button.length; n++) {
if (Button[0] == n || Button[1] == n) {
button[n].setVisible(false);
}
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
for (int n = 0; n <= button.length - 1; n++) {
if (event.getSource() == button[n]) {
int number = StoreCards[n];
button[n].setIcon(new ImageIcon(number + imageType));
Card1and2(number, n);
flipped++;
Reset();
}
}
if (event.getSource() == Celebrities) {
Back = new ImageIcon("ceback.png");
imageType = "c.png";
}
if (event.getSource() == Cities) {
Back = new ImageIcon("ciback.png");
imageType = ".jpg";
}
if (event.getSource() == Memes) {
Back = new ImageIcon("mback.png");
imageType = ".png";
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class HardLevelWindow {
public static void main(String[] args) {
HardWindow win = new HardWindow();
}
}
您可能想使用 ArrayList,像这样:
ArrayList<JButton> buttons = new ArrayList<>();
//...
for (int n = 0; n < boardSize; n++) {
JButton button = new JButton();
buttons.add(button); // add to the end of the expandable list
Center.add(button);
button.addActionListener(this);
button.setBackground(Color.white);
}
其中 boardSize
是指定大小的构造函数的参数。
您可以创建一个 Parent
class 例如:BaseGame
这是抽象的。像那样:
public abstract class BaseGame {
private abstract int[] getStoreCards();
private abstract JButton[] getButtons();
private abstract int[] getCards();
... your other code goes here
}
然后您可以在实现这些方法的地方创建子 classes,例如:
public class EasyGame {
@Override
private int[] getStoreCards() {
return new int[16];
}
@Override
private int[] getCards() {
return new int[9];
}
@Override
private JButton[] getButtons() {
return new JButton[16];
}
}
因此,在您通常初始化数组的代码中的任何地方,请改用这些方法。
int[] Button = new int[2];
变成
getButtons();