Well, that's the problem primary keys are automatically UNIQUE.
No, I didn't have a primary key in that single table, and yes, there should be one there.
Just make a new field "id", make it auto_increment, and make that the primary key.
As for the number of records, don't sweat it - the database will cope.
You shouldn't be needing to set up empty records to start with, though; just add them as you need them. You don't say whether one player could have multiple scores on a given game or not; if they can, it's just an INSERT every time you get a new result, if they can't well, you find the appropriate game/name combo in the list and UPDATE the score.
You probably don't need to DELETE rows all that often; "SELECT id,player,score FROM games ORDER BY score WHERE game='$game' DESC LIMIT 100" will give you no more than the top 100 scores for $game no matter how many records there might be (and you'll still have the scores later if you decide to go up to 200)
So there won't be 100 entries in the database at first for any game: that's probably something that should be handled by the script, not the database. Ask for the top 100 scores, find out how many are actually retrieved, and loop through those.