function move(uint256 direction) public payable {
    require(tx.origin == msg.sender);

    uint doubleValue = mul(msg.value, 2);
    uint minValue = 10000000000000000; 

    
    require(msg.value >= minValue && doubleValue <= address(this).balance);

    
    uint dice = uint(keccak256(abi.encodePacked(now + uint(msg.sender) + direction))) % 3;

    
    if (dice == 2) {
      msg.sender.transfer(doubleValue);
      emit Winner(msg.sender, doubleValue);

    
    } else {
      
      uint coin = uint(keccak256(abi.encodePacked(now + uint(msg.sender) + direction))) % 2;

      
      if (coin == 1) {
        
        uint eightyPercent = div(mul(msg.value, 80), 100);

        msg.sender.transfer(eightyPercent);
        emit CupCake(msg.sender, eightyPercent);

      
      } else {
        emit Looser(msg.sender, msg.value);
      }
    }
  }