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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tetrics.java

?? java 版的俄羅斯方塊在原來的基礎上的網絡版
?? JAVA
字號:
import java.awt.*;import java.awt.event.*;/** * Title: * Description: * Copyright:    Copyright (c) 2001 * Company: * @author * @version 1.0 */public class Tetrics extends Panel implements Runnable{    //每個小方塊的大小:寬,高   int m_nSqLength;   //信息區大小   final int XOFFSET=200;   final int RIVAL_XOFFSET=500;   static int m_nCols;   static int m_nRows;   public static int WIDTH=800;   public static int HEIGHT=450;   //當前的界面情況   int m_nField[][];   int m_nOldField[][];   //當前移動的方塊   Square m_curPiece[]=new Square[4];   Square m_prePiece[]=new Square[4];   boolean m_bGameInPlay;   boolean m_bNeedNewPiece;   boolean m_bPaused=false;   //對手的情況   int m_nRivalField[][];   Thread m_theThread=null;   Color m_colors[];   int m_nPieceValue,m_nTheScore=0;   int m_nPlayLevel;   int m_nTotalPieces;   boolean m_bJustupdating=false;   int m_nDelayMap[]={600,600,600,600,500,400,300,250,200,150,100};   final Color BAKCOLOR=new Color(80,123,166);   final Color FORCOLOR=Color.black;   public static int NOSQUARE=0;   Graphics m_gOffGraph;   TFrame m_tFrame;    public Tetrics()    {        super();        setBackground(BAKCOLOR);        initParam();    }    public Tetrics(TFrame tFrame)    {        super();        m_tFrame=tFrame;        setBackground(BAKCOLOR);        initParam();    }   public void initParam()   {   //設置初始參數        m_nSqLength=20;        m_nCols=10;        m_nRows=20;        m_nField=new int [m_nCols][m_nRows+4];        m_nOldField=new int[m_nCols][m_nRows+4];        //對手的狀態        m_nRivalField=new int [m_nCols][m_nRows+4];        m_nPlayLevel=5;    //定義八種顏色        m_colors=new Color[8];        m_colors[0]=new Color(40,40,40);        m_colors[1]=new Color(255,0,0);        m_colors[2]=new Color(0,200,0);        m_colors[3]=new Color(0,200,255);        m_colors[4]=new Color(255,255,0);        m_colors[5]=new Color(255,150,0);        m_colors[6]=new Color(210,0,240);        m_colors[7]=new Color(40,0,240);    //to initialize the m_prePiece;   }   public synchronized void start()   {        if(m_theThread!=null)        //游戲是被暫停,而不是重新開始        {            m_bPaused=false;            m_theThread.resume();            return;        }        repaint();        //重新開始賦上游戲的狀態        for(int i=0;i<m_nCols;i++)        {	          for(int j=0;j<m_nRows+4;j++)              {                  m_nField[i][j]=0;                  m_nOldField[i][j]=-1;                  m_nRivalField[i][j]=0;        	  }    	}        m_nTheScore=0;        m_nTotalPieces=0;        m_bNeedNewPiece=true;        m_bGameInPlay=true;        m_theThread=new Thread(this);        newPrePiece();        m_theThread.start();        requestFocus();   }   public void update(Graphics g)   {	    m_bJustupdating=true;    	paint(g);   }   public synchronized void paint(Graphics g)   {    	g.setFont(new Font("宋體",0,18));    	int gx=m_nSqLength;    	int gy=m_nSqLength*m_nRows/4;        //打印Score和level的位置	    g.clearRect(gx,gy-25,XOFFSET-gx,25);    	g.drawString("Score:"+m_nTheScore,gx,gy);    	gy+=30;    	g.clearRect(gx,gy-25,XOFFSET-gx,25);	    g.drawString("Level:"+m_nPlayLevel,gx,gy);//        System.out.println("paint m_nPlayLevel="+m_nPlayLevel);        //畫預覽的方塊        int middle=m_nCols/2;        int top=m_nRows;        gy+=30;        g.setColor(Color.black);        g.fillRect(gx,gy,m_nSqLength*4,m_nSqLength*4);        if(m_bGameInPlay)        {            for(int i=0;i<4;i++)            {                g.setColor(m_colors[m_prePiece[i].m_nColor]);                g.fill3DRect((m_prePiece[i].m_nColumn-middle+2)*m_nSqLength+gx,                    gy-(m_prePiece[i].m_nRow-top)*m_nSqLength,m_nSqLength,m_nSqLength,true);            }        }       Image img1=createImage(m_nSqLength*10,m_nSqLength*20);       //用來畫自己的游戲區域       Image img2=createImage(m_nSqLength*10,m_nSqLength*20);       //用來畫對手的游戲區域       Graphics g1=img1.getGraphics();       Graphics g2=img2.getGraphics();        for(int i=0;i<m_nCols;i++)            for(int j=0;j<m_nRows;j++)            {                //-1代表沒有剛剛開始/*             if(!m_bJustupdating ||m_nOldField[i][m_nRows-1-j]==-1 || m_nOldField[i][m_nRows-1-j]!=m_nField[i][m_nRows-1-j])               {                	g.setColor(m_colors[m_nField[i][m_nRows-1-j]]);        	        g.fill3DRect(XOFFSET+m_nSqLength*i,m_nSqLength+m_nSqLength*j,m_nSqLength,m_nSqLength,true);               }               m_nOldField[i][m_nRows-1-j]=m_nField[i][m_nRows-1-j];*/               g1.setColor(m_colors[m_nField[i][m_nRows-1-j]]);        	   g1.fill3DRect(m_nSqLength*i,m_nSqLength*j,m_nSqLength,m_nSqLength,true);                //來畫對手的情況               g2.setColor(m_colors[m_nRivalField[i][m_nRows-1-j]]);      	       g2.fill3DRect(m_nSqLength*i,m_nSqLength*j,m_nSqLength,m_nSqLength,true);            }           g.drawImage(img1,XOFFSET,m_nSqLength,this);           g.drawImage(img2,RIVAL_XOFFSET,m_nSqLength,this);           m_bJustupdating=false;   }   public void run()   {      while(m_bGameInPlay){         try         {        	int t;        	if(m_nPlayLevel>10) t=75;        	else t=m_nDelayMap[m_nPlayLevel];        	Thread.sleep(t);         }catch(InterruptedException e){e.printStackTrace();}         if(m_bNeedNewPiece)         {        	 if(m_nPieceValue>0)             {                 m_nTheScore+=m_nPieceValue;                 m_nTotalPieces+=1;                 if(m_nTotalPieces%30==0)m_nPlayLevel++;             }             removelines();        	 transferPreToCur();             newPrePiece();        	 m_bNeedNewPiece=false;         }         else         {        	 m_bNeedNewPiece=!moveCurPiece(0,-1,false);        	 if(!m_bNeedNewPiece) m_nPieceValue-=5;         }        repaint();        sendStatus();     }     m_theThread=null;   }   private void sendStatus()   {        if(m_tFrame.m_nNetStatus==TFrame.NOCONNECT)return;        String str="Status:";        for(int nCol=0;nCol<m_nCols;nCol++)            for(int nRow=0;nRow<m_nRows;nRow++)            {                str+=m_nField[nCol][nRow]+"|";            }        m_tFrame.sendStr(str);   }   /**    *移動方塊    *@param nDx 左右移動,向左為-1    *@param nDy 上下移動,向下為-1    *@param bRotate 是否轉動    */   private synchronized boolean moveCurPiece(int nDx,int nDy,boolean bRotate)   {	Square newpos[]=new Square[4];	for(int i=0;i<4;i++){	  if(bRotate)	  {	    int dx=m_curPiece[i].m_nColumn-m_curPiece[0].m_nColumn;	    int dy=m_curPiece[i].m_nRow-m_curPiece[0].m_nRow;	    newpos[i]=new Square(m_curPiece[0].m_nColumn-dy,m_curPiece[0].m_nRow+dx,m_curPiece[i].m_nColor);	  }	  else	  {	    newpos[i]=new Square(m_curPiece[i].m_nColumn+nDx,m_curPiece[i].m_nRow+nDy,m_curPiece[i].m_nColor);	  }	}	if(moveSquares(m_curPiece,newpos)==false) return false;	m_curPiece=newpos;	return true;   }   /**    * 移動方塊,如果不能移動,則返回假    */   boolean moveSquares(Square from[],Square to[])   { 	//判斷是否能移動    outerlable:	    for (int i=0;i<to.length;i++)        {    	  if(to[i].InBounds()==false) return false;          //如果不在可玩區域,則返回假	      if(m_nField[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())    	     m_nField[from[i].m_nColumn][from[i].m_nRow]=0;	    for(int i=0;i<to.length;i++)    	  m_nField[to[i].m_nColumn][to[i].m_nRow]=to[i].m_nColor;        	return true;   }   /**    * 用來產生一個新的方塊用來做預覽    */   private void newPrePiece()   {        int middle=m_nCols/2;        int top=m_nRows;        switch((int)(Math.random()*7))        {            case 0:                //XXXX  red;            m_nPieceValue=100;            m_prePiece[0]=new Square(middle-1,top-1,1);            m_prePiece[1]=new Square(middle-2,top-1,1);            m_prePiece[2]=new Square(middle,top-1,1);            m_prePiece[3]=new Square(middle+1,top-1,1);            break;            case 1:            //  X orange;                //XXX            m_nPieceValue=200;            m_prePiece[0]=new Square(middle,top-2,5);            m_prePiece[1]=new Square(middle,top-1,5);            m_prePiece[2]=new Square(middle-1,top-2,5);            m_prePiece[3]=new Square(middle+1,top-2,5);            break;            case 2:                //XX  green;            m_nPieceValue=180;            m_prePiece[0]=new Square(middle,top-2,2);            m_prePiece[1]=new Square(middle-1,top-1,2);            m_prePiece[2]=new Square(middle,top-1,2);            m_prePiece[3]=new Square(middle+1,top-2,2);            break;            case 3:                //XX  blue;            m_nPieceValue=180;            m_prePiece[0]=new Square(middle,top-2,7);            m_prePiece[1]=new Square(middle+1,top-1,7);            m_prePiece[2]=new Square(middle,top-1,7);            m_prePiece[3]=new Square(middle-1,top-2,7);            break;            case 4:                //XX  light blue;            m_nPieceValue=100;            m_prePiece[0]=new Square(middle-1,top-1,3);            m_prePiece[1]=new Square(middle,top-1,3);            m_prePiece[2]=new Square(middle-1,top-2,3);            m_prePiece[3]=new Square(middle,top-2,3);            break;            case 5:                //XXX  purle;            m_nPieceValue=120;            m_prePiece[0]=new Square(middle,top-1,6);            m_prePiece[1]=new Square(middle-1,top-1,6);            m_prePiece[2]=new Square(middle+1,top-1,6);            m_prePiece[3]=new Square(middle+1,top-2,6);            break;            case 6:                //XXX  yellow;            m_nPieceValue=120;            m_prePiece[0]=new Square(middle,top-1,4);            m_prePiece[1]=new Square(middle+1,top-1,4);            m_prePiece[2]=new Square(middle-1,top-1,4);            m_prePiece[3]=new Square(middle-1,top-2,4);            break;        }   }   /**    * 將預覽的方塊轉變成正在動的方塊    */   private void transferPreToCur()   {        Square old[]=new Square[4];        old[0]=old[1]=old[2]=old[3]=new Square(-1,-1,0);        for(int i=0;i<4;i++)        {            m_curPiece[i]=m_prePiece[i];        }        m_bGameInPlay=moveSquares(old,m_curPiece);        if(!m_bGameInPlay && m_tFrame.m_nNetStatus!=TFrame.NOCONNECT)m_tFrame.sendStr("GameOver:"+m_nTheScore);        else if(!m_bGameInPlay && m_tFrame!=null)m_tFrame.insertScoreReport(m_nTheScore);   }   //去掉可以消去的行   private void removelines()   {	outerlabel:        for(int j=0;j<m_nRows;j++)        {        	for(int i=0;i<m_nCols;i++)        	  if(m_nField[i][j]==0)            	  continue outerlabel;    	    for(int k=j;k<m_nRows-1;k++)	            for(int i=0;i<m_nCols;i++)        	        m_nField[i][k]=m_nField[i][k+1];            j-=1;            m_tFrame.sendStr("RemoveLine");      }   }   public boolean keyDown(Event evt,int nKey)   {   if(!m_bGameInPlay)return true;   if(m_bPaused)return true;   switch(nKey){        case 'a':        case Event.LEFT	:            moveCurPiece(-1,0,false);            m_bNeedNewPiece=false;            repaint();            break;        case 'd':        case Event.RIGHT:            moveCurPiece(1,0,false);            m_bNeedNewPiece=false;            repaint();            break;        case 'w':        case Event.UP:            moveCurPiece(0,0,true);            repaint();            break;        case 's':        case Event.DOWN:            while(moveCurPiece(0,-1,false));            repaint();            break;       }       return true;   }   public synchronized void stop()   {        if(m_theThread!=null)                m_theThread.stop();        m_theThread=null;   }   public synchronized void pause()   {        if(m_theThread!=null)        {            try            {                m_theThread.suspend();                m_bPaused=true;            }            catch(Exception e){e.printStackTrace();}        }   }   public void setPlayLevel(int nLevel)   {        m_nPlayLevel=nLevel;//        System.out.println("m_nPlayLevel="+m_nPlayLevel);        Graphics g=getGraphics();       	g.setFont(new Font("宋體",0,18));        int gx=m_nSqLength;    	int gy=m_nSqLength*m_nRows/4+30;        g.clearRect(gx,gy-25,XOFFSET-gx,25);	    g.drawString("Level:"+m_nPlayLevel,gx,gy);//        System.out.println("paint m_nPlayLevel="+m_nPlayLevel);   }   public int getPlayLevel()   {        return m_nPlayLevel;   }   public synchronized void addRandomLine()   {        int nRandom[]=new int[m_nCols];        boolean bAllZero=true;        boolean bNoZero=true;        for(int i=0;i<m_nCols;i++)        {            nRandom[i]=(int)(7*Math.random());            if(nRandom[i]!=0)bAllZero=false;            else bNoZero=false;        }        if(bAllZero)        {            nRandom[(int)(m_nCols*Math.random())]=(int)(Math.random()*6+1);        }        else if(bNoZero)        {            nRandom[(int)(m_nCols*Math.random())]=0;        }        for(int nCol=0;nCol<m_nCols;nCol++)            for(int nRow=m_nRows+3;nRow>0;nRow--)            {                m_nField[nCol][nRow]=m_nField[nCol][nRow-1];            }        for(int nCol=0;nCol<m_nCols;nCol++)m_nField[nCol][0]=nRandom[nCol];        for(int i=0;i<4;i++)        {            m_curPiece[i].m_nRow++;        }   }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清不卡视频| 欧美亚洲高清一区二区三区不卡| 一区二区高清在线| 综合久久给合久久狠狠狠97色 | 91啪亚洲精品| av男人天堂一区| 成人精品高清在线| 色婷婷精品大视频在线蜜桃视频| 91丨九色丨蝌蚪丨老版| 色狠狠色狠狠综合| 欧美日韩一区三区四区| 欧美日韩成人综合在线一区二区| 欧美日韩激情一区| 欧美一区二区视频在线观看| 精品少妇一区二区三区日产乱码 | 亚洲v精品v日韩v欧美v专区| 丝袜美腿亚洲一区二区图片| 美女一区二区三区在线观看| 国产福利一区二区三区视频| 99视频精品免费视频| 欧美在线视频日韩| 2021久久国产精品不只是精品| 国产亚洲精品精华液| 亚洲精品自拍动漫在线| 日韩高清一级片| 国产精品18久久久久久久久久久久| 成人国产精品免费网站| 欧美在线视频日韩| 久久蜜臀中文字幕| 一区二区三区.www| 国产一区二区影院| 在线欧美一区二区| 久久先锋影音av鲁色资源网| 自拍偷拍亚洲欧美日韩| 蜜臀久久久99精品久久久久久| 国产精品一区二区久久精品爱涩| 色婷婷综合久久| 久久一夜天堂av一区二区三区| 亚洲精品视频在线| 国产福利一区二区三区视频在线| 欧美日免费三级在线| 国产精品乱码一区二三区小蝌蚪| 亚洲gay无套男同| 99视频国产精品| 欧美xxxx老人做受| 亚洲国产精品自拍| 色综合久久六月婷婷中文字幕| 久久久久久夜精品精品免费| 亚洲一区二区中文在线| 成人网在线免费视频| 日韩精品一区二区三区蜜臀| 伊人婷婷欧美激情| 91亚洲资源网| 欧美激情一区三区| 国模大尺度一区二区三区| 欧美人体做爰大胆视频| 亚洲伦理在线精品| 99re热视频这里只精品| 99精品一区二区三区| 欧美白人最猛性xxxxx69交| 色呦呦日韩精品| 久久综合九色综合97_久久久| 国内成人精品2018免费看| 亚洲国产精品精华液2区45| 99综合电影在线视频| 亚洲精品乱码久久久久| 日韩欧美久久一区| www.亚洲色图| 日本欧美久久久久免费播放网| 久久久久久久久久久电影| 91麻豆精东视频| 蜜臀av一区二区在线观看| 国产精品久久久久久亚洲毛片| 欧美性色黄大片| 国产麻豆精品一区二区| 亚洲在线成人精品| 久久这里只有精品视频网| 欧美在线视频你懂得| 国产福利91精品一区| 亚洲国产中文字幕在线视频综合| 久久久精品欧美丰满| 欧美精品乱码久久久久久按摩| 粉嫩嫩av羞羞动漫久久久| 天堂精品中文字幕在线| 亚洲视频一区在线| 久久久久久久久久久久电影 | 精品一区二区三区久久| 一区二区免费看| 国产精品日产欧美久久久久| 日韩丝袜美女视频| 欧美日韩一区二区三区在线| 99久久精品免费| 丁香激情综合五月| 韩国成人在线视频| 日韩不卡一二三区| 亚洲一二三四久久| 亚洲欧洲中文日韩久久av乱码| 久久久久亚洲蜜桃| 精品久久久久av影院| 日韩一区二区三区在线观看 | 色综合久久中文字幕| 国产a久久麻豆| 国产麻豆欧美日韩一区| 奇米色777欧美一区二区| 亚洲va中文字幕| 亚洲一卡二卡三卡四卡| 亚洲综合在线视频| 亚洲精品国产a久久久久久 | 日本中文字幕一区二区视频| 一区二区三区免费| 亚洲精品视频一区二区| 亚洲色图视频免费播放| 亚洲嫩草精品久久| 一区二区三区中文在线| 一区二区三区精品久久久| 亚洲理论在线观看| 亚洲综合男人的天堂| 亚洲一区在线视频| 亚洲6080在线| 美脚の诱脚舐め脚责91| 精品一区二区三区的国产在线播放| 日本午夜一区二区| 国内欧美视频一区二区| 国产在线精品不卡| 成人午夜精品一区二区三区| voyeur盗摄精品| 在线观看91精品国产入口| 欧美最新大片在线看| 欧美精品v国产精品v日韩精品| 日韩一区二区三区视频| 精品日韩一区二区三区 | 一区二区三区精品在线| 日本高清免费不卡视频| 欧美老人xxxx18| 精品日韩一区二区三区| 国产精品嫩草久久久久| 亚洲一区二区三区美女| 久久国产综合精品| 成人av网站在线观看免费| 欧美中文字幕亚洲一区二区va在线| 777亚洲妇女| 国产精品视频观看| 亚洲成人福利片| 国产一区二区美女| 一本到三区不卡视频| 在线播放欧美女士性生活| 久久精品在这里| 亚洲久草在线视频| 韩国三级电影一区二区| 91网站在线播放| 日韩午夜中文字幕| 综合分类小说区另类春色亚洲小说欧美| 一区二区高清视频在线观看| 国产在线观看免费一区| 91福利精品视频| 久久久亚洲精品一区二区三区| 亚洲免费电影在线| 国产大片一区二区| 欧美日韩你懂得| 日本一区二区三区久久久久久久久不 | aaa国产一区| 4438x亚洲最大成人网| 国产日韩精品一区| 日本不卡一区二区三区| av电影天堂一区二区在线| 日韩午夜激情av| 亚洲自拍偷拍九九九| 国产精品123区| 欧美一区二区三区系列电影| 成人欧美一区二区三区1314| 久久福利视频一区二区| 欧美在线视频你懂得| 中文字幕亚洲一区二区av在线| 久久福利资源站| 欧美精品 日韩| 亚洲丝袜美腿综合| 国产在线精品不卡| 日韩久久久久久| 性做久久久久久免费观看| 99久久精品一区二区| 精品国产免费人成在线观看| 亚洲一二三级电影| 色综合咪咪久久| 亚洲视频免费看| av亚洲精华国产精华| 国产日产欧产精品推荐色 | 欧美性猛交一区二区三区精品| 日本一区二区免费在线 | 日本不卡一二三区黄网| 在线观看视频一区二区| 一区二区中文字幕在线| 粉嫩久久99精品久久久久久夜| 精品国产免费久久| 韩国v欧美v日本v亚洲v| 欧美一区二区黄色| 蜜臀久久久99精品久久久久久| 欧美一级xxx| 精品中文av资源站在线观看| 日韩精品一区二区三区视频播放| 日本v片在线高清不卡在线观看|