亚洲欧美第一页_禁久久精品乱码_粉嫩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| 久久免费电影网| 亚洲天堂免费看| 高清不卡一二三区| 国产日产欧美一区| 丁香婷婷综合网| 亚洲欧洲日本在线| 91免费精品国自产拍在线不卡| 亚洲欧美另类图片小说| 欧美日韩中文一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久精品国产色蜜蜜麻豆| 日韩一区二区三区四区五区六区| 经典三级在线一区| 自拍偷自拍亚洲精品播放| 欧美日韩一区二区三区在线看| 免费在线成人网| 国产精品入口麻豆九色| 欧美午夜精品久久久久久孕妇 | 国产精品色一区二区三区| 色久综合一二码| 日韩国产精品久久久| 久久伊人蜜桃av一区二区| kk眼镜猥琐国模调教系列一区二区 | 夜夜精品视频一区二区| 在线成人高清不卡| 丁香啪啪综合成人亚洲小说| 一区二区三区中文字幕电影| 91精品免费在线| 丰满白嫩尤物一区二区| 亚洲永久精品大片| 久久久久久久av麻豆果冻| 色综合天天综合| 国产在线麻豆精品观看| 亚洲人妖av一区二区| 欧美一区二区久久久| 成人av资源在线| 免费一区二区视频| 亚洲欧美另类图片小说| 精品粉嫩aⅴ一区二区三区四区| jlzzjlzz国产精品久久| 免费成人美女在线观看| 亚洲人成精品久久久久久| 欧美一区二区三区不卡| 波多野结衣在线aⅴ中文字幕不卡| 亚洲第一二三四区| 国产偷国产偷精品高清尤物| 欧美三级电影在线看| 福利一区在线观看| 精品综合免费视频观看| 亚洲韩国一区二区三区| 国产精品九色蝌蚪自拍| 制服.丝袜.亚洲.另类.中文 | 在线日韩av片| 成人激情动漫在线观看| 91传媒视频在线播放| 成人黄动漫网站免费app| 极品少妇xxxx精品少妇偷拍| 午夜不卡在线视频| 有码一区二区三区| 综合精品久久久| 国产精品你懂的| 久久久五月婷婷| 欧美变态tickle挠乳网站| 欧美日韩国产欧美日美国产精品| 99热精品国产| jizzjizzjizz欧美| 成人黄色大片在线观看| 丰满亚洲少妇av| 国产九色精品成人porny | 欧美色综合网站| 色综合色综合色综合色综合色综合 | 欧美系列亚洲系列| 色94色欧美sute亚洲线路一久| 成人激情免费视频| av亚洲精华国产精华精| 99久久精品免费观看| 99re免费视频精品全部| 99久久精品免费| 91尤物视频在线观看| 97久久久精品综合88久久| aaa亚洲精品一二三区| 99精品视频在线播放观看| av亚洲精华国产精华| 91蜜桃婷婷狠狠久久综合9色| 国产成人在线影院| jvid福利写真一区二区三区| 色综合色狠狠综合色| 欧美色欧美亚洲另类二区| 欧美日产在线观看| 日韩欧美高清dvd碟片| 精品国产免费人成在线观看| 欧美激情中文字幕| 亚洲视频免费在线观看| 一区二区免费看| 天天色 色综合| 激情综合色播激情啊| 成人污视频在线观看| 91视频免费播放| 在线观看91精品国产麻豆| 91精品国产福利在线观看 | 国产精品白丝在线| 亚洲精品国产高清久久伦理二区| 亚洲电影视频在线| 国产毛片精品视频| 91视视频在线直接观看在线看网页在线看| 在线看国产一区二区| 欧美一区二区国产| 欧美激情综合五月色丁香小说| 亚洲人成精品久久久久| 奇米精品一区二区三区在线观看| 久久99精品久久久久久久久久久久 | 久久久99精品免费观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 一区二区三区免费网站| 日韩在线一二三区| 成人午夜又粗又硬又大| 精品婷婷伊人一区三区三| 精品国免费一区二区三区| 亚洲视频图片小说| 久久97超碰色| 在线欧美日韩精品| 国产亚洲午夜高清国产拍精品| 夜夜精品视频一区二区| 国产99精品国产| 欧美一区二区三区视频在线 | 欧美日韩精品欧美日韩精品一| 久久欧美一区二区| 亚洲永久精品大片| 成人一区二区三区中文字幕| 欧美日韩日日骚| 亚洲欧美在线aaa| 久久精品久久99精品久久| 欧美性xxxxx极品少妇| 国产精品久99| 国产一区二区三区不卡在线观看 | 91麻豆自制传媒国产之光| 精品卡一卡二卡三卡四在线| 亚洲精品一卡二卡| 国产美女一区二区三区| 91精品国产高清一区二区三区| 亚洲激情自拍视频| 成人99免费视频| 国产日产欧美一区二区视频| 毛片不卡一区二区| 欧美一级欧美一级在线播放| 一区二区视频免费在线观看| av一区二区三区四区| 欧美国产日韩亚洲一区| 国产一级精品在线| 26uuu另类欧美| 蜜桃视频免费观看一区| 欧美人体做爰大胆视频| 亚洲国产婷婷综合在线精品| 91色婷婷久久久久合中文| 中文字幕免费不卡| 国产mv日韩mv欧美| 久久精品亚洲国产奇米99| 精品一区二区三区在线观看国产 | 欧美国产97人人爽人人喊| 九色综合国产一区二区三区| 日韩欧美激情一区| 日韩福利视频导航| 欧美精三区欧美精三区| 亚洲成人精品影院| 欧美日本乱大交xxxxx| 亚洲国产视频一区| 欧美日韩和欧美的一区二区| 亚洲与欧洲av电影| 精品视频1区2区3区| 亚洲一二三四区不卡| 欧美日韩国产一区二区三区地区| 亚洲一区在线观看免费| 欧美精品欧美精品系列| 亚洲国产精品久久艾草纯爱| 欧美剧情片在线观看| 免费视频最近日韩| 久久久欧美精品sm网站| 成人看片黄a免费看在线| 国产精品国产三级国产有无不卡| 99免费精品在线| 亚洲无人区一区| 欧美成人a∨高清免费观看| 韩国成人精品a∨在线观看| 国产精品网站导航| 91精品1区2区| 青青草视频一区| 国产午夜精品久久久久久久 | 老司机精品视频在线| 久久久久久久综合| 99精品欧美一区二区三区综合在线| 亚洲免费色视频| 欧美一区二区三区视频在线 | 久久久国产精品不卡| av成人老司机| 日韩专区一卡二卡| 久久久久久日产精品| 色呦呦网站一区| 精品亚洲免费视频| 中文字幕亚洲欧美在线不卡|