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

📄 hannoi.txt

📁 很不错的游戏
💻 TXT
字号:
import javax.swing.JOptionPane; 
 import javax.swing.*; 
 import java.awt.*; 
 import java.awt.Graphics; 
   
      
 public class Hanoi extends JFrame 
  { 
    static int n=Integer.parseInt(JOptionPane.showInputDialog("Enter number of disks:")); 
    static int time=Integer.parseInt(JOptionPane.showInputDialog("Enter the move frequency of disks:")); 
    static int num=0; 
    static char[] array=new char[n]; 
    private static Thread animate; 
             
    MyPanel panel =new MyPanel(); 
    static String string=""; 
    static JLabel label=new JLabel(); 
             
             
 public Hanoi() 
    {
     getContentPane ().setLayout (new BorderLayout()); 
     getContentPane ().add (label,BorderLayout.EAST);         
     getContentPane ().add (panel,BorderLayout.CENTER); 
    } 
                
 public static void main (String[] args) 
     { 
       for(int i=0;i<n;i++) 
           { 
            array[i]=’A’; 
            } 
            Hanoi hanoi=new Hanoi(); 
            hanoi.setTitle("Hanoi Tower"); 
            hanoi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            hanoi.setSize(1450, 400); 
            hanoi.setVisible(true); 
            hanoi.moveDisks(n, ’A’, ’C’, ’B’); 
       } 
             
  public class MyPanel extends JPanel 
      {                   
       public void paintComponent(Graphics g)  
          { 
           super.paintComponent(g); 
           g.setColor(Color.RED); 
           g.drawLine(50,310,1100,310); 
           g.fillRect(200,10,10,300); 
           g.drawString("A", 203, 340); 
           g.fillRect(500,10,10,300); 
           g.drawString("B", 503, 340); 
           g.fillRect(800,10,10,300); 
           g.drawString("C", 803, 340); 
           draw(g); 
           repaint();  
           } 
 void draw(Graphics g) 
    { 
     g.setColor(Color.YELLOW); 
     num=0; 
     for(int  i=n;i>0;i--) 
        { 
          if(array[(int)(i-1.0)]==’A’) 
             { 
               g.fillOval(205-(int)((i-1+1.0)/n*150),290-20*num,2*(int)((i-1+1.0)/n*150),20); 
               num++;                                                    
             }
          } 
           num=0; 
           for(int  i=n;i>0;i--) 
              { 
                if(array[(int)(i-1)]==’B’) 
                   { 
                    g.fillOval(505-(int)((i-1+1.0)/n*150),290-20*num,2*(int)((i-1+1.0)/n*150),20); 
                     num++; 
                   } 
                                    
               } 
               num=0; 
               for(int  i=n;i>0;i--) 
                  { 
                   if(array[(int)(i-1)]==’C’) 
                     { 
                      g.fillOval(805-(int)((i-1+1.0)/n*150),290-20*num,2*(int)((i-1+1.0)/n*150),20); 
                       num++;
                    } 
                                      
                   } 
                    g.setColor(Color.BLACK); 
                      } 
               } 
  public  void moveDisks(int a, char fromTower,char toTower, char auxTower) 
  { 
     if (a == 1) // Stopping condition 
      { 
        System.out.println("Move disk " + a + " from " +fromTower + " to " + toTower); 
        string="Move disk " + a + " from " +fromTower + " to " + "toTower"+"\n"+"       " ; 
        label.setText(string); 
        array[a-1]=toTower; 
        pause(); 
        } 
      else 
        { 
         moveDisks(a - 1, fromTower, auxTower, toTower); 
         System.out.println("Move disk " + a + " from " +fromTower + " to " + toTower);  122:                         
         string="Move disk " + a + " from " +fromTower + " to " + toTower+ "\n"+"       " ; 
         label.setText(string); 
         array[a-1]=toTower; 
         pause(); 
         moveDisks(a - 1, auxTower, toTower, fromTower); 
           
          } 
        }           
  public static void pause() 
  { 
     try 
     { 
    Thread.sleep(time*100);//可以修改此值加快盘子移动的速度
    } 
  catch(InterruptedException e) 
                 { 
                    	                 } 
                    	        } 
                    	           
                    	  } 
                    	   

⌨️ 快捷键说明

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