-
Notifications
You must be signed in to change notification settings - Fork 2
/
Sauvegarde.py
88 lines (77 loc) · 2.51 KB
/
Sauvegarde.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python3.4
########################################
#------------Donjon & Python-----------#
#--------------Sauvegarde--------------#
#--------------------------------------#
#-----------------v1.0-----------------#
#--------------------------------------#
#--------------Laloge Hugo-------------#
#---------------10/04/2014-------------#
########################################
#-----------Import des modules---------#
import __main__
import Magasin
#--------Définition des fonctions------#
#---Partie chargement---#
def charger(savePath):
fichier = open(savePath, mode='r')
text = ''.join(fichier.readlines())
fichier.close()
save = decrypter(text)
dico = separer(save)
Magasin.OR = int(dico['OR'])
__main__.numPartie = int(dico['numPartie'])
for i in Magasin.amel:
Magasin.amel[i] = int(dico[i])
Magasin.maj()
def decrypter(text):
code = '0101010'
decrypte = ''
for i in range(0, len(text), 7):
char = ''
for j in range(7):
char += str(int(text[i+j]) ^ int(code[j]))
decrypte += chr(int(char, 2))
return decrypte
def separer(text):
"""Transforme un text en dictionnaire"""
text = text.split('\n')
dico = {}
for i in range(len(text)-1): #-1 car la dèrnière ligne est "\n"
ligne = text[i].split('=')
dico[ligne[0]] = ligne[1]
return dico
#---Partie sauvegarde--#
def sauvegarder(savePath):
text = ''
text += ('numPartie=' + str(__main__.numPartie) + '\n')
for i in Magasin.amel:
text += (i + '=' + str(Magasin.amel[i]) + '\n')
text += ('OR=' + str(Magasin.OR) + '\n')
#Objets
text = crypter(text)
fichier = open(savePath, mode='w')
fichier.write(text)
fichier.close()
def crypter(text):
"""Crypte un text avec une clef"""
code = '0101010' #La clef est 42
crypte = '' #Texte final
for i in range(len(text)):
char = convertir(text[i])
for j in range(7):
crypte += str(int(char[j]) ^ int(code[j]))
return crypte
def convertir(char):
"""Renvoie le code binaire d'un caractère à 7 chiffres"""
chiffre = str(bin(ord(char))) #On converti en str pour pouvoir controler la longueur
binaire = ''
for i in range(9 - len(chiffre)):
binaire += '0'
binaire += chiffre[2:] #On ne compte pas le "0b" de chiffre
return binaire
#-----------Boucle principale----------#
if __name__ == '__main__':
numPartie = 0
#charger('Saves\\Player1.txt')
sauvegarder('Saves\\Player1.txt')