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

📄 demon.java

📁 本文件包中包含了15个java课程设计。对java学习是很不错的。
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package 中国象棋打谱系统;/** * * @author Administrator */import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class Demon extends JPanel  implements ActionListener,Runnable{   public JButton replay=null,next=null,auto=null,stop=null;   LinkedList 棋谱=null;   Thread 自动演示=null;   int index=-1;   ChessBoard board=null;   JTextArea text;   JTextField 时间间隔=null;   int time=1000;   String 演示过程="";   JSplitPane splitH=null,splitV=null;   public  Demon(ChessBoard board)   {            this.board=board;        replay=new JButton("重新演示");        next=new JButton("下一步");        auto=new JButton("自动演示");        stop=new JButton("暂停演示");        自动演示=new Thread(this);        replay.addActionListener(this);        next.addActionListener(this);        auto.addActionListener(this);        stop.addActionListener(this);         text=new JTextArea();         时间间隔=new JTextField("1");        setLayout(new BorderLayout());        JScrollPane pane=new JScrollPane(text);        JPanel p=new JPanel(new GridLayout(3,2));        p.add(next);        p.add(replay);        p.add(auto);        p.add(stop);        p.add(new JLabel("时间间隔(秒)",SwingConstants.CENTER)) ;        p.add(时间间隔);        splitV=new JSplitPane(JSplitPane.VERTICAL_SPLIT,pane,p);        splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,board,splitV);        splitV.setDividerSize(5);        splitV.setDividerLocation(400);        splitH.setDividerSize(5);        splitH.setDividerLocation(460);        add(splitH,BorderLayout.CENTER);         validate();    }    public void set棋谱(LinkedList 棋谱)   {     this.棋谱=棋谱;   } public char numberToLetter(int n)     {     char c='\0';    switch(n)     {       case 1 : c='A'; break;       case 2 : c='B'; break;       case 3 : c='C'; break;       case 4 : c='D'; break;       case 5 : c='E'; break;       case 6 : c='F'; break;       case 7 : c='G'; break;       case 8 : c='H'; break;       case 9 : c='I'; break;       case 10 : c='J'; break;     }     return c;  } public void actionPerformed(ActionEvent e)  {    if(e.getSource()==next)      {         index++;         if(index<棋谱.size())           {               演示一步(index);           }         else           {             演示结束("棋谱演示完毕");           }        }     if(e.getSource()==replay)       {          board=new ChessBoard(45,45,9,10);          splitH.remove(board);          splitH.setDividerSize(5);          splitH.setDividerLocation(460);          splitH.setLeftComponent(board);          splitH.validate();          index=-1;          text.setText(null);       }     if(e.getSource()==auto)       {           next.setEnabled(false);           replay.setEnabled(false);            try              {                time=1000*Integer.parseInt(时间间隔.getText().trim());              }           catch(NumberFormatException ee)              {                time=1000;              }             if(!(自动演示.isAlive()))                       {                自动演示=new Thread(this);                board=new ChessBoard(45,45,9,10);                splitH.remove(board);                splitH.setDividerSize(5);                splitH.setDividerLocation(460);                splitH.setLeftComponent(board);                splitH.validate();                text.setText(null);                自动演示.start();             }          }     if(e.getSource()==stop)       {          if(e.getActionCommand().equals("暂停演示"))               {                 演示过程="暂停演示";                 stop.setText("继续演示");                 stop.repaint();               }          if(e.getActionCommand().equals("继续演示"))               {                 演示过程="继续演示";                 自动演示.interrupt();                    stop.setText("暂停演示");                 stop.repaint();               }       }  }  public synchronized void run()  {    for(index=0;index<棋谱.size();index++)       {         try{              Thread.sleep(time);            }         catch(InterruptedException e)            {            }           while(演示过程.equals("暂停演示"))            {                   try{                      wait();                      }                  catch(InterruptedException e)                    {                      notifyAll();                      }              }         演示一步(index);       }     if(index>=棋谱.size())       {         演示结束("棋谱演示完毕");         next.setEnabled(true);         replay.setEnabled(true);         }   }  public void 演示一步(int index)  {     MoveStep step=(MoveStep)棋谱.get(index);          Point pStart=step.pStart;          Point pEnd  =step.pEnd;          int startI  =pStart.x;          int startJ  =pStart.y;          int endI    =pEnd.x;          int endJ    =pEnd.y;          ChessPiece piece=(board.point)[startI][startJ].getPiece();      if((board.point)[endI][endJ].isPiece()==true)          {            ChessPiece pieceRemoved=(board.point)[endI][endJ].getPiece();            (board.point)[endI][endJ].reMovePiece(pieceRemoved,board);            board.repaint();            (board.point)[endI][endJ].setPiece(piece,board);            (board.point)[startI][startJ].set有棋子(false);            board.repaint();          }      else          {            (board.point)[endI][endJ].setPiece(piece,board);            (board.point)[startI][startJ].set有棋子(false);                            }      String 棋子类别=piece.棋子类别();      String name=piece.getName();      String m="#"+棋子类别+name+": "+                   startI+numberToLetter(startJ)+" 到 "+endI+numberToLetter(endJ);      text.append(m);      if(piece.棋子类别().equals(board.黑方颜色))            text.append("\n");  } public void 演示结束(String message)  {    splitH.remove(board);    splitH.setDividerSize(5);    splitH.setDividerLocation(460);    JLabel label=new JLabel(message);    label.setFont(new Font("隶书",Font.BOLD,40));    label.setForeground(Color.blue);     label.setHorizontalAlignment(SwingConstants.CENTER);    splitH.setLeftComponent(label);    splitH.validate();  }}

⌨️ 快捷键说明

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