Vous lisez 0 fil de discussion
  • Auteur
    Messages
    • #65566
      Vivec
      Participant

      Voici mon essai de 1e exercice, il est fonctionnel et permet d’ajouter ce qu’on veux lorsqu’on a compris la modularité. Si vous commentez le ‘addWeapon’ de conan, il en tiendra compte dans les logs. Et on peut aussi retourner l’arme qu’il portait lorsqu’on en ajoute une autre. Avec quelques petits check dans la fonction ‘addWeapon’ on retourne l’arme présente si elle n’es pas nil évidemment 😉

      Les remarques constructives sont les bienvenues 😉

      main.lua

      
      Character = require("character")
      Weapon = require("weapon")
      
      conan = Character.new("Conan", 10)
      woodSword = Weapon.new("Wood Sword", 2.5, 2, 1, 1, 1)
      
      conan:AddWeapon(woodSword)
      conan:Display()
      

      character.lua

      
      local character = {}
      local character_mt = { __index = character }
      
      function character.new(name, health)
        
        print("-----")
        print("New character instance created")
        
        local newCharacter = {}
        
        newCharacter.name = name
        newCharacter.health = health
        newCharacter.weapon = nil
        
        return setmetatable(newCharacter, character_mt)
        
      end
      --
      
      function character:AddWeapon(weapon)
        
        self.weapon = weapon
        
      end
      --
      
      function character:Display()
        
        print("-----")
        print("Le nom de ce personnage est "..self.name)
        print("Il possède encore "..self.health.." points de vie")
        print("-----")
        
        if self.weapon ~= nil then
          print(self.name.." porte cette arme")
          self.weapon:Display()
        else
          print(self.name.." ne porte aucune arme")
          print("-----")
        end
      end
      --
      
      return character
      

      weapon.lua

      
      local weapon = {}
      local weapon_mt = { __index = weapon }
      
      function weapon.new(name, weight, damage, resistance, price, durability)
        
        print("-----")
        print("New weapon instance created")
        
        local newWeapon = {}
        
        newWeapon.name = name
        newWeapon.weight = weight
        newWeapon.damage = damage
        newWeapon.resistance = resistance
        newWeapon.price = price
        newWeapon.durability = durability
        
        return setmetatable(newWeapon, weapon_mt)
        
      end
      --
      
      function weapon:Display()
        
        print("-----")
        print("Le nom de cette arme est "..self.name)
        print("Elle pèse "..self.weight.." kg")
        print("Elle coûte "..self.price.." pièces d'or")
        print("Elle fait "..self.damage.." points de dégâts")
        print("Elle résiste à "..self.resistance.." coups avant que sa durabilité de "..self.durability.." ne commence à diminuer")
        print("-----")
        
      end
      --
      
      return weapon
      
      • Ce sujet a été modifié le il y a 2 années et 1 mois par Vivec.
Vous lisez 0 fil de discussion
  • Vous devez être connecté pour répondre à ce sujet.