Java扫雷程序,初试Java

程序

自定义JButton子类:

//ExtendButton.java

package ly.java;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ExtendButton extends JButton
{
private int Button_Pos;
private boolean Button_Status;
private boolean Button_Visited;

public int SetPostion(int pos)
{
this.Button_Pos = (pos >= 0 && pos <= 81) ? pos : 0;
return this.Button_Pos ;
}
public int GetPostion()
{
return this.Button_Pos;
}
public boolean SetStatus(boolean sta)
{
this.Button_Status = sta;
return this.Button_Status;
}
public boolean GetStatus()
{
return this.Button_Status;
}
public boolean Visited()
{
return this.Button_Visited;
}
public boolean SetVisited(boolean vis)
{
this.Button_Visited = vis;
return this.Button_Visited;
}
}

游戏类

//Game.java

package ly.java.game;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import ly.java.ExtendButton;

public class Game extends JFrame implements ActionListener{
private Container myContainer;
private GridLayout myLayout;
ExtendButton[] myButton = new ExtendButton[81];

private Game()
{
this.setTitle("Game");
this.setSize( 500,500 );
this.InitButton();
}

private void InitButton()
{
myContainer = getContentPane();
myLayout = new GridLayout( 9, 9, 1, 1 );
myContainer.setLayout( myLayout );
for(int i=0; i < 81; i++)
{
myButton[i] = new ExtendButton();
myButton[i].SetPostion(i);
myContainer.add(myButton[i]);
myButton[i].addActionListener( this );
}
System.gc();
this.SetBomb(13);
show();
}

private void SetBomb(int count)
{
int counter = 0;
int tempint;
while(counter != count)
{
tempint = ( int )(Math.random() * 81);
if(!myButton[tempint].GetStatus())
{
myButton[tempint].SetStatus(true);
counter++;
}
}
}

private void ShowBomb()
{
for(int i = 0; i < 81; i++)
{
if(myButton[i].GetStatus())
{
myButton[i].setBackground( new Color(0,0,0) );
}
}
}

private void CheckButton(ExtendButton TempButton)
{

if(TempButton.GetStatus())
{
JOptionPane.showMessageDialog( null, "You Failed!", "Game",JOptionPane.INFORMATION_MESSAGE );
this.ShowBomb();
return;
}
int[] CircleNum = new int[8];
int temp = 0;
if(!TempButton.Visited())
{

CircleNum[0] = TempButton.GetPostion() - 9;
CircleNum[0] = (CircleNum[0] < 0) ? -1 : CircleNum[0];
CircleNum[1] = TempButton.GetPostion() - 8;
CircleNum[1] = (CircleNum[1] < 0 || CircleNum[1] % 9 == 0) ? -1 : CircleNum[1];
CircleNum[2] = TempButton.GetPostion() + 1;
CircleNum[2] = (CircleNum[2] % 9 == 0) ? -1 : CircleNum[2];
CircleNum[3] = TempButton.GetPostion() + 10;
CircleNum[3] = (CircleNum[3] > 80 || CircleNum[3] % 9 == 0) ? -1 : CircleNum[3];
CircleNum[4] = TempButton.GetPostion() + 9;
CircleNum[4] = (CircleNum[4] > 80) ? -1 : CircleNum[4];
CircleNum[5] = TempButton.GetPostion() + 8;
CircleNum[5] = (CircleNum[5] > 80 || CircleNum[5] % 8 == 0) ? -1 : CircleNum[5];
CircleNum[6] = TempButton.GetPostion() - 1;
CircleNum[6] = (CircleNum[6] % 8 == 0) ? -1 : CircleNum[6];
CircleNum[7] = TempButton.GetPostion() - 10;
CircleNum[7] = (CircleNum[7] < 0 || CircleNum[7] % 8 == 0) ? -1 : CircleNum[7];
for(int i = 0; i < 8; i++)
{
if(CircleNum[i] != -1)
{
if(myButton[CircleNum[i]].GetStatus() && !myButton[CircleNum[i]].Visited()) temp++;
}
}
if(temp > 0)
{
TempButton.SetVisited( true );
TempButton.setText( String.valueOf(temp) );
temp = 0;
}
else if(temp == 0)
{
TempButton.SetVisited( true );
TempButton.setBackground(new Color( 125,152,0 ));
for(int i = 0; i < 8; i++)
{
if(CircleNum[i] != -1 && !myButton[CircleNum[i]].Visited())
{
CheckButton(myButton[CircleNum[i]]);
}
}
}
}
}

public void actionPerformed(ActionEvent e)
{
CheckButton((ExtendButton)e.getSource());
}

public static void main(String[] args)
{
Game newGame = new Game();
newGame.addWindowListener(
new WindowAdapter(){
public void windowClosing( WindowEvent e )
{
System.exit(0);
}
}
);
}
}

时间: 2024-09-17 19:18:29

