Using global variables solves this problem, it keeps the value. Better to use this for player stats than instance variables on the object. Even if you kept the instance variables on player, the only way I can see to solve this is to store the bullets as a global variable anyway and then apply it to the new player object, so might as well use globals!