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

📄 mainframe.java

📁 一个简单的汉诺塔游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            }
            getactionZhu();
            drawPanel.updata();
            jCheckBoxMenuItem2.setVisible(false);
            jCheckBoxMenuItem1.setVisible(false);
        }
    }
    //---------------------------------------------------------------------------------
    //键盘事件处理
    public void keyPressed(KeyEvent e)                 //键盘事件
    {
        switch(e.getKeyCode())
        {
            case  KeyEvent.VK_LEFT:                    //光标左键键盘事件的处理
            {
                if(drawPanel.v1==true)                 //设定当前控制对象:对柱1控制
                {
                    drawPanel.v1 = !drawPanel.v1;
                    drawPanel.v3 = !drawPanel.v3;
                }
                else if(drawPanel.v2==true)            //设定当前控制对象:对柱2控制
                {
                    drawPanel.v2 = !drawPanel.v2;
                    drawPanel.v1 = !drawPanel.v1;
                }
                else if(drawPanel.v3==true)            //设定当前控制对象:对柱3控制
                {
                    drawPanel.v3 = !drawPanel.v3;
                    drawPanel.v2 = !drawPanel.v2;
                }
            }
            drawPanel.repaint();                       //重画
            break;
            //…………………………………………………………………………………………………
            case  KeyEvent.VK_RIGHT:                  //光标右键动作键盘事件的处理
            {
                if (drawPanel.v1 == true)
                {
                    drawPanel.v1 = !drawPanel.v1;
                    drawPanel.v2 = !drawPanel.v2;
                }
                else if (drawPanel.v2 == true)
                {
                    drawPanel.v2 = !drawPanel.v2;
                    drawPanel.v3 = !drawPanel.v3;
                }
                else if (drawPanel.v3 == true)
                {
                    drawPanel.v3 = !drawPanel.v3;
                    drawPanel.v1 = !drawPanel.v1;
                }
            drawPanel.repaint();
            }
            break;
            //…………………………………………………………………………………………………
            case  KeyEvent.VK_ENTER:                   //回车键动作
            	  getactionZhu();
            
            //确定控制对象:选定柱1(最左侧的杆) 
            if(b1 == true)                             
            {
                if(s1.isEmpty() == false)              //若柱1有盘子判断
                {
                	//获取柱1最上方的盘子对象
                    sp1 = (SuperPlate)s1.lastElement(); 
                    
                    //若柱2有盘子判断,sp2对象接s2
                    if(s2.isEmpty() == false) sp2 = (SuperPlate)s2.lastElement();  
                    //若柱3有盘子判断,sp3对象接s3
                    if(s3.isEmpty() == false) sp3 = (SuperPlate)s3.lastElement();
                    
                    //柱2为空情况
                    if(s2.isEmpty())                              
                    {
                        s1.removeElement(sp1);        //vector数组中删除元素
                        sp1.setLocation(200,290);     //重新设定盘子位置
                        s2.addElement(sp1);
                        press_num++;
                        //System.out.print("s1");
                        //break;
                    }
                    //柱1最上方盘尺寸比柱2最上方盘尺寸小情况
                    else if(sp1.plate_width<sp2.plate_width)      
                    {
                        s1.removeElement(sp1);
                        num = s2.size();
                        sp1.setLocation(200,290-num*d);
                        s2.addElement(sp1);
                        press_num++;
                        //System.out.print("s2");
                    }
                    //柱3为空情况
                    else if(s3.isEmpty())                         
                    {
                        s1.removeElement(sp1);
                        sp1.setLocation(300,290);
                        s3.addElement(sp1);
                        press_num++;
                        //System.out.print("s3");
                    }
                    //柱1最上方盘尺寸比柱3最上方盘尺寸小情况
                    else if(sp1.plate_width<sp3.plate_width)      
                    {
                        s1.removeElement(sp1);
                        num = s3.size();
                        sp1.setLocation(300,290-num*d);
                        s3.addElement(sp1);
                        press_num++;
                    }
                }
            }
            
            //确定控制对象:选定柱2(中间的杆) 
            else if(b2 == true)                                   
            {
                if(s2.isEmpty() == false)
                {
                    sp2 = (SuperPlate)s2.lastElement();
                    if(s1.isEmpty() == false) sp1 = (SuperPlate)s1.lastElement();
                    if(s3.isEmpty() == false) sp3 = (SuperPlate)s3.lastElement();
                    if(s3.isEmpty())
                    {
                        s2.removeElement(sp2);
                        sp2.setLocation(300,290);
                        s3.addElement(sp2);
                        press_num++;
                    }
                    else if(sp2.plate_width<sp3.plate_width)
                    {
                        s2.removeElement(sp2);
                        num = s3.size();
                        sp2.setLocation(300,290-num*d);
                        s3.addElement(sp2);
                        press_num++;
                    }
                    else if(s1.isEmpty())
                    {
                        s2.removeElement(sp2);
                        sp2.setLocation(100,290);
                        s1.addElement(sp2);
                        press_num++;
                    }
                    else if(sp2.plate_width<sp1.plate_width)
                    {
                        s2.removeElement(sp2);
                        num = s1.size();
                        sp2.setLocation(100,290-num*d);
                        s1.addElement(sp2);
                        press_num++;
                    }
                }
            }
            
            //确定控制对象:选定柱3(最右侧的杆) 
            else if(b3 == true)                                   
            {
                if(!s3.isEmpty())
                {
                    sp3 = (SuperPlate)s3.lastElement();
                    if(s2.isEmpty() == false) sp2 = (SuperPlate)s2.lastElement();
                    if(s1.isEmpty() == false) sp1 = (SuperPlate)s1.lastElement();
                    if(s1.isEmpty())
                    {
                        s3.removeElement(sp3);
                        sp3.setLocation(100,290);
                        s1.addElement(sp3);
                        press_num++;
                    }
                    else if(sp3.plate_width<sp1.plate_width)
                    {
                        s3.removeElement(sp3);
                        num = s1.size();
                        sp3.setLocation(100,290-num*d);
                        s1.addElement(sp3);
                        press_num++;
                    }
                    else if(s2.isEmpty())
                    {
                        s3.removeElement(sp3);
                        sp3.setLocation(200,290);
                        s2.addElement(sp3);
                        press_num++;
                    }
                    else if(sp3.plate_width<sp2.plate_width)
                    {
                        s3.removeElement(sp3);
                        num = s2.size();
                        sp3.setLocation(200,290-num*d);
                        s2.addElement(sp3);
                        press_num++;
                    }
                }
            }
            drawPanel.press_num = press_num;
            drawPanel.updata();             //更新drawPanel对象中状态
            winNum = s3.size();
            drawPanel.getWinNum(winNum);
            break;
        }
    }
    public void keyTyped(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
    
    //用于获取哪个杆被选中状态
    public void getactionZhu()
    {
        this.b1 = drawPanel.v1;
        this.b2 = drawPanel.v2;
        this.b3 = drawPanel.v3;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -