游戏规则大概是点击一个块可以让那个和周围四个块翻转颜色,所有色块都黑了就赢了,怎么控制初始的黑色块的数量,还有如何在边上做计数器计走了几步和赢的时候显示你赢了的标语
import java.awt.Color;
import javax.swing.*;
import java.awt.*;
import java.util.Random;
import java.util.Scanner;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Lightsout extends JFrame implements ActionListener{
public static final int W = 600;
public static final int H = 600;
private JButton[][] l = new JButton[7][7];
private int COLS = 7, ROWS = 7;
public static void main(String[] args)
{
Lightsout Calvin = new Lightsout();
Calvin.setVisible(true);
}
public static String RandomString(int length) {
String str = "01";
Random random = new Random();
StringBuffer buf = new StringBuffer();
for (int i = 0; i < length; i++) {
int num = random.nextInt(2);
buf.append(str.charAt(num));
}
String v = buf.toString();
return v;
}
private Lightsout(){
super("Lights Out");
setSize(W,H);
setLayout(new GridLayout(7, 7));
String input[][]=new String[7][7];
for(int i=0;i<7;i++){
for(int j=0; j<7;j++){
String K = RandomString(1);
input[i][j]=K;
}
}
for(int i=0;i<7;i++){
for(int j=0; j<7;j++){
l[i][j] = new JButton();
l[i][j].addActionListener(this);
l[i][j].setText(input[i][j]);
if(input[i][j].equals("1")){
l[i][j].setBackground(Color.BLACK);
l[i][j].setForeground(Color.BLACK);
}
if(input[i][j].equals("0")){
l[i][j].setBackground(Color.white);
l[i][j].setForeground(Color.white);
}
add(l[i][j]);
}
}
}
public void actionPerformed(ActionEvent e){
JButton click = (JButton)e.getSource();
int move = 0;
for(int i = 0; i < 7; i++) {
for(int j = 0; j < 7; j++) {
if (click == l[i][j]) {
reverse(i, j);
move++;
}
}
}
}
private void reverse(int i, int j) {
neibour(i, j);
neibour(i+1, j);
neibour(i-1, j);
neibour(i, j+1);
neibour(i, j-1);
}
private void neibour(int i, int j) {
if (0 <= i && i < ROWS && 0 <= j && j < COLS) {
if ("0".equals(l[i][j].getText()))
{l[i][j].setBackground(Color.BLACK);
l[i][j].setForeground(Color.BLACK);
l[i][j].setText("1");
}
else if("1".equals(l[i][j].getText())){
l[i][j].setBackground(Color.white);
l[i][j].setForeground(Color.white);
l[i][j].setText("0");
}
}
}
}