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

Salut Graven j'ai découvert ta chaine y'a pas longtemps et j'adore tes TP (honnêtement celui-ci je sais pas trop si je l'ai réussi) mais je voudrais te demander comment faire pour afficher le nom de l'arme (parce que j'ai essayé et ça me met un truc bizarre) ? Donc si quelqu'un de la commu est chaud je voudrais bien qu'on m'explique comment faire.

@christian66-gif
Copy link

christian66-gif commented May 30, 2023

Bonjour OriginalNPC ...

difficile de te répondre sans ton code ... dans mon code ...

couteau = Arme("croc sanglant", 30)

j1 = Personnage("Chris", 100, 10)
j1.set_arme(couteau)

les Objets

class Personnage:
    def __init__(self, pseudo, vie, magie):
        self.pseudo = pseudo
    ...,

    # méthode pour changer l'arme du joueur
    def set_arme(self, arme):
        self.arme = arme
class Arme:
    def __init__(self, nom, degat):

        self.nom = nom
        ...,

    def get_nom(self):
        return self.nom

je l'affiche avec la commande print

print(j1.get_pseudo(), "attaque", j2.get_pseudo(), "avec", j1.arme.nom, "ayant", j1.arme.degat, "degats")

#ou simplifié fonctionne également
print(j1.pseudo, "attaque", j2.pseudo, "avec", j1.arme.nom, "ayant", j1.arme.degat, "dégâts")

pour afficher que le nom de l'arme

print(j1.arme.nom)

attention le code n'est pas complet ... ce sont les lignes pour afficher le nom de l'arme du joueur 1 .

@YaYdeYouTube
Copy link

Voilà mon code ^^ (sinon t'a mis apprendre le java dans le titre du git)

Main.py

from model.player import Player
from model.weapon import Weapon

player1 = Player("YaY", 20, 3)
player2 = Player("Graven", 20, 3)

Knife = Weapon("Couteau", 5)
player1.set_weapon(Knife)

player1.attack_player(player2)
print(player1.get_pseudo(), "attaque", player2.get_pseudo(), "!")
print(player1.get_pseudo(), ": ", player1.get_healt(), " pv / ", player2.get_pseudo(), ": ", player2.get_healt(), "pv")

Player.py

class Player:
    def __init__(self, pseudo, healt, attack, weapon=None):
        self.pseudo = pseudo
        self.healt = healt
        self.attack = attack
        self.weapon = weapon
        print("Bienvenue au joueur: ", self.pseudo, "/ points de vie: ", self.healt, "/ attaque: ", self.attack)

    def get_pseudo(self):
        return self.pseudo
    
    def get_healt(self):
        return self.healt
    
    def get_attack_value(self):
        return self.attack
    
    def set_weapon(self, weapon):
        self.weapon = weapon
    
    def damage(self, damage):
        self.healt -= damage
    
    def attack_player(self, target_player):
        if self.weapon != None:
            self.attack += self.weapon.damage

        target_player.damage(self.attack)

Weapon.py

class Weapon:

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

    def get_name(self):
        return self.name
    
    def get_damage(self):
        return self.name

@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