function getPrize(address _player, uint256 _game, bytes3 _bet, uint16 _index) 
            returns (bool) {
        TicketBet memory ticket = tickets[_player][_game][_index];

        if (ticket.isPayed || ticket.bet != _bet) {
            return false;
        }
        
        uint256 startBlock = getGameStartBlock(_game);
        uint8 matched = getMatches(startBlock, ticket.bet);
        if (matched == 0) {
            return false;
        }

        uint256 weiWin = 0;
        if (matched != 6) {
            uint256 weiByMatch = weiRaised[gamePlayed].mul(percents[matched]).div(100);
            weiWin = weiByMatch.div(gameStats[_game][matched]);
        } else {
            weiWin = jackpot.div(gameStats[_game][matched]);
            jackpot -= weiWin;
        }
        
        distributeFunds(weiWin, _game, matched, _player);

        ticket.isPayed = true;
        tickets[_player][_game][_index] = ticket;

        winners[gamePlayed].push(Winner({
            player: _player,
            bet: ticket.bet,
            matches: matched
        }));

        return true;
    }