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:
_namedefinido para a string fornecida no momento da instanciação._healthdefinido como100._manadefinido como50._leveldefinido como1.
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
0e limite a saĂșde em100.
mana:
- Defina um getter que retorna a mana atual.
- Defina um setter que impeça que a mana seja definida abaixo de
0e limite a mana em50.
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
100e o mana para50usando 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).
__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.
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