I am in the process of creating a text-based adventure game in Python. The game will not (and has no reason to) access the internet. When creating a save file, I want to securely encrypt and store the file. I would take all the data to be saved, run it through some encryption function, and create a text file storing the output of that encryption function. The file would be stored on the player's local computer storage (hard disk, user documents, user desktop, whatever).
My question is this: is there any way that I can create an encryption function inside the program that virtually uncrackable (whilst being decryptable)? Can any local encryption (even outside of Python) ever be "truly" secure? Just thinking about it/based on my knowledge of cryptography, I would say that it's not possible, but I've been wrong before.
I know that I can create pseudo-cryptography that's essentially obfuscation, but that, very obviously, is quite easy to crack. Also, I understand that most people wouldn't bother to or have the knowledge to edit the save file, but it doesn't take someone with too awfully much knowledge to do what I've stated in the following paragraph (if the individual is motivated enough, which most cheaters are).
The reason I want to encrypt the save file is because without encrypting it, it is so very easy to cheat the game by simply editing the (unencrypted) save file. Even encrypting the file leaves the encryption algorithm in plain sight in the python code; python does not need to be compiled into an executable, so the raw/natural python code is outright for anyone who simply looks at the contents of the game.
I highly doubt that secure encryption such as this is even possible, but if it is, please explain how and, if possible, provide some example Python code for incorporating it into Python (if it's possible for Python).
For good encryption to be secure, the key (and only the key) must be secure.
But if an application cannot retrieve the key from someplace else, it must store it in its own data or generate every time its needed. And that is not secure. It's like putting your house key under the doormat outside.
So obfuscation is the best you can hope for. And that depends on how sophisticated your public is. 
Compressing a savefile with one of the compression modules from the standard library and then cutting off the header before writing the data to disk will defeat casual lookers because it looks like random data without the identifying header. But if they can read and understand the source code of the program, they can easily make the text readable again.
Another approach would be to do nothing with the savefile, but create a checksum (say SHA1) of the savefile contents and store that somewhere else. Refuse to open a savefile whose contents don't match the checksum. Again, anyone who is capable and willing to go through the program's source code can "break" this protection.
Can encryption/cryptography be secure inside a local, internet-nonaccessing program?