Actually, it turned out I just reversed who received each point! The bug was more subtle and came down to the fact that arguments are passed by reference in QBasic, so the DoShot function modifies the caller's PlayerNum variable when a gorilla is hit. This means there's just dead code in the scoring function.