Skip to content

Instantly share code, notes, and snippets.

@GravenilvecTV
Created November 24, 2018 18:37
Show Gist options
  • Save GravenilvecTV/9ee31bc10ba662f6b04774cecdd7003f to your computer and use it in GitHub Desktop.
Save GravenilvecTV/9ee31bc10ba662f6b04774cecdd7003f to your computer and use it in GitHub Desktop.
Apprendre le Java #7 : Les Objets (corrigé du tp)
from model.player import Player
from model.weapon import Weapon
knife = Weapon("Couteau", 3)
player1 = Player("Graven", 20, 3)
# donne un couteau faisant 3 dégats au joueur !
player1.set_weapon(knife)
player2 = Player("Bob", 20, 5)
player1.attack_player(player2)
print(player1.get_pseudo(), "attaque", player2.get_pseudo())
print("Bienvenue au joueur", player1.get_pseudo(), "/ Points de vie:", player1.get_health(), "/ Attaque:", player1.get_attack_value())
print("Bienvenue au joueur", player2.get_pseudo(), "/ Points de vie:", player2.get_health(), "/ Attaque:", player2.get_attack_value())
class Player:
def __init__(self, pseudo, health, attack):
self.pseudo = pseudo
self.health = health
self.attack = attack
self.weapon = None
print("Bienvenue au joueur", pseudo, "/Points de vie: ", health, "/ Attaque", attack)
def get_pseudo(self):
return self.pseudo
def get_health(self):
return self.health
def get_attack_value(self):
return self.attack
def damage(self, damage):
self.health -= damage
def attack_player(self, target_player):
damage = self.attack
# si le joueur a une arme
if self.has_weapon():
# ajoute les dégats de l'arme au point d'attaque du joueur
damage += self.weapon.get_damage_amount()
target_player.damage(damage)
# méthode pour changer l'arme du joueur
def set_weapon(self, weapon):
self.weapon = weapon
# méthode pour verifier si le joueur a une arme
def has_weapon(self):
return self.weapon is not None
class Weapon:
def __init__(self, name, damage):
self.name = name
self.damage = damage
def get_name(self):
return self.name
def get_damage_amount(self):
return self.damage
@Pcommander
Copy link

Bonjour à tous, voici ma version :

Weapon.py

# Création de la classe d'arme
class Weapon:

    def __init__(self, name, damage):
        self.name = name
        self.damage = damage

    def get_name(self):
        return self.name
    
    def get_damage_amount(self):
        return self.damage

Player.py

# Création de la classe du joueur
class Player :

    def __init__(self, pseudo, health, attack):
        self.pseudo = pseudo
        self.health = health
        self.attack = attack
        self.weapon = None
        print("Bienvenue au joueur {} / Vie : {} / Attaque : {}".format(pseudo, health, attack))

    def get_pseudo(self):
        return self.pseudo
    
    def get_health(self):
        return self.health
    
    def get_attack(self):
        return self.attack
       
    def damage(self, damage):
        self.health -= damage
        print("Aie... vous venez de subir {} points de dégâts !".format(damage))

    def attack_player(self, target_player):
        damage = self.attack
        # Si le joueur à une arme
        if self.has_weapon():
            # Ajout des points d'attaque de l'arme au joueur
            damage += self.weapon.get_damage_amount()

        target_player.damage(damage)

    # Méthode pour changer l'amre du joueur
    def set_weapon(self, weapon):
        self.weapon = weapon

    def get_weapon_name(self):
        if self.weapon is not None:
            return self.weapon.get_name()
        else:
            return "Aucune arme"

    # Méthode pour vérifier si le joueur à une arme
    def has_weapon(self):
        return self.weapon is not None

Main.py

# Importations des librairies
from models.Player import Player
from models.Weapon import Weapon

# Création des armes
knife = Weapon("Couteau", 8)
pistol = Weapon("Pistolet", 10)

# Création des joueurs
player1 = Player("Pcommander", 20, 2)
player2 = Player("Tcommander", 20, 2)

# Attribution des armes aux joueurs
player1.set_weapon(knife)
player2.set_weapon(pistol)

# Attaque du P1 sur P2
player1.attack_player(player2)
print("{} attaque {}".format(player1.get_pseudo(),player2.get_pseudo()))

# Affichages des caractéristiques après attaque
print("Bienvenue au joueur {} / Vie : {} / Attaque : {} / Arme : {}".format(player1.get_pseudo(), player1.get_health(), player1.get_attack(), player1.get_weapon_name()))
print("Bienvenue au joueur {} / Vie : {} / Attaque : {} / Arme : {}".format(player2.get_pseudo(), player2.get_health(), player2.get_attack(), player2.get_weapon_name()))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment