InstruçÔes

Criar um Rastreador de EstatĂ­sticas de Personagem de Jogo

Neste laboratĂłrio, vocĂȘ vai criar um rastreador de estatĂ­sticas de personagem de jogo. O programa permitirĂĄ que vocĂȘ crie um personagem com atributos especĂ­ficos, atualize esses atributos e recupere as estatĂ­sticas atuais do personagem. Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratĂłrio. HistĂłrias de UsuĂĄrio: 1. Crie uma classe chamada GameCharacter que representa um personagem do jogo e gerencia as estatĂ­sticas do personagem. 2. Quando instanciado, um novo objeto GameCharacter deve ter os seguintes atributos:
  • _name definido para a string fornecida no momento da instanciação.
  • _health definido como 100.
  • _mana definido como 50.
  • _level definido como 1.
3. Crie uma propriedade name para acesso somente leitura ao nome do personagem. 4. Para a propriedade health:
  • Defina um getter que retorne a saĂșde atual.
  • Defina um setter que impeça que a saĂșde seja definida abaixo de 0 e limite a saĂșde em 100.
5. Para a propriedade mana:
  • Defina um getter que retorna a mana atual.
  • Defina um setter que impeça que a mana seja definida abaixo de 0 e limite a mana em 50.
6. Crie um getter para level para retornar o nível atual do personagem. 7. Defina um método chamado level_up que:
  • Aumenta o nĂ­vel do personagem em 1.
  • Redefine a vida para 100 e o mana para 50 usando seus respectivos setters de propriedade.
  • Exibe uma mensagem na forma <name> leveled up to <level>! (onde <name> e <level> devem ser substituĂ­dos pelo nome do personagem e novo nĂ­vel, respectivamente).
8. Defina um método __str__ que retorne uma string formatada incluindo:
  • O nome do personagem.
  • O nĂ­vel do personagem.
  • A saĂșde atual do personagem.
  • O mana atual do personagem.
Por exemplo, um personagem chamado Kratos, logo após a instanciação, deve ser representado como o seguinte:
Name: Kratos
   Level: 1
   Health: 100
   Mana: 50

Exemplo de uso

hero = GameCharacter('Kratos') # Creates a new character named Kratos
print(hero)  # Displays the character's stats

hero.health -= 30  # Decreases health by 30
hero.mana -= 10    # Decreases mana by 10
print(hero)  # Displays the updated stats

hero.level_up()  # Levels up the character
print(hero)  # Displays the stats after leveling up

O que fazer:

Testes:

  • VocĂȘ deve ter uma classe `GameCharacter`.
  • VocĂȘ deve ter um mĂ©todo `__init__` na classe `GameCharacter`.
  • O mĂ©todo `__init__` deve ter dois parĂąmetros, sendo o primeiro `self`.
  • VocĂȘ deve definir `self._name` para a string fornecida no momento da instanciação dentro do mĂ©todo `__init__`.
  • VocĂȘ deve atribuir `100` a `self._health` dentro do mĂ©todo `__init__`.
  • VocĂȘ deve atribuir `50` a `self._mana` dentro do mĂ©todo `__init__`.
  • VocĂȘ deve atribuir `1` a `self._level` dentro do mĂ©todo `__init__`.
  • VocĂȘ deve ter um mĂ©todo `name` na classe `GameCharacter`.
  • O mĂ©todo `name` deve ter apenas um parĂąmetro, `self`.
  • VocĂȘ deve retornar `self._name` no mĂ©todo `name`.
  • O mĂ©todo `name` deve ter um decorador `@property`.
  • VocĂȘ deve ter um mĂ©todo `health` na classe `GameCharacter`.
  • O mĂ©todo `health` deve ter apenas um parĂąmetro, `self`.
  • VocĂȘ deve retornar `self._health` no mĂ©todo `health`.
  • O mĂ©todo `health` deve ter um decorador `@property`.
  • VocĂȘ deve criar um mĂ©todo setter `health`.
  • O mĂ©todo setter `health` deve ter um decorador `@health.setter`.
  • O mĂ©todo setter `health` deve ter dois parĂąmetros, sendo o primeiro `self`.
  • VocĂȘ deve definir `self._health` como `0` se o valor dado ao setter `health` for menor que `0`.
  • VocĂȘ deve definir `self._health` como `100` se o valor dado ao setter `health` for maior que `100`.
  • VocĂȘ deve definir `self._health` para o valor dado ao setter `health` quando o valor estiver entre `0` e `100`.
  • VocĂȘ deve ter um mĂ©todo `mana` na classe `GameCharacter`.
  • O mĂ©todo `mana` deve ter apenas um parĂąmetro, `self`.
  • VocĂȘ deve retornar `self._mana` no mĂ©todo `mana`.
  • O mĂ©todo `mana` deve ter um decorador `@property`.
  • VocĂȘ deve criar um mĂ©todo setter `mana`.
  • O mĂ©todo setter `mana` deve ter um decorador `@mana.setter`.
  • O mĂ©todo setter `mana` deve ter dois parĂąmetros, sendo o primeiro `self`.
  • VocĂȘ deve definir `self._mana` como `0` se o valor dado ao setter `mana` for menor que `0`.
  • VocĂȘ deve definir `self._mana` para `50` se o valor dado ao setter `mana` for maior que `50`.
  • VocĂȘ deve definir `self._mana` para o valor dado ao setter `mana` se o valor estiver entre `0` e `50`.
  • VocĂȘ deve ter um mĂ©todo `level` na classe `GameCharacter`.
  • O mĂ©todo `level` deve ter apenas um parĂąmetro, `self`.
  • VocĂȘ deve retornar `self._level` no mĂ©todo `level`.
  • O mĂ©todo `level` deve ter um decorador `@property`.
  • VocĂȘ deve ter um mĂ©todo `level_up` na classe `GameCharacter`.
  • O mĂ©todo `level_up` deve ter apenas um parĂąmetro, `self`.
  • VocĂȘ deve aumentar `self._level` em `1` no mĂ©todo `level_up`.
  • VocĂȘ deve definir `self.health` para `100` no mĂ©todo `level_up`.
  • VocĂȘ deve definir `self.mana` para `50` no mĂ©todo `level_up`.
  • O mĂ©todo `level_up` deve imprimir `<name> leveled up to <level>!` (onde `<name>` e `<level>` devem ser substituĂ­dos pelo nome do personagem e pelo novo nĂ­vel, respectivamente).
  • VocĂȘ deve ter um mĂ©todo `__str__` na classe `GameCharacter`.
  • O mĂ©todo `__str__` deve ter apenas um parĂąmetro, `self`.
  • Seu mĂ©todo `__str__` deve retornar uma string com as estatĂ­sticas do personagem usando o formato fornecido.

Preview