def get_average_dribble_distance(hits): i = 0 dribbleDistances = [] dribbleHitNo = [] while i < len(hits): # find full dribble hit = hits[i] dribbleHits = [] if hit.dribble == 2: dribbleHits.append(hit) i += 1 while hits[i].dribble: dribbleHits.append(hit) i += 1 # add last dribble hit - it has .dribble=0 dribbleHits.append(hits[i]) dribbleDistance = misc.find_distance(dribbleHits[0].position,dribbleHits[-1].position) dribbleDistances.append(dribbleDistance) dribbleHitNo.append(len(dribbleHits)) i += 1 aveDribbleDistance = div(sum(dribbleDistances),len(dribbleDistances)) aveDribbleHits = div(sum(dribbleHitNo),len(dribbleHitNo)) return aveDribbleDistance,aveDribbleHits
def analyse_game_possession(game): try: if game.isPossessionAnalysed: return except: pass for player in game.players: player.possessionH = [] player.possessionP = [] for frameNo in game._framesToParse: ballPosition = game.ball.positions[frameNo] minDistance = 50000 closestPlayer = None for player in game.players: playerPosition = player.positions[frameNo] distance = misc.find_distance(playerPosition,ballPosition) #check if closest if distance < minDistance: minDistance = distance # print(str(frameNo)+', '+str(distance)+', '+player.name) closestPlayer = player closestPlayer.possessionP.append(frameNo) # print(player.name) hitter = None _HitFrameNo = 0 for hit in game.hits: if _HitFrameNo < hit.frameNo <= frameNo: hitter = hit.player hitter.possessionH.append(frameNo) # for player in game.players: # print(player.name) # print(len(player.possessionP)) game.isPossessionAnalysed = True
def get_hit_distance(hit,nextHit): if nextHit: hit.distance = misc.find_distance(hit.position,nextHit.position) else: hit.distance = None return hit.distance