📄 chuangti.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 + -