2014-12-16 2 views
0

필자가 지금까지 해본 것처럼 텍스트 파일이 아니라 코드 자체에 변수로 내 게임의 높은 점수를 저장하는 것을 고려했습니다. 추가 파일이 적기 때문입니다 이를 실행해야하며 999999 포인트가 발생하는 것이 더 어려워집니다.높은 점수를 추적하는 자체 수정 Python 코드

그러나이 경우 자체 수정 코드를 실행하여 점수 을 나타내는 전역 변수를 영구히 덮어 써야합니다.. 나는 그걸 들여다 보았다. 내가하고 싶은 일은 단지 전역 변수를 변경하는 것 뿐이라고 생각했는데, 내가 발견 한 모든 것들은 너무 발전했다.

자기가 수정하는 파이썬 코드를 작성하는 방법에 대한 설명을 누군가 이라고 말하면 좋을 것입니다. 이해를 돕기 위해 예제를 사용하는 것이 좋습니다.

+3

파일을 이진 파일로 저장하면 읽을 수 없습니까? – marsh

+3

이 작업을 수행하지 마십시오. 그냥 암호화하십시오. 전체 보안은 거의 불가능합니다 (이는 DRM과 동일한 문제입니다). 그러나 암호화 된 바이너리가 일반 사용자를 막을 수있을만큼 충분해야합니다. – rlms

+2

프로그램을 작성할 때 "추가 파일이 적게"는 고려해야한다고 생각하지 않습니다. 내가 좋아하는 게임 중 일부는 수십개의 설정 파일을 가지고 있으며 파일과 사운드 효과 파일과 하위 디렉토리를 저장하고 ... 게임을 덜 재미있게 만들어주지는 않습니다. – Kevin

답변

2

첫 번째 경향은 "하지 마라"입니다. 자체 수정 Python (실제로 모든 언어)은 버전이 지정된 라이브러리를 유지 관리하는 것을 매우 어렵게 만듭니다.

  1. 버그 수정을하고 재배포해야합니다. 자동 수정을 통해 저장된 데이터를 어떻게 병합합니까?
  2. 해시를 사용하여 패키징을 인증하는 것은 매우 어렵습니다. 로컬 버전을 수정 한 후에는 SHA가 일치하지 않아 원래 버전을 알기 어렵습니다.
  3. 안전하지 않습니다. 패키지에 저장되지 않은 Python 클래스를 저장하고로드 할 수는 있지만 사용자가 쓰기가 가능하면 외부 프로세스가 임의의 Python 코드를 해당 파일에 추가하여 평가할 수 있습니다. SQL 주입과 비슷하지만 파이썬 스타일.

Python 제작사는 JSON 파일을로드하고 덤프하는 것이 쉽지 않으므로 간단한 작업에서는 다른 것을 생각하지 않을 것입니다. CSV 파일조차도 사소하고 맵에 바인딩 될 수 있지만 자주 사용하는 스프레드 시트 편집기를 사용하여 데이터로보다 쉽게 ​​조작 할 수 있습니다.

내 제안 - 실험하고 싶지 않으면 자기 수정 Python을 사용하지 마십시오. 디스크와 메모리가 중요한 임베디드 환경에서 작업하는 경우가 아니라면 실용적인 솔루션이 아닙니다.

+0

코딩 자체 이외의 자체 수정과 관련된 문제는 솔직히 생각하지 않았습니다. 나는 실제로 실험 해보고 싶지만 실제로는 실제로 실제로 내가 찾고있는 것에 더 가까이 다가 가지 못한다는 소리를 들었습니다. 머리를 가져 주셔서 감사합니다. – MMM

관련 문제