I would store it in separate tables, so you got:
Games - GameID, Date, NumberOfShots (so you're not fixed to 20), Etc
Players - PlayerID, Name, etc
Turns - TurnID, GameID, PlayerID, Score
From these you can easily aggregate per player, something like this.
Get avarage percentage per player over the last 30 days.
select
p.PlayerID,
p.Name
AVG(p.Score / g.NumberOfShots) * 100 as Percentage
from
Games g
inner join Players p on p.GameID = g.GameID
inner join Turns t on t.GameID = g.GameID and t.PlayerID = p.PlayerID
where
g.Date > (sysdate() - 30)
group by
p.PlayerID,
p.Name