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

📄 chuangti.java~4~

📁 一个使用JB9编写的网络俄罗斯方块,大家可以下载如有不足还请原谅,有是可以给我EMAIL
💻 JAVA~4~
字号:
package one_piece;import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class CHUANGTI extends JFrame implements Runnable {  JPanel contentPane;  Panel Mine = new Panel();  Panel Rival = new Panel();  XYLayout xYLayout1 = new XYLayout();  ImageIcon kuai;  JLabel jLabel1 = new JLabel(new ImageIcon("Mine1.gif"));  JLabel jLabel2 = new JLabel();  //JLabel jLabel2 = new JLabel(new ImageIcon("beijing5.gif"));  //JLabel jLabel1 = new JLabel(new ImageIcon("iamges/Mine1.gif"));  //控制自己游戏区域的数组  public static   int[][] mine = new int[10][20];  //控制对手游戏区域的数组  public static   int[][] ravil = new int[10][20];  //生成新的方块  Kuai  m_prePiece[] = new Kuai[4];  //储存用的方块  Kuai  m_curPiece[] = new Kuai[4];  //用来存储游戏中的方块图片  ImageIcon[]  tukuai= new ImageIcon[10];  //存储游戏速度  public  static  int thespeed = 7;  //存储玩家分数  public  static   long  Score;  //游戏是否在进行  boolean IsGameInPlay;  //是否要产生新方块  boolean IsNeedNewPiece;  //游戏是否暂停  boolean Paused=false;  //延迟时间  int DelayMap[]={600,600,600,600,500,400,300,250,200,150,100};  //线程  Thread  theThread = null;  //改变thespeed用的形参  int value;  //转换value用的  String  valuestr;  JButton jButton1 = new JButton();  public CHUANGTI() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();      myinit();    }    catch(Exception e) {      e.printStackTrace();    }  }  //Component initialization  private void jbInit() throws Exception  {    contentPane = (JPanel) this.getContentPane();    contentPane.setLayout(xYLayout1);    this.setSize(new Dimension(1024, 768));    this.setTitle("ONE PIECE");    jButton1.setText("jButton1");    jButton1.addActionListener(new CHUANGTI_jButton1_actionAdapter(this));    contentPane.add(Mine,   new XYConstraints(Mine.sqlenth*13, Mine.sqlenth*4+10, -1, -1));    contentPane.add(Rival,   new XYConstraints(Mine.sqlenth*38, Mine.sqlenth*4+10, -1, -1));    Mine.add(jLabel1,  new XYConstraints(0, 0, -1, -1));    contentPane.add(jLabel2,  new XYConstraints(0, 0, -1, -1));    contentPane.add(jButton1,   new XYConstraints(6, 652, 72, 28));   tukuai[1] = new ImageIcon(new java.net.URL("file:///E:/Picture/money1.gif"));    tukuai[2] = new ImageIcon(new java.net.URL("file:///E:/Picture/money2.gif"));     tukuai[3] = new ImageIcon(new java.net.URL("file:///E:/Picture/money3.gif"));      tukuai[4] = new ImageIcon(new java.net.URL("file:///E:/Picture/money4.gif"));       tukuai[5] = new ImageIcon(new java.net.URL("file:///E:/Picture/money5.gif"));        tukuai[6] = new ImageIcon(new java.net.URL("file:///E:/Picture/money6.gif"));         tukuai[7] = new ImageIcon(new java.net.URL("file:///E:/Picture/money7.gif"));          tukuai[8] = new ImageIcon(new java.net.URL("file:///E:/Picture/money8.gif"));           tukuai[9] = new ImageIcon(new java.net.URL("file:///E:/Picture/money9.gif"));  }  private void myinit()  {    try{       kuai = new ImageIcon(new java.net.URL("file:///E:/Picture/money2.gif"));       for(int i = 0;i<Mine.Comln;i++)     {  for(int j = 0;j<Mine.Row;j++)         Rival.SetIcon(i,j,kuai);         //Mine.SetIcon(i, j, kuai);     }       }    catch(Exception e){}  }  private void newPrePiece(){     int middle=Mine.Comln/2;     //5     int top=Mine.Row;     //20     int i;           m_prePiece[0]=new Kuai(middle,top-1,4);           m_prePiece[1]=new Kuai(middle+1,top-1,4);           m_prePiece[2]=new Kuai(middle-1,top-1,4);           m_prePiece[3]=new Kuai(middle-1,top-2,4);/*           for(i = 0;i<4;i++)           { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);           }*//*    switch((int)(Math.random()*7))     {//Math.ramdom 产生0--1的数         case 0:             //XXXX  red;        // m_nPieceValue=100;         m_prePiece[0]=new Kuai(middle-1,top-1,1);         m_prePiece[1]=new Kuai(middle-2,top-1,1);         m_prePiece[2]=new Kuai(middle,top-1,1);         m_prePiece[3]=new Kuai(middle+1,top-1,1);         for(i = 0;i<4;i++)        { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);        }        // Yulan.add(labelyulan[j][i],  new XYConstraints( 10+sqlenth*j, 80+sqlenth*i , -1, -1));         break;         case 1:        // X orange;             //XXX        // m_nPieceValue=200;         m_prePiece[0]=new Kuai(middle,top-2,5);         m_prePiece[1]=new Kuai(middle,top-1,5);         m_prePiece[2]=new Kuai(middle-1,top-2,5);         m_prePiece[3]=new Kuai(middle+1,top-2,5);         for(i = 0;i<4;i++)      { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);      }         break;         case 2:             //XX  green;        // m_nPieceValue=180;         m_prePiece[0]=new Kuai(middle,top-2,2);         m_prePiece[1]=new Kuai(middle-1,top-1,2);         m_prePiece[2]=new Kuai(middle,top-1,2);         m_prePiece[3]=new Kuai(middle+1,top-2,2);         for(i = 0;i<4;i++)      { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);      }         break;         case 3:            //XX  blue;        // m_nPieceValue=180;         m_prePiece[0]=new Kuai(middle,top-2,7);         m_prePiece[1]=new Kuai(middle+1,top-1,7);         m_prePiece[2]=new Kuai(middle,top-1,7);         m_prePiece[3]=new Kuai(middle-1,top-2,7);         for(i = 0;i<4;i++)      { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);      }         break;         case 4:             //XX  light blue;       //  m_nPieceValue=100;         m_prePiece[0]=new Kuai(middle-1,top-1,3);         m_prePiece[1]=new Kuai(middle,top-1,3);         m_prePiece[2]=new Kuai(middle-1,top-2,3);         m_prePiece[3]=new Kuai(middle,top-2,3);         for(i = 0;i<4;i++)      { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);      }         break;         case 5:             //XXX  purle;        // m_nPieceValue=120;         m_prePiece[0]=new Kuai(middle,top-1,6);         m_prePiece[1]=new Kuai(middle-1,top-1,6);         m_prePiece[2]=new Kuai(middle+1,top-1,6);         m_prePiece[3]=new Kuai(middle+1,top-2,6);         for(i = 0;i<4;i++)      { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);      }         break;         case 6:             //XXX  yellow;        // m_nPieceValue=120;         m_prePiece[0]=new Kuai(middle,top-1,4);         m_prePiece[1]=new Kuai(middle+1,top-1,4);         m_prePiece[2]=new Kuai(middle-1,top-1,4);         m_prePiece[3]=new Kuai(middle-1,top-2,4);         for(i = 0;i<4;i++)         { labelyulan[m_prePiece[i].m_nRow-18][m_prePiece[i].m_nColumn-3].setIcon(tukuai[m_prePiece[i].m_ntupian]);         }         break;     }*/}  private void transferPreToCur()   {      for(int j = 0;j<4;j++)      {      if(mine[m_prePiece[j].m_nColumn][m_prePiece[j].m_nRow] !=0 )      IsGameInPlay = false;      for(int i=0;i<4;i++)       {         //用类定义的变量如同int 定义的可这样赋值         m_curPiece[i]=m_prePiece[i];       }      for(int i=0;i<4;i++)        {          mine[m_curPiece[j].m_nColumn][m_curPiece[j].m_nRow]  = m_curPiece[j].m_ntupian;          Mine.SetIcon(m_curPiece[j].m_nColumn,m_curPiece[j].m_nRow,tukuai[ m_curPiece[j].m_ntupian ]);        }      }    }/**********************************************************************/    private synchronized boolean moveCurPiece(int nDx,int nDy,boolean bRotate)   {   Kuai newpos[] = new Kuai[4];   int dx , dy;       for (int i = 0; i < 4; i++)       {         if (bRotate)         {           dx = m_curPiece[i].m_nColumn - m_curPiece[0].m_nColumn;           dy = m_curPiece[i].m_nRow - m_curPiece[0].m_nRow;           newpos[i] = new Kuai(m_curPiece[0].m_nColumn - dy,                                m_curPiece[0].m_nRow + dx,                                m_curPiece[i].m_ntupian);           //顺时针转动         }         else         {           newpos[i] = new Kuai(m_curPiece[i].m_nColumn + nDx,                                m_curPiece[i].m_nRow + nDy,                                m_curPiece[i].m_ntupian);         }       }    if (moveSquares(m_curPiece, newpos) == false)         return false;       for(int i = 0; i < 4; i++)         {            m_curPiece[i] = newpos[i];             }       for(int i = 0; i < 4; i++)         {           //labelslef[m_curPiece[i].m_nColumn][m_curPiece[i].m_nRow].setIcon(tukuai[m_curPiece[i].m_ntupian]);           Mine.SetIcon(m_curPiece[i].m_nColumn,m_curPiece[i].m_nRow,tukuai[m_curPiece[i].m_ntupian]);              }       return true;   }   /**    ************************************************* 移动方块,如果不能移动,则返回假    */  boolean moveSquares(Kuai from[],Kuai to[])   {         //判断是否能移动  outerlable:          for (int i=0;i<to.length;i++)        {              if (to[i].InBounds()==false) return false ;          //如果不在可玩区域,则返回假              if(mine[to[i].m_nColumn][to[i].m_nRow]!=0)            {                for (int j=0;j<from.length;j++)                      if (to[i].IsEqual(from[j]))                         continue  outerlable;                return false;            }        }  //移动          for(int i=0;i<from.length;i++)          {            if(from[i].InBounds())                 mine[from[i].m_nColumn][from[i].m_nRow]=0;                 //labelslef[from[i].m_nColumn][from[i].m_nRow].setIcon(tukuai[5]);                 Mine.SetIcon(from[i].m_nColumn,from[i].m_nRow,tukuai[8]);          }          for(int i=0;i<to.length;i++)              mine[to[i].m_nColumn][to[i].m_nRow]=to[i].m_ntupian;                return true;   }/**********************************************************************/    private void removelines()      {           outerlabel:           for(int j=0;j<Mine.Row;j++)           {                   for (int i=0;i<Mine.Comln;i++)                     if (mine[i][j]==0)                         continue  outerlabel;                   for (int k=j;k<Mine.Row-1;k++)                       for (int i=0;i<Mine.Comln;i++)                          { mine[i][k]=mine[i][k+1];                           //labelslef[i][k].setIcon(tukuai[ mine[i][k+1]]);                           Mine.SetIcon(i,k,tukuai[mine[i][k+1]]);                          }               j+=1;         }      }//****************************************************************消行      /***************************************************停止*/      public synchronized void stop()//线层处理      {           if(theThread!=null)//如果线层不为空                   theThread.stop();           theThread=null;      }      /****************************************************暂停*/      public synchronized void pause()//游戏暂停       {            if(theThread!=null)//如果线层不为空            {                try                {                    theThread.suspend();//线层暂停                    Paused=true;//暂停为真                }               catch(Exception e){e.printStackTrace();}            }      }        //***********************************************************启动线程      public synchronized void start()         {           for(int i = 0;i<Mine.Row;i++)           for(int j = 0;i<Mine.Comln;j++)           {            mine[j][i] = 0;           }          if(theThread!=null)          {              Paused=false;//暂停为假              theThread.resume();//继续执行线层以前执行的线层              //              return;         }         else           theThread  = new Thread(this);       theThread.start();   }        /******************************************run*/           public void run()        {                IsNeedNewPiece = true;                IsGameInPlay=true;                requestFocus();           while(IsGameInPlay)           {              try              {                Thread.sleep(DelayMap[thespeed]);              }              catch(InterruptedException e){e.printStackTrace();}                  if(IsNeedNewPiece)                  {                  removelines();                  newPrePiece();                  transferPreToCur();                  IsNeedNewPiece = false;                  }                  else                  {                   IsNeedNewPiece = !moveCurPiece(0,-1,false);                  }          }         theThread=null;        }//***************************  //Overridden so we can exit when window is closed  protected void processWindowEvent(WindowEvent e) {    super.processWindowEvent(e);    if (e.getID() == WindowEvent.WINDOW_CLOSING) {      System.exit(0);    }  }  void jButton1_actionPerformed(ActionEvent e) {   this.start();  }}class CHUANGTI_jButton1_actionAdapter implements java.awt.event.ActionListener {  CHUANGTI adaptee;  CHUANGTI_jButton1_actionAdapter(CHUANGTI adaptee) {    this.adaptee = adaptee;  }  public void actionPerformed(ActionEvent e) {    adaptee.jButton1_actionPerformed(e);  }}

⌨️ 快捷键说明

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