Code source de PlayerManager.player_manager
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
"""
try:
import cPickle
import NaoCreator.Tool.facebookor as FC
import NaoCreator.Tool.speech_move as SM
from NaoCreator.setting import Setting
except Exception as e:
print e
[docs]class Player(object):
"""
Représente un utilisateur (joueur).
"""
def __init__(self, player_name=""):
"""
Créer un joueur à partir de son nom.
:param player_name: Le nom du joueur
"""
self.player_name = player_name
self.xp = 0
self.level = 1
self.exp_needed = 5
self.current_scenario = None
self.current_quest = None
self.current_objective = None
self.scenarios = []
[docs] def set_current_scenario(self, scenario):
"""
Modifie le scénario actuel du joueur.
:param scenario: Le nouveau scénario du joueur
"""
self.current_scenario = scenario
if scenario not in self.scenarios:
self.scenarios += [scenario]
[docs] def save(self):
"""
Sauvegarde le joueur dans un fichier.
"""
import os
if not os.path.exists('datas/player_data/{}'.format(self.player_name)):
os.mkdir('datas/player_data/{}'.format(self.player_name))
cPickle.dump(self, open('datas/player_data/{}/{}.play'.format(self.player_name, self.player_name), 'wb'))
print("Sauvegarde du joueur effectuée avec succès !")
@staticmethod
[docs] def load(player_name):
"""
Charge et retourne une instance de joueur à partir de son nom.
:param player_name: Le nom du joueur a charger.
"""
player = cPickle.load(open('./datas/player_data/{}/{}.play'.format(player_name, player_name), 'rb'))
return player
[docs] def level_up(self):
"""
Augmente le niveau du joueur de 1.
:return:
"""
self.level += 1
self.exp_needed += 4 + self.level
try:
FC.send_the_post("Le jardinier {} vient d'évoluer au niveau {} ! ┏(:|])┛┗(:))┓┗(:D)┛┏(8|)┓".format(self.player_name, self.level))
except Exception as e:
print e
SM.speech_and_move("Bravo tu a évolué au niveau {} ! Je vais le signaler sur ma page Facebook".format(self.level))
Setting.info("Level up! Le joueur {} a atteint le niveau {}.".format(self.player_name, self.level))
def give_xp(self, amount):
self.xp += amount
while self.xp >= self.exp_needed:
self.level_up()