import java.io.*;
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class MetaTicTacToe extends Applet implements MouseListener {
Graphics buffer;
Image img;
protected int height, width;
Rectangle[][] rectangles = new Rectangle[9][9];
int[][] squarecheck = new int[9][9];
//False = X, True = O
boolean turn;
public void makeButtons() {
height = getSize().height;
width = getSize().width;
for (int x = 0; x < 9; x++) {
for (int y = 0; y < 9; y++) {
// rectangles[x][y] = new Rectangle(width/9+10
}
}
}
public void init() {
//0 = Empty
//1 = X's
//2 = O's
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
squarecheck[i][j] = 0;
}
}
addMouseListener(this);
}
public void paint(Graphics g) {
height = getSize().height;
width = getSize().width;
//Larger 3x3
g.drawRect(10,10,width-20,height-20);
g.fillRect(10,height/3,width-20,5);
g.fillRect(10,height/3*2,width-20,5);
g.fillRect(width/3,10,5,height-20);
g.fillRect(width/3*2,10,5,height-20);
//TopLeft 3x3
g.drawLine(15,height/9,width/3-5,height/9);
g.drawLine(15,height/9*2,width/3-5,height/9*2);
g.drawLine(width/9,15,width/9,height/3-5);
g.drawLine(width/9*2,15,width/9*2,height/3-5);
//LeftMiddle 3x3
g.drawLine(15,height/9*4,width/3-5,height/9*4);
g.drawLine(15,height/9*5,width/3-5,height/9*5);
g.drawLine(width/9,height/3+10,width/9,height/3*2-5);
g.drawLine(width/9*2,height/3+10,width/9*2,height/3*2-5);
//BottomLeft 3x3
g.drawLine(15,height/9*7,width/3-5,height/9*7);
g.drawLine(15,height/9*8,width/3-5,height/9*8);
g.drawLine(width/9,height/3*2+10,width/9,height/3*3-15);
g.drawLine(width/9*2,height/3*2+10,width/9*2,height/3*3-15);
//TopMiddle 3x3
g.drawLine(width/9*4,15,width/9*4,height/3-5);
g.drawLine(width/9*5,15,width/9*5,height/3-5);
g.drawLine(width/3+10,height/9,width/3*2-5,height/9);
g.drawLine(width/3+10,height/9*2,width/3*2-5,height/9*2);
//Middle 3x3
g.drawLine(width/9*4,height/3+10,width/9*4,height/3*2-5);
g.drawLine(width/9*5,height/3+10,width/9*5,height/3*2-5);
g.drawLine(width/3+10,height/9*4,width/3*2-5,height/9*4);
g.drawLine(width/3+10,height/9*5,width/3*2-5,height/9*5);
//BottomMiddle 3x3
g.drawLine(width/3+10,height/9*7,width/3*2-10,height/9*7);
g.drawLine(width/3+10,height/9*8,width/3*2-10,height/9*8);
g.drawLine(width/9*4,height/3*2+10,width/9*4,height/3*3-15);
g.drawLine(width/9*5,height/3*2+10,width/9*5,height-15);
//TopRight 3x3
g.drawLine(width/9*7,15,width/9*7,height/3-5);
g.drawLine(width/9*8,15,width/9*8,height/3-5);
g.drawLine(width/3*2+10,height/9,width-15,height/9);
g.drawLine(width/3*2+10,height/9*2,width-15,height/9*2);
//RightMiddle 3x3
g.drawLine(width/9*7,height/3+10,width/9*7,height/3*2-5);
g.drawLine(width/9*8,height/3+10,width/9*8,height/3*2-5);
g.drawLine(width/3*2+10,height/9*4,width-15,height/9*4);
g.drawLine(width/3*2+10,height/9*5
我正在尝试编写一个meta tic tac toe程序,目前正在努力让按钮在方块中选择x或o时进行注册。我如何使用for循环来编写这些按钮,以便它们可以正确缩放到当时的电路板大小?
发布于 2015-05-21 08:21:34
为此,我们通常使用LayoutManager
s。它们可以嵌套以获得所需的行为。下面是一个游戏面板的实现可能是什么样子。它使用按钮,为了让它看起来很好,你必须确保宽度与高度相同:
public class GamePanel extends JPanel {
private int size, count;
private JButton[] buttons;
private ClickListener listener = null;
private boolean[] occupied;
public GamePanel(int size) {
this.size = size;
reset();
}
public void reset() {
removeAll();
count = 0;
buttons = new JButton[size * size];
occupied = new boolean[size * size];
setLayoutManager(new GridLayout(size, size));
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton();
buttons[i].addActionListener(new MyActionListener(i));
add(buttons[i]);
}
}
public void setClickListener(ClickListener cl) {
this.listener = cl;
}
public void setEnabled(boolean b) {
for (int i = 0; i < buttons.length; i++) {
buttons[i].setEnabled(b);
}
super.setEnabled(b);
}
// TODO add getters ... ommitted
public interface ClickListener {
public void buttonClicked(int index);
}
private class MyActionListener implements ActionListener {
private int i;
public MyActionListener(int i) {
this.i = i;
}
public void actionPerformed(ActionEvent event) {
if (occupied[i])
return;
buttons[i].setText(count++ % 2 == 0 ? "X" : "O");
occupied[i] = true;
if (listener != null)
listener.buttonClicked(i);
}
}
}
https://stackoverflow.com/questions/30357982
复制相似问题