func: function PK(uint8 num,bytes32 name) 
      notLock
      msgSendFilter
      public payable {
          
          require(msg.value == mConfig.getPrice(),"msg.value is error");
          require(msg.sender != mWinner.addr,"msg.sender != winner");
          uint winRate  = mConfig.getWinRate(mWinner.winCount);
  
          uint curWinRate ; uint curOverRate;
          (curWinRate,curOverRate) = getRandom(100);
          
    
                  
          inviteHandler(name);
          address oldWinAddr = mWinner.addr;
          if(mWinner.addr == address(0) ) {
              mWinner = Winner(num,0,msg.sender);
          }
          else if( winRate < curWinRate ) {
              mWinner = Winner(num,1,msg.sender);
          }
          else{
              mWinner.winCount = mWinner.winCount + 1;
          }
          uint overRate = mConfig.getOverRate(mWinner.winCount);
          emit pkEvent(mWinner.addr,msg.sender,name, winRate, overRate, curWinRate, curOverRate,msg.sender == mWinner.addr, mConfig.getPrice());
          if(oldWinAddr != address(0) && curOverRate < overRate  ) {
          
            require(mWinner.addr != address(0),"Winner.addr is null");
            
            uint pumpRate = mConfig.getPumpRate();
            uint totalBalace = address(this).balance;
            uint giveToOwn   = totalBalace * pumpRate / 100;
            uint giveToActor = totalBalace - giveToOwn;
            owner.transfer(giveToOwn);
            mWinner.addr.transfer(giveToActor);
              
           emit gameOverEvent(gameIndex, mWinner.addr,mConfig.getPrice(),giveToActor);
            startNewGame();
          }
      }