> For the complete documentation index, see [llms.txt](https://demirels-organization.gitbook.io/javascript-tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://demirels-organization.gitbook.io/javascript-tutorial/public-class-field/mmorpg-example.md).

# MMORPG Example

Here's an example of using public class fields in the context of a massively multiplayer online role-playing game (MMORPG):

```javascript
class Player {
  constructor(name, level, health) {
    this.name = name;
    this.level = level;
    this.health = health;
  }
  
  public attack(enemy) {
    enemy.health -= this.level * 10;
    console.log(`${this.name} attacks ${enemy.name} for ${this.level * 10} damage.`)
  }
  
  public levelUp() {
    this.level += 1;
    this.health += 50;
    console.log(`${this.name} has reached level ${this.level} and gained 50 health.`)
  }
}

class Enemy {
  constructor(name, level, health) {
    this.name = name;
    this.level = level;
    this.health = health;
  }
}

let player1 = new Player("John", 1, 100);
let enemy1 = new Enemy("Goblin", 1, 50);

player1.attack(enemy1); // "John attacks Goblin for 10 damage."
console.log(enemy1.health); // 40
player1.levelUp(); // "John has reached level 2 and gained 50 health."
console.log(player1.level); // 2
```

n this example, the `Player` class has public class fields `attack` and `levelUp`. The method `attack` allows the player to deal damage to an enemy and the method `levelUp` allows the player to increase its level and health. These methods can be called from any part of the program, both inside and outside the class, and can be accessed using the `this` keyword.

The `Enemy` class is also defined with public class fields `name`, `level`, `health`, these fields can be accessed from any part of the program too, but the class doesn't have any method to interact with it.

It's worth noting that this is a very basic example and a real-world MMORPG would likely have many more features and classes with many more fields and methods, but this should give you an idea of how public class fields can be used in such a context.
