📄 gametest.java
字号:
}
if (this.West()!=null){
if (((MyButton)(this.West())).isFlag()){
count++;
}
}
if (this.South()!=null){
if (((MyButton)(this.South())).isFlag()){
count++;
}
}
if (this.SouthEast()!=null){
if (((MyButton)(this.SouthEast())).isFlag()){
count++;
}
}
if (this.SouthWest()!=null){
if (((MyButton)(this.SouthWest())).isFlag()){
count++;
}
}
if (count==this.roundMineCount&&count!=0){
if (this.NorthEast()!=null){
((MyButton)(this.NorthEast())).showMine();
}
if (this.NorthWest()!=null){
((MyButton)(this.NorthWest())).showMine();
}
if (this.North()!=null){
((MyButton)(this.North())).showMine();
}
if (this.East()!=null){
((MyButton)(this.East())).showMine();
}
if (this.West()!=null){
((MyButton)(this.West())).showMine();
}
if (this.South()!=null){
((MyButton)(this.South())).showMine();
}
if (this.SouthEast()!=null){
((MyButton)(this.SouthEast())).showMine();
}
if (this.SouthWest()!=null){
((MyButton)(this.SouthWest())).showMine();
}
}
else
{
roundUp();
}
}
private void setOpen(boolean stutas){
isOpen=stutas;
}
private void setAsk(boolean stutas){
isAsk=stutas;
}
private boolean isAsk(){
return isAsk;
}
private void setFlag(boolean stutas){
isFlag=stutas;
}
private boolean isFlag(){
return isFlag;
}
//方位方法
//--西北
private boolean isOpen(){
return isOpen;
}
private Object NorthWest(){
if (((locationX-1)>=0)&&((locationY-1)>=0)){
return btn[locationX-1][locationY-1];
}
else
return null;
}
//--北
private Object North(){
if ((locationY-1)>=0){
return btn[locationX][locationY-1];
}
else
return null;
}
//--东北
private Object NorthEast(){
if (((locationX+1)<panelX)&&((locationY-1)>=0)){
return btn[locationX+1][locationY-1];
}
else
return null;
}
//--东
private Object East(){
if ((locationX-1)>=0){
return btn[locationX-1][locationY];
}
else
return null;
}
//--西
private Object West(){
if ((locationX+1)<panelX){
return btn[locationX+1][locationY];
}
else
return null;
}
//--西南
private Object SouthWest(){
if (((locationX-1)>=0)&&((locationY+1)<panelY)){
return btn[locationX-1][locationY+1];
}
else
return null;
}
//--南
private Object South(){
if ((locationY+1)<panelY){
return btn[locationX][locationY+1];
}
else
return null;
}
//--东南
private Object SouthEast(){
if (((locationX+1)<panelX)&&((locationY+1)<panelY)){
return btn[locationX+1][locationY+1];
}
else
return null;
}
//展示雷
private void showMine(){
if (this.isMine&&(!this.isFlag)){
gameOver(this.locationX,this.locationY);
}
else{
showCount();
}
}
//刷新雷
private void refresh(){
this.isMine=false;
roundMineCount=0;
}
private void showCount(){
if (!isOpen&&!isFlag){
this.isOpen=true;
this.setBorder(BorderFactory.createEmptyBorder());
switch(roundMineCount){
case 0:
{
URL url = GameTest.class.getResource("images/0.gif");
this.setIcon(new ImageIcon(url));
if (this.NorthWest()!=null){
((MyButton)(this.NorthWest())).showCount();
}
if (this.North()!=null){
((MyButton)(this.North())).showCount();
}
if (this.NorthEast()!=null){
((MyButton)(this.NorthEast())).showCount();
}
if (this.West()!=null){
((MyButton)(this.West())).showCount();
}
if (this.East()!=null){
((MyButton)(this.East())).showCount();
}
if (this.SouthWest()!=null){
((MyButton)(this.SouthWest())).showCount();
}
if (this.South()!=null){
((MyButton)(this.South())).showCount();
}
if (this.SouthEast()!=null){
((MyButton)(this.SouthEast())).showCount();
}
break;
}
case 1:
{
URL url = GameTest.class.getResource("images/1.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 2:
{
URL url = GameTest.class.getResource("images/2.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 3:
{
URL url = GameTest.class.getResource("images/3.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 4:
{
URL url = GameTest.class.getResource("images/4.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 5:
{
URL url = GameTest.class.getResource("images/5.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 6:
{
URL url = GameTest.class.getResource("images/6.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 7:
{
URL url = GameTest.class.getResource("images/7.gif");
this.setIcon(new ImageIcon(url));
break;
}
case 8:
{
URL url = GameTest.class.getResource("images/8.gif");
this.setIcon(new ImageIcon(url));
break;
}
default:
break;
}
}
}
private void upMine(){
roundMineCount++;
}
private boolean isMine(){
return isMine;
}
private void setMine(boolean mineStatus){
isMine=mineStatus;
}
private void setLocate(int x,int y){
locationX=x;
locationY=y;
}
private Point getLocate(){
Point locate=new Point(locationX,locationY);
return locate;
}
//构造函数
public MyButton(){
//设置雷的边框和大小
//this.setBackground(Color.LIGHT_GRAY);
URL url = GameTest.class.getResource("images/blank.gif");
this.setIcon(new ImageIcon(url));
//this.setMyPressedIcon(new ImageIcon("images/0.gif"));
this.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
this.setPreferredSize(new Dimension(16,16));
this.setFocusable(false);
isMine=false;
isFlag=false;
isAsk=false;
roundMineCount=0;
}
}
//方法:生成菜单
private void createMenu(){
//设置菜单
JMenuBar menuTitle=new JMenuBar();
JMenu gameSetMenu=new JMenu("游戏(G)");
JMenu helpMenu=new JMenu("帮助(H)");
//设置菜单栏快捷键
gameSetMenu.setMnemonic('G');//Alt+G
helpMenu.setMnemonic('H');//Alt+H
//设置字体
gameSetMenu.setFont(new Font("宋体",Font.PLAIN,12));
helpMenu.setFont(new Font("宋体",Font.PLAIN,12));
//自定义子菜单项类
class MyJMenuItem extends JMenuItem{
public MyJMenuItem(){
this.setFont(new Font("宋体",Font.PLAIN,12));
}
public MyJMenuItem(String text, int mnemonic){
super(text,mnemonic);
this.setFont(new Font("宋体",Font.PLAIN,12));
}
}
//自定义单选按钮菜单类
class MyRadioButtonMenuItem extends JRadioButtonMenuItem{
public MyRadioButtonMenuItem(String text){
super(text);
this.setFont(new Font("宋体",Font.PLAIN,12));
}
public MyRadioButtonMenuItem(String text, boolean selected){
super(text,selected);
this.setFont(new Font("宋体",Font.PLAIN,12));
}
}
//自定义复选按钮菜单类
class MyCheckBoxMenuItem extends JCheckBoxMenuItem{
public MyCheckBoxMenuItem(String text){
super(text);
this.setFont(new Font("宋体",Font.PLAIN,12));
}
public MyCheckBoxMenuItem(String text, boolean selected){
super(text,selected);
this.setFont(new Font("宋体",Font.PLAIN,12));
}
}
// 菜单项及快捷键
JMenuItem startItem=new MyJMenuItem("开局(N)",'N');
JMenuItem exitItem=new MyJMenuItem("退出(X)",'X');
JMenuItem heroListItem=new MyJMenuItem("扫雷英雄版(T)",'T');
JMenuItem indexItem=new MyJMenuItem("目录(C)",'C');
JMenuItem serHelpItem=new MyJMenuItem("查找帮助主题(S)",'S');
JMenuItem helpItem=new MyJMenuItem("使用帮助(H)",'H');
JMenuItem aboutItem=new MyJMenuItem("关于扫雷(A)",'A');
//注册事件
startItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//openGame();
setLevel(panelX,panelY,mine_AllCount);
}
});
//单选菜单项
ButtonGroup levelSetGroup=new ButtonGroup();
JRadioButtonMenuItem easyItem=new MyRadioButtonMenuItem("初级(B)",true);
JRadioButtonMenuItem normalItem=new MyRadioButtonMenuItem("中级(I)");
JRadioButtonMenuItem hardItem=new MyRadioButtonMenuItem("高级(E)");
JRadioButtonMenuItem definedItem=new MyRadioButtonMenuItem("自定义(C)...");
//设置单选菜单项快捷键
easyItem.setMnemonic('B');
normalItem.setMnemonic('I');
hardItem.setMnemonic('E');
definedItem.setMnemonic('C');
levelSetGroup.add(easyItem);
levelSetGroup.add(normalItem);
levelSetGroup.add(hardItem);
levelSetGroup.add(definedItem);
exitItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
//注册事件 根据点选的难度级别:设置雷
easyItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setLevel(9,9,10);
}
} );
normalItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setLevel(16,16,40);
}
} );
hardItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setLevel(30,16,99);
}
} );
definedItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int x,y;
x=getLocation().x;
y=getLocation().y;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -