亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hannoitower.java

?? 一個(gè)別人開發(fā)的漢諾漢諾塔程序!比較高級的!歡迎大家下載學(xué)習(xí)交流!
?? JAVA
字號:
package zdhnt;

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   盤子[];                                              
   int startX,startY;                                          
   int startI ;                                                
   int 盤子數(shù)目=0;
   int width,height;                                           
   char towerName[]={'A','B','C'};                            
   TextArea 信息條=null;                                      

   public  HannoiTower(int number,int w,int h,char[] name,TextArea text)
   {
        towerName=name;
        盤子數(shù)目=number;
        width=w;
        height=h;
        信息條=text;
        setLayout(null);
        addMouseListener(this);
        addMouseMotionListener(this);
        盤子= new Disk[盤子數(shù)目];
        point=new TowerPoint[3*盤子數(shù)目];                         
         int space=20;  
        for(int i=0;i<盤子數(shù)目;i++)                               
          {
            point[i]=new TowerPoint(40+width,100+space,false); 
            space=space+height;
          }
        space=20;
        for(int i=盤子數(shù)目;i<2*盤子數(shù)目;i++)                        
          {
            point[i]=new TowerPoint(160+width,100+space,false);
            space=space+height;
          }
        space=20;
        for(int i=2*盤子數(shù)目;i<3*盤子數(shù)目;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=盤子數(shù)目-1;i>=0;i--)                            
          {
             盤子[i]=new Disk(i,this);
             盤子[i].setSize(tempWidth,height);                   
             tempWidth=tempWidth-sub;
          }
        for(int i=0;i<盤子數(shù)目;i++)                             
          {
            point[i].放置盤子(盤子[i],this);
            if(i>=1)
            盤子[i].set上方有盤(true); 
          }
    }
  public void paintComponent(Graphics g)                     
   {
     super.paintComponent(g);
     g.drawLine(point[0].getX(),point[0].getY(),
                point[盤子數(shù)目-1].getX(),point[盤子數(shù)目-1].getY());     
     g.drawLine(point[盤子數(shù)目].getX(),point[盤子數(shù)目].getY(),
                point[2*盤子數(shù)目-1].getX(),point[2*盤子數(shù)目-1].getY()); 
     g.drawLine(point[2*盤子數(shù)目].getX(),point[2*盤子數(shù)目].getY(),
                point[3*盤子數(shù)目-1].getX(),point[3*盤子數(shù)目-1].getY()); 
     g.drawLine(point[盤子數(shù)目-1].getX()-width,point[盤子數(shù)目-1].getY(),
               point[3*盤子數(shù)目-1].getX()+width,point[3*盤子數(shù)目-1].getY()); 
     int leftx=point[盤子數(shù)目-1].getX()-width;
     int lefty=point[盤子數(shù)目-1].getY();
     int w=(point[3*盤子數(shù)目-1].getX()+width)-(point[盤子數(shù)目-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*盤子數(shù)目;i++)                                    
       {
         g.fillOval(point[i].getX()-size/2,point[i].getY()-size/2,size,size);
       }
     g.drawString(""+towerName[0]+"塔",point[盤子數(shù)目-1].getX(),point[盤子數(shù)目-1].getY()+30);
     g.drawString(""+towerName[1]+"塔",point[2*盤子數(shù)目-1].getX(),point[盤子數(shù)目-1].getY()+30);
     g.drawString(""+towerName[2]+"塔",point[3*盤子數(shù)目-1].getX(),point[盤子數(shù)目-1].getY()+30);
     
     g.drawString("將全部盤子從"+towerName[0]+"塔搬運(yùn)到"+towerName[1]+"塔或"+towerName[2]+"塔",
                  point[盤子數(shù)目-1].getX(),point[盤子數(shù)目-1].getY()+80);        
   } 
  public void mousePressed(MouseEvent e)
  { 
    Disk  盤子=null;
    Rectangle rect=null;
    if(e.getSource()==this)                                 
        move=false;
    if(move==false)
      if(e.getSource() instanceof Disk)
       {
         盤子=(Disk)e.getSource();                          
         startX=盤子.getBounds().x;                         
         startY=盤子.getBounds().y;     
         
          rect=盤子.getBounds();
          for(int i=0;i<3*盤子數(shù)目;i++)   
            {
               int x=point[i].getX();
               int y=point[i].getY();
                  if(rect.contains(x,y))
                   {                   
                     startI=i;                            
                     break;
                   }
            }
       }
  } 
 public void mouseMoved(MouseEvent e)
  { 
  }
 public void mouseDragged(MouseEvent e)
  {
 
    Disk disk=null;
       if(e.getSource() instanceof Disk)
         {
           disk=(Disk)e.getSource();                        
           move=true; 
           
           e=SwingUtilities.convertMouseEvent(disk,e,this); 
         }
    
       if(e.getSource()==this)
        {
          if(move&&disk!=null)
           {
            x=e.getX(); 
            y=e.getY();
            if(disk.get上方有盤()==false)
               disk.setLocation(x-disk.getWidth()/2,y-disk.getHeight()/2);
           }
        }
 }
 public void mouseReleased(MouseEvent e)
  { 
    Disk disk=null;
    move=false;
    Rectangle rect=null;
    if(e.getSource() instanceof Disk)
      {
        disk=(Disk)e.getSource();                            
        rect=disk.getBounds();
         
        e=SwingUtilities.convertMouseEvent(disk,e,this);    
      }
    if(e.getSource()==this)
     {
        boolean containTowerPoint=false;
        int x=0,y=0;
        int endI=0;
        if(disk!=null)
         { 
          for(int i=0;i<3*盤子數(shù)目;i++)
            {
                x=point[i].getX();
                y=point[i].getY();
                if(rect.contains(x,y))
                   { 
                     containTowerPoint=true;
                     endI=i;
                     break;
                  }
            }
         }
        if(disk!=null&&containTowerPoint)
         {
         
           if(point[endI].是否有盤子()==true)        
             { 
               disk.setLocation(startX,startY);                        
             } 
          else
             {
 
                if(endI==盤子數(shù)目-1||endI==2*盤子數(shù)目-1||endI==3*盤子數(shù)目-1)  
                 { 
                  point[endI].放置盤子(disk,this);                       
                  
                  if(startI!=盤子數(shù)目-1&&startI!=2*盤子數(shù)目-1&&startI!=3*盤子數(shù)目-1)
                    {
                     (point[startI+1].獲取盤子()).set上方有盤(false);
                     point[startI].set有盤子(false);     
                    }
                  else
                    {
                       point[startI].set有盤子(false);  
                    } 
                 } 
                else 
                 { 
                   if(point[endI+1].是否有盤子()==true)
                    {
                      Disk tempDisk=point[endI+1].獲取盤子();
                      if((tempDisk.getNumber()-disk.getNumber())>=1)
                       {
                        point[endI].放置盤子(disk,this);                
                         if(startI!=盤子數(shù)目-1&&startI!=2*盤子數(shù)目-1&&startI!=3*盤子數(shù)目-1)
                          {
                            (point[startI+1].獲取盤子()).set上方有盤(false);
                             point[startI].set有盤子(false); 
                             tempDisk.set上方有盤(true);   
                          }
                         else
                          {
                             point[startI].set有盤子(false); 
                             tempDisk.set上方有盤(true); 
                          } 
                       }
                      else
                       {
                         disk.setLocation(startX,startY); 
                       }
                    }
                   else
                    {
                      disk.setLocation(startX,startY);                   
                    }
                 } 
            }
        
                
        }
     if(disk!=null&&!containTowerPoint)        
        {        
          disk.setLocation(startX,startY);
        }
     } 
  }
 public void mouseEntered(MouseEvent e)
  {
  }
 public void mouseExited(MouseEvent e)
  { 
  }
 public void mouseClicked(MouseEvent e)
  { 
  }
 
 public void 自動演示搬運(yùn)盤子(int 盤子數(shù),char one,char two,char three)
  {
     if(盤子數(shù)==1)
       {
         信息條.append(""+one+" 到: "+three+"塔\n");
         Disk disk=在塔中獲取最上面的盤子(one);
         int startI=在塔中獲取最上面盤子的位置(one);
         int endI=在塔中獲取最上面盤子的上方位置(three);                 
         if(disk!=null)
           {
             point[endI].放置盤子(disk,this);
             point[startI].set有盤子(false);
              try{
                  Thread.sleep(1000);                       
                 }
              catch(Exception ee)
                 {
                 }
           }
        }
      else
        {
          自動演示搬運(yùn)盤子(盤子數(shù)-1,one,three,two);
	  信息條.append(""+one+" 到: "+three+"塔\n");
          Disk disk=在塔中獲取最上面的盤子(one);
          int startI=在塔中獲取最上面盤子的位置(one);
          int endI=在塔中獲取最上面盤子的上方位置(three);                 
          if(disk!=null)
            {
             point[endI].放置盤子(disk,this);
             point[startI].set有盤子(false);
             try {
                  Thread.sleep(1000);                       
                 }
              catch(Exception ee)
                 {
                 }
            } 
	  自動演示搬運(yùn)盤子(盤子數(shù)-1,two,one,three);
        }
  }
 public Disk 在塔中獲取最上面的盤子(char 塔名)
  {
    Disk disk=null;
    if(塔名==towerName[0])
      {
         for(int i=0;i<盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 disk=point[i].獲取盤子();
                 break;
               }
           }  
      }
     if(塔名==towerName[1])
      {
         for(int i=盤子數(shù)目;i<2*盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 disk=point[i].獲取盤子();
                 break;
               }
           }  
      }
      if(塔名==towerName[2])
      {
         for(int i=2*盤子數(shù)目;i<3*盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 disk=point[i].獲取盤子();
                 break;
               }
           }  
      }
   return disk;
  } 
 public int 在塔中獲取最上面盤子的上方位置(char 塔名)
  {
    int position=0;
    if(塔名==towerName[0])
      {  
         int i=0;
         for(i=0;i<盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 position=Math.max(i-1,0);
                 break;
               }
           } 
         if(i==盤子數(shù)目)
           {
             position=盤子數(shù)目-1;
           } 
      }
     if(塔名==towerName[1])
      {  
          int i=0;
         for(i=盤子數(shù)目;i<2*盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 position=Math.max(i-1,0);
                 break;
               }
           } 
          if(i==2*盤子數(shù)目)
           {
             position=2*盤子數(shù)目-1;
           }  
      }
      if(塔名==towerName[2])
      {
         int i=0;
         for(i=2*盤子數(shù)目;i<3*盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 position=Math.max(i-1,0);
                 break;
               }
           }  
          if(i==3*盤子數(shù)目)
           {
             position=3*盤子數(shù)目-1;
           }  
      }
    return position;
  } 
  public int 在塔中獲取最上面盤子的位置(char 塔名)
  {
    int position=0;
    if(塔名==towerName[0])
      {  
         int i=0;
         for(i=0;i<盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 position=i;
                 break;
               }
           } 
         if(i==盤子數(shù)目)
           {
             position=盤子數(shù)目-1;
           } 
      }
     if(塔名==towerName[1])
      {  
          int i=0;
         for(i=盤子數(shù)目;i<2*盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 position=i;
                 break;
               }
           } 
          if(i==2*盤子數(shù)目)
           {
             position=2*盤子數(shù)目-1;
           }  
      }
      if(塔名==towerName[2])
      {
         int i=0;
         for(i=2*盤子數(shù)目;i<3*盤子數(shù)目;i++)
           {
             if(point[i].是否有盤子()==true)
               {
                 position=i;
                 break;
               }
           }  
          if(i==3*盤子數(shù)目)
           {
             position=3*盤子數(shù)目-1;
           }  
      }
    return position;
  } 
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久狠狠亚洲综合| 亚洲女厕所小便bbb| 日本欧美一区二区三区| 91精品国产一区二区三区| 日韩中文字幕区一区有砖一区 | 欧美人xxxx| 天堂一区二区在线| 欧美成人一区二区三区在线观看| 美女视频黄久久| 国产日韩精品视频一区| av影院午夜一区| 亚洲自拍偷拍图区| 日韩视频免费观看高清完整版在线观看 | 欧美在线免费观看视频| 亚洲成av人片在线观看无码| 91精品国产aⅴ一区二区| 国内精品视频一区二区三区八戒| 国产欧美一区二区精品性| 久久一留热品黄| 福利一区二区在线| 一个色在线综合| 日韩欧美亚洲国产另类| 懂色av噜噜一区二区三区av| 一区二区三区中文字幕电影| 日韩欧美一区电影| av欧美精品.com| 麻豆成人av在线| 亚洲欧美日韩人成在线播放| 日韩欧美一级二级三级久久久| 国产成人av自拍| 亚洲va韩国va欧美va| 2023国产精品| 欧美性三三影院| 国产91在线观看| 丝袜美腿亚洲综合| 综合在线观看色| 精品国产成人系列| 在线精品视频小说1| 国产成人av一区二区三区在线观看| 亚洲欧美日本韩国| 久久久久久久久久久久电影| 欧美性受xxxx黑人xyx性爽| 国产一区久久久| 午夜影院久久久| 亚洲天堂成人在线观看| 久久一区二区三区四区| 欧美日本一道本| 色综合天天性综合| 国产精品一区二区久久不卡| 三级在线观看一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 精品播放一区二区| 欧美一区二区美女| 欧美日韩在线播放三区| a级精品国产片在线观看| 激情综合网天天干| 五月天国产精品| 亚洲自拍偷拍网站| 亚洲日本在线天堂| 国产精品美女视频| 国产喂奶挤奶一区二区三区| 日韩免费视频一区| 日韩欧美精品在线视频| 91麻豆精品国产91久久久久| 在线观看一区二区视频| 一本大道久久a久久精品综合| 国产91丝袜在线18| 国产精品亚洲第一| 激情综合亚洲精品| 国产一区二三区| 蜜臀国产一区二区三区在线播放 | 亚洲一区二区精品视频| 亚洲欧美在线另类| 国产精品欧美久久久久无广告| 久久久美女毛片| 久久久国际精品| 中文字幕精品三区| 国产精品进线69影院| 亚洲天堂精品在线观看| 亚洲精品乱码久久久久久黑人| 中文字幕制服丝袜一区二区三区| 亚洲国产高清不卡| 国产精品毛片无遮挡高清| 欧美国产1区2区| 亚洲欧美综合色| 一区二区三区中文字幕电影| 亚洲国产你懂的| 天天综合日日夜夜精品| 美女视频一区二区三区| 国产揄拍国内精品对白| 懂色av一区二区在线播放| 99视频精品全部免费在线| 91麻豆免费看片| 欧美理论电影在线| 精品福利一区二区三区免费视频| 久久精品亚洲国产奇米99| 国产女同互慰高潮91漫画| 亚洲欧美视频在线观看视频| 亚洲国产一区二区三区| 毛片不卡一区二区| 国产成人精品三级| 色综合中文综合网| 欧美日韩高清一区二区三区| 日韩片之四级片| 国产偷国产偷精品高清尤物| 自拍av一区二区三区| 亚洲一区二区偷拍精品| 蜜臀av一区二区| www.成人在线| 欧美猛男男办公室激情| 26uuu色噜噜精品一区二区| 国产精品不卡一区| 午夜视频在线观看一区二区三区| 精品在线一区二区三区| 99久久久无码国产精品| 欧美日韩国产一区| 国产日韩欧美综合在线| 亚洲综合偷拍欧美一区色| 精品伊人久久久久7777人| 91免费版在线看| 欧美一区二区在线免费观看| 日本一区二区三区国色天香 | 日韩一区二区三免费高清| 国产亚洲精品精华液| 亚洲影视在线观看| 国产精品123| 欧美精品久久久久久久多人混战| 国产日韩欧美不卡| 丝袜美腿亚洲综合| 成人av综合在线| 精品少妇一区二区三区日产乱码 | 色狠狠一区二区| 日韩欧美国产一区二区三区| 亚洲人成网站在线| 精彩视频一区二区三区| 欧美性大战久久久久久久蜜臀| 久久精品亚洲一区二区三区浴池| 亚洲午夜久久久久中文字幕久| 国产成人av影院| 精品三级在线看| 日韩精品福利网| 91精品办公室少妇高潮对白| 国产欧美日本一区视频| 蜜桃视频一区二区| 欧美精品123区| 一区二区三区四区中文字幕| 成人少妇影院yyyy| 久久亚洲影视婷婷| 日本91福利区| 51精品久久久久久久蜜臀| 一区二区在线观看免费| 不卡电影一区二区三区| 久久综合狠狠综合久久综合88 | 热久久一区二区| 欧美日韩不卡一区| 亚洲线精品一区二区三区八戒| 99综合影院在线| 国产精品久久久久久久岛一牛影视| 国产综合色精品一区二区三区| 日韩一区二区三区四区五区六区| 午夜激情综合网| 欧美久久久久免费| 亚洲一区av在线| 欧美天堂亚洲电影院在线播放| 亚洲免费观看高清完整版在线观看 | 国产视频一区在线播放| 国产一区二区三区在线观看免费| 精品国产露脸精彩对白| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一级二级三级蜜桃| 日韩国产欧美在线视频| 91精品久久久久久久91蜜桃| 免费看日韩a级影片| 欧美一区二区三区精品| 美女视频第一区二区三区免费观看网站 | 国产视频亚洲色图| 国产福利91精品一区二区三区| 久久久美女毛片| 成人理论电影网| 亚洲伦在线观看| 欧美日韩国产天堂| 免费观看30秒视频久久| 久久先锋影音av鲁色资源| 岛国一区二区三区| 亚洲欧美色一区| 欧美三级韩国三级日本三斤 | 久久99精品久久久久婷婷| 久久蜜桃香蕉精品一区二区三区| 国产精品资源在线观看| 国产精品久久久久婷婷二区次| 一本色道久久加勒比精品| 天天色综合成人网| 欧美精品一区二区三区在线| 懂色av一区二区三区免费观看| 亚洲人午夜精品天堂一二香蕉| 欧美日韩精品免费| 国产在线观看免费一区| 亚洲欧美日本在线| 日韩免费在线观看| 99久久99久久精品免费看蜜桃|