📄 mainframe.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class MainFrame extends JFrame
{
MainPanel mainPanel;
Thread t=new Thread(){
public void run()
{
try
{
while(true)
{
String title=MainFrame.this.getTitle();
if(title.charAt(title.length()-1)==' ')
MainFrame.this.setTitle(title.substring(title.length()-2,title.length())+title.substring(0,title.length()-2));
else
MainFrame.this.setTitle(title.charAt(title.length()-1)+title.substring(0,title.length()-1));
this.sleep(100);
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
};
public MainFrame(int number)
{
mainPanel=new MainPanel(number);
StringBuffer title=new StringBuffer("我的游戏空间");
for(int i=0;i<150;i++)
title.append(" ");
this.setTitle(title.toString());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().add(mainPanel);
this.setResizable(false);
this.t.start();
}
public static void main(String[] args)
{
int number;
do
{
String a=JOptionPane.showInputDialog(null, new String("请输入雷数(1~479)"),new String("难度选择"),JOptionPane.QUESTION_MESSAGE);
if(a==null)
return;
try
{
number=Integer.parseInt(a);
}
catch(Exception e)
{
number=0;
}
}while(number<1||number>479);
JFrame.setDefaultLookAndFeelDecorated(true);
MainFrame mainFrame=new MainFrame(number);
mainFrame.setSize(610,355);
mainFrame.setVisible(true);
}
}
class MainPanel extends JPanel
{
boolean is_Win;
boolean last;
boolean win;
boolean game_over;
Random rand=new Random();
int[] bomb;
int [] sign=new int[480];
int [] label=new int[480];
boolean [] isClicked=new boolean[480];
boolean [] isBomb=new boolean[480];
Image button_up;
Image button_down;
Image bomb_black;
Image bomb_dead;
Image flag;
Image wrong_flag;
Image [] number_pic=new Image[9];
int x;
int y;
boolean isLeftDown=false;
boolean isRightDown=false;
boolean isMiddleDown=false;
private void init()
{
int bomb_number=0;
do
{
String a=JOptionPane.showInputDialog(null, new String("请输入雷数(1~479)"),new String("难度选择"),JOptionPane.QUESTION_MESSAGE);
if(a==null)
return;
try
{
bomb_number=Integer.parseInt(a);
}
catch(Exception e)
{
bomb_number=0;
}
}while(bomb_number<1||bomb_number>479);
last=false;
win=false;
game_over=false;
is_Win=false;
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;
}
}
private int[] initArray(int index)
{
int [] number;
if(index==0)
number=new int[]{1,30,31};
else if(index==29)
number=new int[]{28,59,58};
else if(index==450)
number=new int[]{420,421,451};
else if(index==479)
number=new int[]{478,448,449};
else if(index>0&&index<29)
number=new int[]{index-1,index+1,index+30,index+31,index+29};
else if(index>450&&index<479)
number=new int[]{index-1,index+1,index-30,index-31,index-29};
else if(index==30||index==60||index==90||index==120||index==150||index==180||index==210||index==240||index==270||index==300||index==330||index==360||index==390||index==420)
number=new int[]{index-30,index-29,index+1,index+30,index+31};
else if(index==59||index==89||index==119||index==149||index==179||index==209||index==239||index==269||index==299||index==329||index==359||index==389||index==419||index==449)
number=new int[]{index-30,index-31,index-1,index+29,index+30};
else
number=new int[]{index-31,index-30,index-29,index-1,index+1,index+29,index+30,index+31};
return number;
}
private boolean isWin()
{
for(int i=0;i<sign.length;i++)
if(sign[i]!=0&&!isBomb[i])
return false;
return true;
}
private boolean isGameover(int index)
{
int i=0;
for(;i<bomb.length&&index!=bomb[i];i++);
if(i!=bomb.length)
return true;
return false;
}
private void setMousePoint(MouseEvent e)
{
x=e.getX();
y=e.getY();
}
private void disposeMiddleButtonReleased(int index)
{
int [] number=initArray(index);
int count=0;
for(int i=0;i<number.length;i++)
if(sign[number[i]]==-5)
count++;
if(label[index]==count)
{
for(int i=0;i<number.length;i++)
if(sign[number[i]]==-2)
disposeLeftButtonClick(number[i]);
}
else
{
for(int i=0;i<number.length;i++)
if(sign[number[i]]==-2)
sign[number[i]]=-1;
}
}
private void disposeMiddleButtonPressed(int index)
{
int [] number=initArray(index);
for(int i=0;i<number.length;i++)
if(sign[number[i]]==-1)
sign[number[i]]=-2;
}
private void disposeMiddleButtonDragged(int index)
{
int [] number=initArray(index);
for(int i=0;i<number.length;i++)
if(sign[number[i]]==-2)
sign[number[i]]=-1;
}
private void disposeLeftButtonClick(int index)
{
int i=0;
for(;i<bomb.length&&bomb[i]!=index;i++);
if(i!=bomb.length)
{
sign[index]=-4;
for(i=0;i<bomb.length;i++)
if(sign[bomb[i]]==-1)
sign[bomb[i]]=-3;
for(i=0;i<sign.length;i++)
if(sign[i]==-5&&!isBomb[i])
sign[i]=-6;
game_over=isGameover(index);
}
else
{
sign[index]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -