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

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

?? tetriscanvas.java

?? 一個有關游戲方面的應用程序,希望大家指點啊,呵呵.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
            
            if (y < 0) {
              gameState = GAME_OVER;
              transmitMsg(GAME_OVER);
            }
            block.drawBlock(g);
            
            block.drawNextBlock(g);
          }
          counter = 0;
        }
        else {

          block.paint(g);
        }
        
      }
      else if (gameState == GAME_OVER) {

        g.setColor(BACKGROUND);
        
        g.fillRect(0,0, getWidth(), getHeight());

        g.setColor(255, 0, 0);
        
        g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
                               Font.SIZE_LARGE));
        
        g.drawString("mGame Over",
        		TetrisCanvas.GAMEAREA_X + 8 * TetrisCanvas.BRICK_WIDTH,
                TetrisCanvas.GAMEAREA_Y + 4 * TetrisCanvas.BRICK_WIDTH,
                     g.BASELINE | g.HCENTER);

        transmitMsg(GAME_OVER);
      }
      else if (gameState == GAME_WIN)
      {
          g.setColor(BACKGROUND);
          
          g.fillRect(0,0, getWidth(), getHeight());
          
          g.setColor(255, 0, 0);
          
          g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
                                 Font.SIZE_LARGE));
          
          g.drawString("mYOU WIN",
                       TetrisCanvas.GAMEAREA_X + 8 * TetrisCanvas.BRICK_WIDTH,
                       TetrisCanvas.GAMEAREA_Y + 4 * TetrisCanvas.BRICK_WIDTH,
                       g.BASELINE | g.HCENTER);
      }
    
    if( gameState_Remote == GAME_OVER )
	  {  
        gameState = GAME_WIN;
        
	  }
    
    //繪制遠端用戶的界面
    if( !( Role.ROLE_SINGLE == role ) )
    	paint_Remote(g);
    
  }//end paint
  
  public void paint_Remote( Graphics g )
  {

	  if( gameState == GAME_OVER )
	  {
		  gameState_Remote = GAME_WIN;
	  }
	  
	    if (gameState_Remote == GAME_START_DEMO) { /* 游戲處于demo畫面狀態 */
	      if (!startDemoFlag_Remote) {
	        //游戲還沒開始,顯示demo畫面

	        g.setColor(BACKGROUND);
	        
	        g.fillRect(0 , 0, mainWidth_Remote, mainHeight_Remote);

	        g.setColor(0, 255, 0);
	        
	        g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
	                               Font.SIZE_LARGE));
	        
	        g.drawString("s俄羅斯方塊(遠端)", mainWidth_Remote / 2, mainHeight_Remote / 4 ,
	                     g.BASELINE | g.HCENTER);
	      }

	      /* 游戲第一次啟動 */
	    }    
	    else if (gameState_Remote == GAME_WAIT_REMOTE)
	    {
	        g.setColor(BACKGROUND);
	        
	        g.fillRect(0, 0, mainWidth_Remote, mainHeight_Remote);

	        g.setColor(0, 255, 0);
	        
	        g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
	                               Font.SIZE_LARGE));
	        
	        g.drawString("s等待(遠端)", mainWidth_Remote / 2, mainHeight_Remote / 4 ,
	                     g.BASELINE | g.HCENTER);
	    }
	    else if (gameState_Remote == GAME_INIT) {
	    	
	      map_Remote.init();
	      
	      map_Remote.paint(g);
	      
	      block_Remote.init();
	      
	      block_Remote.drawBlock(g);
	      
	      block_Remote.drawNextBlock(g);

	      gameState_Remote = GAME_RUN;
	    }
	    else if (gameState_Remote == GAME_RUN) {
	    	      	      
	      if( b_receviedMapdata )
	      {  
	    	  map_Remote.repaintMap_Remote(g);
	    	  
	    	  b_receviedMapdata = false;
	      }
	    	
	      if( b_receviedPN )
	      {
	    	  block_Remote.eraseBlock(g);
	    	  
	    	  block_Remote.drawNextBlock(g);
	    	  
	    	  b_receviedPN = false;
	      }
	             
	    }//end if( game == GAME_RUN)
	    else if (gameState_Remote == GAME_OVER) {
	      g.setColor(BACKGROUND);
	      
	      g.fillRect(0, 0,
	    		  mainWidth_Remote, mainHeight_Remote);

	      g.setColor(255, 0, 0);
	      
	      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
	                             Font.SIZE_LARGE));
	      
	      g.drawString("sGame Over",
	    		  	   GAMEAREA_X_REMOTE + 8 * BRICK_WIDTH_REMOTE,
	                   GAMEAREA_Y_REMOTE + 4 * BRICK_WIDTH_REMOTE,
	                   g.BASELINE | g.HCENTER);

	    }
	    else if( gameState_Remote == GAME_DISCONNECTED )
	    {
		      g.setColor(BACKGROUND);
		      
		      g.fillRect(0, 0,
		    		  mainWidth_Remote, mainHeight_Remote);

		      g.setColor(255, 0, 0);
		      
		      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
		                             Font.SIZE_LARGE));
		      
		      g.drawString("sOTHER DISCONNECTED!",
		    		  	GAMEAREA_X_REMOTE + 8 * BRICK_WIDTH_REMOTE,
		    		  	GAMEAREA_Y_REMOTE + 4 * BRICK_WIDTH_REMOTE,
		                   g.BASELINE | g.HCENTER);
	    }
	    else if( gameState_Remote == GAME_EXIT )
	    {
		      g.setColor(BACKGROUND);
		      
		      g.fillRect(0, 0,
		                 mainWidth_Remote, mainHeight_Remote);

		      g.setColor(255, 0, 0);
		      
		      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
		                             Font.SIZE_LARGE));
		      
		      g.drawString("sOTHER EXIT",
		    		  	GAMEAREA_X_REMOTE + 8 * BRICK_WIDTH_REMOTE,
		    		  	GAMEAREA_Y_REMOTE + 4 * BRICK_WIDTH_REMOTE,
		                   g.BASELINE | g.HCENTER);
	    }
	    else if( gameState_Remote == GAME_WIN )
	    {
		      g.setColor(BACKGROUND);
		      
		      g.fillRect(0, 0,
		                 mainWidth_Remote, mainHeight_Remote);

		      g.setColor(255, 0, 0);
		      
		      g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
		                             Font.SIZE_LARGE));
		      
		      g.drawString("sOTHER WIN",
		    		  	GAMEAREA_X_REMOTE + 8 * BRICK_WIDTH_REMOTE,
		    		  	GAMEAREA_Y_REMOTE + 4 * BRICK_WIDTH_REMOTE,
		                   g.BASELINE | g.HCENTER);
	    }
	    
	    System.gc();
	    
  }

  public static void clear(Graphics g) {
//	繪制整個背景
		g.setColor(0x00000000);
	    g.fillRect(0, offSet, mainWidth, mainHeight);
	    //繪制面板背景
	    g.setColor(BACKGROUND);
	    g.fillRect(TetrisCanvas.GAMEAREA_X, TetrisCanvas.GAMEAREA_Y,
	               16 * TetrisCanvas.BRICK_WIDTH, 16 * TetrisCanvas.BRICK_WIDTH);
  }
  
  public static void clear_Remote(Graphics g)
  {
	  	//繪制整個背景
		g.setColor(0x00000000);
		
	    g.fillRect(0, 0, mainWidth_Remote, mainHeight_Remote);
	    
	    //繪制面板背景
	    g.setColor(BACKGROUND);
	    
	    g.fillRect(TetrisCanvas.GAMEAREA_X_REMOTE, GAMEAREA_Y_REMOTE,
	               16 * TetrisCanvas.BRICK_WIDTH_REMOTE, 16 * TetrisCanvas.BRICK_WIDTH_REMOTE);
  
  }
  

  public void sendPN()
  {
      transmitMsg( SEND_PN );
      
      transmitMsg( block.getPattern());
      
      transmitMsg( block.getNext());
  }
  

  public synchronized void transmitMsg(int action)
  {
	  
	  if( Role.ROLE_SINGLE == role )
		  return;
	  
	  /*
	   * 如果遠端退出或斷開,則不必再傳送數據
	   */
	  if( GAME_EXIT == gameState_Remote || GAME_DISCONNECTED == gameState_Remote )
		  return;
	    for( int i=0; i<btConnections.length; i++ )
	    {
	        try
	        {
	            OutputStream os = btConnections[i].getOutputStream();
	           
	            os.write( action );
	            
	            os.flush();
	        }
	        catch( IOException e )
	        {   
	        	
	            btConnections[i].close();
	            
	            if( checkIfAllClosed() )
	            {   
	                return;
	            }
	        }
	    }
  }
  
  public void sendMapdata()
  {
	  
	  if( Role.ROLE_SINGLE == role )
		  return;
	  
	  if( GAME_EXIT == gameState_Remote || GAME_DISCONNECTED == gameState_Remote )
		  return;
	  
	  transmitMsg(SEND_MAPDATA);
	  
	    for( int i=0; i<btConnections.length; i++ )
	    {
	    	serialize(map,btConnections[i]);
	    }
  }
  
  
  public boolean checkIfAllClosed()
  {

      boolean allclosed = true;
      
      for( int l=0; l<btConnections.length; l++ )
      {
          if( btConnections[l].isClosed() != true  )
          {   
              allclosed = false;
          }
      }

      if( allclosed )
      {  
          
      }

      return allclosed;
  }
  
  /**
   * The ReceiveThread is used to receive the remote keypresses. <br>
   * For each remote device there exists an own RecieveThread.
   */
  private class ReceiveThread
  extends Thread
  {
      int index;

      int receviedNum;
      
      InputStream inputStream;
      /**
       * Constructor.
       * @param i Index, that corresponds to the number of the BluetoothConnection.
       */
      public ReceiveThread( int i )
      {
          // Store
          index = i;
          
          inputStream = btConnections[index].getInputStream();
      }

      /**
       * Reads from stream until end of stream reached (disconnect).<br>
       * The read character (which is the key the remote user pressed) is
       * displayed to the local user.
       */
      public void run()
      {
          // Read input stream (data from remote device)
          int inp_Action;

          while( true )
          {
              // Read (blocking)
              try
              {
            	  //inp_Action = btConnections[index].getInputStream().read();
                  
                  inp_Action = inputStream.read();
              }
              catch( IOException e )
              {    
                  btConnections[index].close();
                  checkIfAllClosed();
                  gameState_Remote = GAME_DISCONNECTED;
                  return;
              }

              if( inp_Action == -1 )
              {   
                  btConnections[index].close();
                  checkIfAllClosed();
                  bug.println("inp_action = -1, Remote user is disconnectioned!");                  
                  gameState_Remote = GAME_DISCONNECTED;
                  return;
              }//end if
              
              //add by wts 20060912
              //這里應該分成四部分:
              //一個是對傳入命令的解析(響應commandAction),
              //一個是對按鍵的響應(action)              
              //一個是接收patter,next;
              //一個是通知游戲結束狀態
              switch( inp_Action )
              {
              	case GAME_START_DEMO:              	
              	case GAME_WAIT:
              	case GAME_INIT:
              	case GAME_RUN:
              	case GAME_SUSPEND:
              	case GAME_OVER:
              	case GAME_EXIT:
              		updateRemoteGameState(inp_Action);
              		break;
              	case SEND_PN:
              		receivePN(inputStream, inp_Action);
              		break;
              	case Canvas.UP:
              	case Canvas.DOWN:
              	case Canvas.LEFT:
              	case Canvas.RIGHT:
              	case Canvas.FIRE:
              		//什么都不做
              		break;
              	case SEND_MAPDATA:
	              		recevieMapdata();
              		default:
              }
              
              if( GAME_EXIT == gameState_Remote )
              {
            	  bug.println("Remote have exited!, ReceiveThread won't recevie data!");
            	  break;
              }
              
          }// end while
      }// end run 
  }// end ReceiveThread    
	
	

  //接收到的是遠端用戶的新的狀態
  public synchronized void updateRemoteGameState( int _gameState )  
  {
	  //如果對方發送來GAME_WAIT狀態信息,則證明自己還沒有點擊"開始"鍵
	  //(僅建立連接)
	  if ( _gameState == GAME_WAIT )
	  {			  
			  gameState_Remote = GAME_WAIT_REMOTE;
			  return;
	  }else if( _gameState == GAME_INIT )
	  {
		  gameState = GAME_INIT;
		  gameState_Remote = GAME_INIT;
		  sendPN();
		  return;
	  }
	  
	  gameState_Remote = _gameState;
  }//end updateRemoteCommand
  
  
  //判斷是否接收到新的當前方塊和下一個方塊
  boolean b_receviedPN ;
  
  public synchronized boolean receivePN( InputStream inputStream, int inp_Action)
  {
	  
	  if( inp_Action == this.SEND_PN )
	  {
		  try
		  {
		  pattern_Remote = inputStream.read();
		  next_Remote = inputStream.read();
		  }
		  catch(IOException e )
		  {
			  try {
				throw new Exception("ERROR In read Remote pattern and next");
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		  }
		  
		  block_Remote.setPN(pattern_Remote,next_Remote);
		  block_Remote.init();
		  bug.println(" receivePN.recevied PN");
		  
		  b_receviedPN = true;
		  
		  return true;
	  } 
	  return false;
  }
  

  boolean b_receviedMapdata ;
  
  public void recevieMapdata()
  {
	  //能設置一個變量進行檢測最好,
	  bug.println("begin receviedMapdata");
	  
	  deserialize(map_Remote,btConnections[0]);
	  b_receviedMapdata = true;
	  
	  bug.println("end receviedMapdata");
  }

  
  public void serialize(Serialization serialization, 
  		BluetoothConnection bluetoothConnection) 
  {
  	
	  bug.println("beging serialize mapdata");
	  
  	OutputStream os = bluetoothConnection.getOutputStream();
  	
  	try {  		
			data = serialization.serialize();			
			//數據傳輸:
			//1、把數據序列化后的長度傳過去
			//2、byte數組傳過去。
			bluetoothConnection.writeInt(data.length);	
			
			bug.println("send mapdata length = " + data.length);
			
			os.write(data);						
			os.flush();			
			data = null;			
		} catch (IOException e) {			
			System.out.println("Error coming from serialize");
		}
  }
  
  
  
  public void deserialize(Serialization serialization, 
  		BluetoothConnection bluetoothConnection)
  {
  	
  	InputStream is = bluetoothConnection.getInputStream();
  	
  	try {
  		int length = bluetoothConnection.readInt();
  		
  		bug.println("recevied data length = " + length);
  		
  		data = new byte[length];
		is.read(data);
		serialization.deserialize(data);

      	data = null;
      	
      	System.gc();
			
		} catch (IOException e) {
			System.out.println("Error:Coming from deserizlize");
		}
  }
  

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久一区二区三区| 欧美放荡的少妇| 午夜不卡av在线| 久久品道一品道久久精品| 色综合久久综合网欧美综合网| 丝袜诱惑制服诱惑色一区在线观看| 国产情人综合久久777777| 欧美天堂亚洲电影院在线播放| 国产精品一品二品| 视频一区视频二区中文| 亚洲欧美另类综合偷拍| 国产欧美精品一区二区色综合 | 91精品国产综合久久精品麻豆| 成人一区在线看| 免费三级欧美电影| 伊人性伊人情综合网| 国产精品色呦呦| 久久嫩草精品久久久精品一| 91精品国产色综合久久ai换脸 | 成人av资源下载| 国产福利一区在线| 久久99国产精品久久99| 人妖欧美一区二区| 亚洲一区精品在线| 亚洲精品欧美在线| 1区2区3区国产精品| 国产精品日产欧美久久久久| 久久综合久久综合九色| 精品国产一区a| 欧美一区二区免费视频| 91精品国产高清一区二区三区蜜臀 | 亚洲婷婷综合色高清在线| 久久久99久久精品欧美| 日韩一区二区三区四区五区六区 | 91免费在线视频观看| 成人av在线网站| 成人三级在线视频| 成人免费视频视频| 99久久久久久| 在线观看免费视频综合| 在线观看视频欧美| 欧洲国内综合视频| 欧美久久婷婷综合色| 欧美人妖巨大在线| 欧美一区二区三区的| 日韩区在线观看| 欧美成人福利视频| 久久久综合视频| 国产精品每日更新在线播放网址 | 日韩一区二区精品葵司在线| 欧美日韩国产美| 欧美一级日韩免费不卡| 欧美一级二级在线观看| 欧美tickling网站挠脚心| 精品国产123| 欧美国产精品中文字幕| 自拍偷自拍亚洲精品播放| 亚洲综合在线第一页| 午夜精品福利一区二区三区蜜桃| 日韩**一区毛片| 国内精品第一页| 成人av网站大全| 欧美午夜精品理论片a级按摩| 884aa四虎影成人精品一区| 日韩情涩欧美日韩视频| 欧美激情一区二区在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲综合在线观看视频| 日本视频中文字幕一区二区三区| 国产美女主播视频一区| 91美女在线观看| 欧美一级一区二区| 欧美国产精品v| 亚洲va韩国va欧美va| 久久99国产精品久久99果冻传媒| 成人黄色国产精品网站大全在线免费观看| 91论坛在线播放| 日韩精品一区二区三区老鸭窝 | 国产精品无遮挡| 一区二区三区国产精华| 久久99九九99精品| 一本大道久久a久久综合| 日韩亚洲欧美在线| 日本一区二区三区在线不卡 | 日韩成人一区二区| 国产suv精品一区二区6| 欧美撒尿777hd撒尿| 国产亚洲精品aa| 日本在线不卡视频一二三区| 成人毛片在线观看| 欧美一区二区三区电影| 亚洲男同性恋视频| 国产乱子轮精品视频| 欧美视频在线一区二区三区| 久久精品人人做| 天堂成人国产精品一区| 91免费观看视频| 国产午夜精品一区二区| 日本成人在线不卡视频| 91蜜桃免费观看视频| 国产色综合久久| 日本成人中文字幕在线视频| 91九色最新地址| 欧美国产日韩亚洲一区| 美女视频黄免费的久久 | 最新日韩av在线| 精品亚洲欧美一区| 91麻豆精品国产91久久久使用方法 | 日韩一区二区麻豆国产| 亚洲一二三专区| 不卡电影免费在线播放一区| 精品福利一区二区三区| 秋霞影院一区二区| 欧美午夜精品久久久| 中文字幕字幕中文在线中不卡视频| 国产揄拍国内精品对白| 日韩一区二区三区电影在线观看 | 日韩福利电影在线| 欧美在线观看18| 亚洲色图欧洲色图婷婷| 成人免费毛片片v| 国产天堂亚洲国产碰碰| 国产老肥熟一区二区三区| 日韩女优av电影在线观看| 日韩精品欧美成人高清一区二区| 欧美视频完全免费看| 亚洲制服丝袜在线| 欧美亚洲高清一区二区三区不卡| 亚洲欧美偷拍另类a∨色屁股| 成人性生交大片免费看在线播放| 国产拍揄自揄精品视频麻豆| 国产一区二区在线看| 久久综合狠狠综合久久激情 | 欧美日韩高清一区| 亚洲成人久久影院| 欧美挠脚心视频网站| 视频一区欧美日韩| 日韩欧美一区中文| 精品一区二区影视| 精品99一区二区三区| 国产麻豆视频一区| 国产精品污污网站在线观看| av电影在线观看完整版一区二区| 欧美国产综合一区二区| 99re8在线精品视频免费播放| 一区在线中文字幕| 在线观看91视频| 青青青爽久久午夜综合久久午夜| 精品国内二区三区| 国产91精品露脸国语对白| 亚洲国产成人在线| 91污在线观看| 视频一区二区中文字幕| 精品免费国产一区二区三区四区| 国产尤物一区二区| 亚洲品质自拍视频| 7777女厕盗摄久久久| 韩国一区二区视频| 中文在线免费一区三区高中清不卡| 99久久精品国产毛片| 亚洲精品成a人| 91精品国产综合久久久久久漫画 | 亚洲国产一区二区三区| 欧美大片一区二区| 成人午夜激情在线| 亚洲国产精品自拍| 久久综合色一综合色88| 99久久精品费精品国产一区二区 | 成人一级片在线观看| 亚洲一卡二卡三卡四卡| 2020国产精品久久精品美国| 99国产麻豆精品| 日本vs亚洲vs韩国一区三区| 国产精品久久久99| 制服丝袜日韩国产| voyeur盗摄精品| 免费成人av资源网| 亚洲免费伊人电影| 日韩女优毛片在线| 91国产视频在线观看| 韩国av一区二区三区| 亚洲精品日韩综合观看成人91| 日韩欧美黄色影院| 色欧美88888久久久久久影院| 麻豆专区一区二区三区四区五区| 国产精品夫妻自拍| 日韩一区二区高清| 色婷婷综合久久久久中文| 激情综合色丁香一区二区| 亚洲免费在线看| 国产午夜精品一区二区三区四区| 欧美欧美午夜aⅴ在线观看| 99久久精品免费| 国模少妇一区二区三区| 视频一区视频二区中文| 亚洲丝袜另类动漫二区| 久久久久综合网| 日韩精品中文字幕一区二区三区 | 91天堂素人约啪| 国产在线视频不卡二|