📄 mainframe.java
字号:
isClicked[index]=false;
if(label[index]==0)
disposeLabel(index);
}
}
private void disposeLabel(int index)
{
int [] number=initArray(index);
for(int i=0;i<number.length;i++)
if(isClicked[number[i]])
disposeLeftButtonClick(number[i]);
}
public MainPanel(int bomb_number)
{
bomb=new int[bomb_number];
for(int i=0;i<sign.length;i++)
sign[i]=-1;
for(int i=0;i<isClicked.length;i++)
isClicked[i]=true;
for(int i=0;i<isBomb.length;i++)
isBomb[i]=false;
for(int i=0;i<bomb.length;i++)
{
bomb[i]=rand.nextInt(480);
for(int j=0;j<i;j++)
{
if(bomb[j]==bomb[i])
{
i--;
break;
}
}
}
for(int i=0;i<bomb.length;i++)
isBomb[bomb[i]]=true;
for(int i=0;i<label.length;i++)
{
int count=0;
int [] number=initArray(i);
for(int in=0;in<number.length;in++)
{
int j=0;
for(;j<bomb.length&&bomb[j]!=number[in];j++);
if(j!=bomb.length)
count++;
}
label[i]=count;
}
button_up=Toolkit.getDefaultToolkit().getImage("src/button_up.JPG");
button_down=Toolkit.getDefaultToolkit().getImage("src/button_down.JPG");
bomb_black=Toolkit.getDefaultToolkit().getImage("src/bomb.JPG");
bomb_dead=Toolkit.getDefaultToolkit().getImage("src/dead.JPG");
flag=Toolkit.getDefaultToolkit().getImage("src/flag.JPG");
wrong_flag=Toolkit.getDefaultToolkit().getImage("src/wrong.jpg");
for(int i=0;i<number_pic.length;i++)
number_pic[i]=Toolkit.getDefaultToolkit().getImage("src/"+i+".JPG");
try
{
MediaTracker mt=new MediaTracker(this);
mt.addImage(button_up,0);
mt.waitForID(0);
mt.addImage(button_down,1);
mt.waitForID(1);
mt.addImage(bomb_black,2);
mt.waitForID(2);
for(int i=0;i<number_pic.length;i++)
{
mt.addImage(number_pic[i],i+3);
mt.waitForID(i+3);
}
mt.addImage(bomb_dead,13);
mt.waitForID(13);
mt.addImage(flag,14);
mt.waitForID(14);
mt.addImage(wrong_flag,15);
mt.waitForID(15);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e)
{
if(e.getY()>=320||e.getX()>=600||e.getY()<=0||e.getX()<=0)
{
if(sign[y/20*30+x/20]==-2)
sign[y/20*30+x/20]=-1;
if(isMiddleDown)
disposeMiddleButtonDragged(y/20*30+x/20);
if(!game_over)
MainPanel.this.repaint();
return;
}
if(e.getButton()==0&&isLeftDown)
{
if(e.getX()!= x||e.getY()!= y)
{
if(sign[y/20*30+x/20]==-2)
sign[y/20*30+x/20]=-1;
if(sign[e.getY()/20*30+e.getX()/20]==-1)
sign[e.getY()/20*30+e.getX()/20]=-2;
}
}
else if(e.getButton()==0&&isMiddleDown)
{
if(e.getX()!= x||e.getY()!= y)
{
disposeMiddleButtonDragged(y/20*30+x/20);
if(sign[e.getY()/20*30+e.getX()/20]==0)
disposeMiddleButtonPressed(e.getY()/20*30+e.getX()/20);
}
}
MainPanel.this.setMousePoint(e);
if(!game_over)
MainPanel.this.repaint();
}
});
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e)
{
if(e.getButton()==1)
{
if(sign[e.getY()/20*30+e.getX()/20]==-1)
{
sign[e.getY()/20*30+e.getX()/20]=-2;
isLeftDown = true;
}
}
else if(e.getButton()==3)
{
if(sign[e.getY()/20*30+e.getX()/20]==-1)
{
sign[e.getY()/20*30+e.getX()/20]=-5;
isRightDown=true;
}
else if(sign[e.getY()/20*30+e.getX()/20]==-5)
{
sign[e.getY()/20*30+e.getX()/20]=-1;
isRightDown=true;
}
}
else if(e.getButton()==2)
{
if(sign[e.getY()/20*30+e.getX()/20]==0)
{
disposeMiddleButtonPressed(e.getY()/20*30+e.getX()/20);
isMiddleDown=true;
}
}
MainPanel.this.setMousePoint(e);
if(!game_over)
MainPanel.this.repaint();
}
public void mouseReleased(MouseEvent e)
{
if(e.getY()>320||e.getX()>600||e.getY()<0||e.getX()<0)
return;
if(e.getButton()==e.BUTTON1)
{
if(sign[e.getY()/20*30+e.getX()/20]==-2)
{
disposeLeftButtonClick(e.getY()/20*30+e.getX()/20);
}
isLeftDown=false;
}
else if(e.getButton()==2)
{
disposeMiddleButtonReleased(e.getY()/20*30+e.getX()/20);
isMiddleDown=false;
}
else if(e.getButton()==3)
isRightDown=false;
MainPanel.this.setMousePoint(e);
if(!game_over)
{
MainPanel.this.repaint();
if(e.getButton()==1)
game_over=isGameover(e.getY()/20*30+e.getX()/20);
}
if(game_over&&!last)
{
JOptionPane.showMessageDialog(null,"对不起,您失败了!","扫雷",JOptionPane.INFORMATION_MESSAGE,new ImageIcon("src/cry.gif"));
last=true;
init();
}
win=isWin();
if(win&&!game_over)
{
for(int i=0;i<bomb.length;i++)
sign[bomb[i]]=-5;
MainPanel.this.repaint();
if(!is_Win)
JOptionPane.showMessageDialog(null,"恭喜您闯关成功!","扫雷",JOptionPane.INFORMATION_MESSAGE,new ImageIcon("src/smile.gif"));
game_over=true;
last=true;
if(!is_Win)
{
is_Win=true;
init();
}
}
}
});
}
public void paint(Graphics g)
{
super.paint(g);
for(int i=0;i<480;i++)
{
switch(sign[i])
{
case 0:
g.drawImage(number_pic[label[i]],20*(i%30),20*(i/30),20,20,null);
break;
case -1:
g.drawImage(button_up,20*(i%30),20*(i/30),20,20,null);
break;
case -2:
g.drawImage(button_down,20*(i%30),20*(i/30),20,20,null);
break;
case -3:
g.drawImage(bomb_black,20*(i%30),20*(i/30),20,20,null);
break;
case -4:
g.drawImage(bomb_dead,20*(i%30),20*(i/30),20,20,null);
break;
case -5:
g.drawImage(flag,20*(i%30),20*(i/30),20,20,null);
break;
case -6:
g.drawImage(wrong_flag,20*(i%30),20*(i/30),20,20,null);
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -