扫雷java程序指导书_月光软件站 - 编程文档 - Java - 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);

}

}

);

}

}

down_info.asp?id=23998

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值