Created
November 24, 2018 18:37
-
-
Save GravenilvecTV/9ee31bc10ba662f6b04774cecdd7003f to your computer and use it in GitHub Desktop.
Apprendre le Java #7 : Les Objets (corrigé du tp)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
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
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
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")
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)
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())