Perhaps that's for the best. You often worry about us stealing the code, maybe we'll steal the specs too!
The situation you described does not make the pointer any less local to a function.
Well apparently you fail to realize that if the shoe (the card decks in the game) and the shuffling algorithm are separate, self-contained entities it is trivial to integrate that code into another card game project, say, FreeCell. By spewing globals all over the place, you learn to rely on those and end up introducing interesting side effects to a program. That doesn't fascilitate code reuse. It isn't as easy as it could be to compile an already available shuffle, so you have to
resolve the same, boring part of the project over and over again.
There are uses for global scoped stuff. But they are normally environment variables and not program data. Your inability to realise this is fascinating.
But then, you claimed to have maintained things before so who knows what sort of kluges you have up your sleeve to avoid whittling away at tedium.
Every hand's a winner, every hand's a loser. You're playing with predictable people.