关灯游戏java代码_江湖救急!在用JAVA做一个关灯游戏,有些不会的地方

游戏规则大概是点击一个块可以让那个和周围四个块翻转颜色,所有色块都黑了就赢了,怎么控制初始的黑色块的数量,还有如何在边上做计数器计走了几步和赢的时候显示你赢了的标语

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");

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值