📄 gameframe.java
字号:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class GameFrame {
class conformA implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
String nn = T1.getText();
int nnn = 3;
try {
nnn = Integer.parseInt(nn);
} catch (Exception e) {
nnn = 3;
T1.setText("3");
}
n = nnn;
setP(n);
L2.setText("0");
game = new NGridGame(n);
setPP(game);
setE(true);
B2.setEnabled(true);
B3.setEnabled(false);
j.pack();
}
}
class move implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
String s = ((JButton) arg0.getSource()).getText();
if (s.equals("*"))
return;
int pn = Integer.parseInt(s);
if (game.moveNod(pn)) {
setN(1);
setPP(game);
}
}
}
class okA implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
setE(false);
B2.setEnabled(false);
path = new NGridGame(game).moveBack();
pn = 0;
B3.setEnabled(true);
}
}
class backA implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
if (pn >= path.length) {
setE(true);
pn=0;
B2.setEnabled(true);
L2.setText("0");
B3.setEnabled(false);
} else {
game.move(path[pn]);
pn++;
setN(-1);
setPP(game);
}
}
}
private void setN(int i) {
L2.setText(String.valueOf(Integer.parseInt(L2.getText()) + i));
}
private void setE(boolean b) {
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
grids[i][j].setEnabled(b);
}
private void setP(int n) {
P2.removeAll();
P2.setLayout(new GridLayout(n, n));
grids = new JButton[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
grids[i][j] = new JButton();
grids[i][j].addActionListener(new move());
P2.add(grids[i][j]);
}
}
public JFrame j;
private int n;
public JLabel L1 = new JLabel("Input your game's N:"),
L2 = new JLabel("0");
public JTextField T1 = new JTextField();
public JButton B1 = new JButton("conform"), B2 = new JButton("ok"),
B3 = new JButton("goback");
public JPanel P1 = new JPanel(), P2 = new JPanel(), P3 = new JPanel();
public JButton[][] grids;
private NGridGame game;
private int[] path;
private int pn = 0;
private void setPP(NGridGame game) {
int pn;
String s;
for (int i = 0; i < game.N; i++)
for (int j = 0; j < game.N; j++) {
pn = game.getNod(i, j);
if (pn == 0) {
if (game.blank.x == i && game.blank.y == j)
s = "*";
else
return;
} else
s = String.valueOf(pn);
grids[i][j].setText(s);
}
}
public GameFrame(int N) {
this.n = N;
j = new JFrame();
P1.setLayout(new FlowLayout());
B1.addActionListener(new conformA());
B2.addActionListener(new okA());
B3.addActionListener(new backA());
T1.setText(String.valueOf(N));
P1.add(L1);
P1.add(T1);
P1.add(B1);
setP(n);
P3.setLayout(new FlowLayout());
P3.add(B2);
B3.setEnabled(false);
P3.add(B3);
P3.add(L2);
j.setLayout(new BorderLayout());
j.add(P1, BorderLayout.NORTH);
j.add(P2, BorderLayout.CENTER);
j.add(P3, BorderLayout.SOUTH);
B1.addActionListener(new conformA());
game = new NGridGame(n);
setPP(game);
j.pack();
j.setVisible(true);
}
public GameFrame() {
this(3);
}
public static void main(String[] f) {
GameFrame g = new GameFrame();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -