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
@Somashiro
Copy link

Persos je sais déjà coder en python mais tes vidéos sont super et les TP j'en raffole pour l'idée moi g tout fait en un fichier car flemme de faire des modules. Ce fut du 10min ou 6 jsp donc c du bordel deso d'avance mais ca marche. Voici mon code:

class Weapon:
def init(self, name, damage):
self.name = name
self.damage = damage
print("La nouvelle arme", name, "a été créée avec succès et possède", damage, "points de dégâts")

def get_weapon_damage(self):
    return self.damage

def get_weapon_name(self):
    return self.name

class Player:
def init(self, pseudo, pv, pa):
self.pseudo = pseudo
self.pv = pv
self.pa = pa
self.weapon = None
print("Bienvenue au joueur", pseudo, "/ PV:", pv, "/ PA:", pa)

def set_weapon(self, weapon):
    self.weapon = weapon

def get_weapon_attributes(self):
    if self.weapon:
        w_dmg = self.weapon.get_weapon_damage()
        w_name = self.weapon.get_weapon_name()
        return w_name, w_dmg
    else:
        return None, None

def get_pseudo(self):
    return self.pseudo

def dammage(self, dammage):
    self.pv -= dammage

def dmg_player(self, target):
    if self.weapon != None:
        w_dmg = self.weapon.get_weapon_damage()
        dammage = self.pa + w_dmg
    else:
        dammage = self.pa
    target.dammage(dammage)

def get_pv(self):
    return self.pv

couteau = Weapon("couteau", 5)
baton = Weapon('baton', 3)

Player1 = Player("Marc", 10, 1)
Player2 = Player("Antonin", 10, 3)

Player1.set_weapon(baton)
Player2.set_weapon(couteau)

print(Player1.get_weapon_attributes())
Player1.dmg_player(Player2)
print(Player2.get_pv())

@Somashiro
Copy link

Moi g concaténée les deux atack (arme et initial) mais on peut simplement mettre l'arme même ci c plus logic de conter comme les dgt init comme la force du gars

@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