⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 windows的经典游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            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 + -