Java扫雷程序,初试Java的相关文章

学生一枚 求注释java扫雷程序 具体一点的

问题描述 packagesl;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassFrameextendsJFrame{JTextFieldtext;JLabelnowBomb,setBomb;intBombNum,BlockNum;//当前雷数,当前方块数intrightBomb,restBomb,restBlock;//找到的地雷数,剩余雷数,剩余方块数JButtonstart=newJButton("

使用Java小程序为网页上的照片添加效果

程序|网页 1.准备源文件 选择要放置到网页上的照片,用扫描仪扫描得到照片的图像文件,再用PhotoShop等图像处理软件处理成大小为300×300象素的图像,最后保存为或者使用ACESee等图像查看软件转换为.jpg格式,保存到新建的文件夹photo中(注意千万别使用汉字为这个文件夹命名).现在假设这些照片图像分别为photo1.jpg.photo2.jpg.photo3.jpg.其中photo1.jpg为主要照片,photo2.jpg和photo3.jpg为辅助照片,最好选择不同时期的照片以

将 Java 小程序迁移到 Microsoft J# 浏览器控件

程序|控件|浏览器 Visual J# .NET 小组 Microsoft Corporation 摘要:通过 Microsoft J# 浏览器控件,开发人员可以将所编写的在 Java 虚拟机上运行的 Java 小程序迁移到 .NET 框架.本文向开发人员介绍 J# 浏览器控件,并说明将 Java 小程序迁移到 .NET 框架的步骤.本文还讨论了其他一些主题,如 J# 浏览器控件的安全性和调试,以及当前版本中不受支持的功能. 下载 HTML 小程序到对象标记转换器 (95KB) 本文假设开发人员

基本程序片(java)

库通常按照它们的功能来进行组合.一些库,例如使用过的,便中断搁置起来.标准的Java库字符串和矢量类就是这样的一个例子.其他的库被特殊地设计,例如构建块去建立其它的库.库中的某些类是应用程序的框架,其目的是协助我们构建应用程序,在提供类或类集的情况下产生每个特定应用程序的基本活动状况.然后,为我们定制活动状况,必须继承应用程序类并且废弃程序的权益.应用程序框架的默认控制结构将在特定的时间调用我们废弃的程序.应用程序的框架是"分离.改变和中止事件"的好例子,因为它总是努力去尝试集中在被废

Java手机程序与Android程序是不是同一个东西

问题描述 Java手机程序与Android程序是不是同一个东西 Java手机程序与Android程序是不是同一个东西,在编写Java程序时使用的是不是Java Me,还需要安装那些程序?? 解决方案 另外android程序现在也可以用C#等别的语言开发. 解决方案二: 别听上面瞎掰,Java 平台有三个版本,这使软件开发人员.服务提供商和设备生产商可以针对特定的市场进行开发: Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允

使用DataStage Java Integration Stage和Java Pack从Excel源文件中提取数据

简介 IBM InfoSphere Information 服务器由一套可帮助企业从遍布多个数据源系统的信息中获取 业务价值的数据集成产品组成.它有助于以某种具有成本效益的方式从多个异构数据源中分析.清理和集成信 息.有了 IBM InfoSphere Information Server,企业能够以较低的成本和风险提高其运营效率. IBM Information Server DataStage 是一个 ETL 产品,可帮助组织提取.转换和加载来自异构数据源的数据. DataStage 可使用

细述 Java垃圾回收机制→Java Garbage Collection Monitoring and Analysis

Java垃圾回收监控和分析工具 Java VisualVM Naarad GCViewer IBM Pattern Modeling and Analysis Tool for Java Garbage Collector HPjmeter IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory Visualizer Verbose GC Analyzer Java VisualVM Java Vi

windows 7-运行一个基于Java的程序总是要求管理员权限怎么办?

问题描述 运行一个基于Java的程序总是要求管理员权限怎么办? #我的操作系统是windows 7. 安装了一个叫**Geogebra**的几何作图软件.这个软件是用Java开发的开源软件. 之前使用一直是正常的,最近一段时候,突然发生了一系列的怪事: 比如一直用的Acrobat突然失效了,后来只好重新安装,用amtlib解决. 再就是重装Acrobat之后就偶然发现Geogebra不用管理员权限无法打开了,即使彻底卸载,清除注册表项,重新安装也没用:还尝试了它的portable版本,也是一样.

Ajax: 构建动态的 Java 应用程序(图)

ajax|程序|动态 在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java? 开发人员来说也是一个严峻的挑战.在这个系列中,作者 Philip McCarthy 介绍了一种创建动态应用程序体验的开创性方式. Ajax(异步 JavaScript 和 XML)是一种编程技术,它允许为基于 Java 的 Web 应用程序把 Java 技术.XML 和 JavaScript 组合起来,从而打破页面重载的范式. Ajax(即异步 JavaScript 和 XML)是一种 Web