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

📄 hannoitower.java

📁 汉诺塔游戏
💻 JAVA
字号:
package honnoira;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class HannoiTower extends JPanel implements MouseListener,MouseMotionListener
{
   TowerPoint point[];                                          
   int x,y;                                                     
   boolean move=false;                                         
   Disk   plate[];                                              
   int startX,startY;                                          
   int startI ;                                                
   int plateNum=0;
   int width,height;                                           
   char towerName[]={'A','B','C'};                            
   TextArea meg=null;                                      

   public  HannoiTower(int number,int w,int h,char[] name,TextArea text)
   {
        towerName=name;
        plateNum=number;
        width=w;
        height=h;
        meg=text;
        setLayout(null);
        addMouseListener(this);
        addMouseMotionListener(this);
        plate= new Disk[plateNum];
        point=new TowerPoint[3*plateNum];                         
        int space=20;  
        for(int i=0;i<plateNum;i++)                               
          {
            point[i]=new TowerPoint(40+width,100+space,false); 
            space=space+height;
          }
        space=20;
        for(int i=plateNum;i<2*plateNum;i++)                        
          {
            point[i]=new TowerPoint(160+width,100+space,false);
            space=space+height;
          }
        space=20;
        for(int i=2*plateNum;i<3*plateNum;i++)                     
          {
            point[i]=new TowerPoint(280+width,100+space,false);
            space=space+height;
          }
       int tempWidth=width;                                      
       int sub=(int)(tempWidth*0.2);
       for(int i=plateNum-1;i>=0;i--)                            
          {
             plate[i]=new Disk(i,this);
             plate[i].setSize(tempWidth,height);                   
             tempWidth=tempWidth-sub;
          }
        for(int i=0;i<plateNum;i++)                             
          {
            point[i].putPlate(plate[i],this);
            if(i>=1)
            plate[i].setisAbove(true); 
          }
    }
  public void paintComponent(Graphics g)                     
   {
     super.paintComponent(g);
     g.drawLine(point[0].getX(),point[0].getY(),
                point[plateNum-1].getX(),point[plateNum-1].getY());     
     g.drawLine(point[plateNum].getX(),point[plateNum].getY(),
                point[2*plateNum-1].getX(),point[2*plateNum-1].getY()); 
     g.drawLine(point[2*plateNum].getX(),point[2*plateNum].getY(),
                point[3*plateNum-1].getX(),point[3*plateNum-1].getY()); 
     g.drawLine(point[plateNum-1].getX()-width,point[plateNum-1].getY(),
               point[3*plateNum-1].getX()+width,point[3*plateNum-1].getY()); 
     int leftx=point[plateNum-1].getX()-width;
     int lefty=point[plateNum-1].getY();
     int w=(point[3*plateNum-1].getX()+width)-(point[plateNum-1].getX()-width);
     int h=height/2;
     g.setColor(Color.orange);
     g.fillRect(leftx,lefty,w,h);
     g.setColor(Color.red);
     int size=4;
     for(int i=0;i<3*plateNum;i++)                                    
       {
         g.fillOval(point[i].getX()-size/2,point[i].getY()-size/2,size,size);
       }
     g.drawString(towerName[0]+" 濉

⌨️ 快捷键说明

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