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

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

}

}

}

}

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

  1. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  2. scratch做简单跑酷游戏_腾讯游戏学院专家:做一个多线程游戏框架可以多简单?...

    导语 如何做一个多线程游戏框架?腾讯游戏学院专家Tao将在本文通过一个demo来说说游戏逻辑的多线程化. 众所周知现在各种游戏终端的发展十分迅猛.其中一个共同的特征是"多核化",由 ...

  3. dx绘制2d图像_【教程】使用DX9做一个2D游戏(1)

    本文最先发表在贴吧,现在整理到此处,之后所有更新将在这里进行. by Chu @ XDU 2012/11/25 版权所有,禁止用于商业用途. 转载请注明出处. 用DX9做一个2D游戏显然不是一件容易的 ...

  4. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

  5. 灰色模型 java代码_灰色模型的简单Java实现

    前几天在以前的遗留代码中发现一个问题,就是我生成的一个数据的走势曲线的预测值(用于灰色时间序列预测)总是和老代码里的不一致,具体来说就是:遗留代码里面的预测值的斜率总是为零,相比之下我生成的就比较合理 ...

  6. js 中 java 代码_在js中嵌套java代码

    jsp中有时候在js中操作某些java后台传递过来的数据逻辑比较复杂,比如list内容的遍历,可以直接在页面上添加java脚本来执行内容,代码如下: //在js中插入java代码操作 //取出java ...

  7. java程序聊天室发送不了_江湖救急!我写了一个java聊天室程序,运行时可以打开聊天窗口,但无法发送消息,怎么会这样,求大神拯救...

    若回答被采纳,除财富值之外,另有重谢!!!/*客户端*/importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPan ...

  8. 优秀的java代码_像这样写,Java菜鸟也能写出牛逼的代码

    场景一 有时候我们会遇到一个方法就是占满了整个屏幕,其中各种if else 判断 ,for 循环嵌套,时不时来穿插着各种a b c参数,让人看得实在是眼花缭乱.让后面维护的人望而却步,也实在的代码块后 ...

  9. 归并排序的java代码_归并排序的原理及java代码实现

    概述 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并排序采用的是递归来实现, ...

  10. 给女朋友道歉的java代码_情人节写给女朋友Java Swing代码程序

    马上又要到情人节了,再不解风情的人也得向女友表示表示.作为一个程序员,示爱的时候自然也要用我们自己的方式. 这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的Java Swing代码,主要定 ...

最新文章

  1. matlab 互信息函数,MATLAB 互信息函数
  2. SPSS数据记录的选择(Select Cases)
  3. Git中的bash与CMD的区别
  4. 机器学习集成模型ML ens学习——多层模型集成(一)
  5. [转自华尔街的强帖]怎样才能嫁给有钱人
  6. 第一个Python程序--Python
  7. docker容器必须要有前台进程
  8. windows 图标文件在哪里?
  9. 公众号两年,粉丝一万,收益五千。
  10. 微信服务升级——指尖上的超级表格
  11. terminate called after throwing an instance of ‘YAML::TypedBadConversion<int>‘ what(): bad conver
  12. 微信公众号历史消息栏设置
  13. 网络环路原理及其影响
  14. 开发框架文档体系化的思考
  15. ios 获取电量百分比_iOS 获取电池电量
  16. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程
  17. 什么是 event.target ?
  18. 关于ASA5520防火墙搭配WEB服务器的非常规设置
  19. 单细胞(10Xgenomics)测序学习1
  20. 英语发音之音标---对比法(7个短元音和ghywr和谁的对比发音)

热门文章

  1. 铁塔基站三相有功电能无线计量仪表外置互感器-安科瑞 顾月
  2. UCF-101视频数据分类资源
  3. android 9.0 c7Pro,三星c7pro和vivo x9哪个好?三星Galaxy c7 pro和vivo x9区别对比评测
  4. 2019年win10最精简版本——win10企业2019长期服务版本下载和激活密钥
  5. 计算机原理中的cps,信息物理融合系统(cps)原理pdf
  6. v65智慧屏是真的鸿蒙,华为智慧屏V65深测:真智慧or增智慧?
  7. c++和opencv小知识:openCV中convertTo的用法
  8. sodp软件如何导入多个工作面信息_平方英尺和面积计算软件:Metes and Bounds for Mac...
  9. “黑客”必用兵器之“网络抓包工具”
  10. 绿坝十年,儿童网络安全保护问题仍未解决