From 5d34159afe298ea93755ebfced482359faf1045f Mon Sep 17 00:00:00 2001 From: Paolo Bozzini Date: Tue, 14 Apr 2026 17:41:29 +0200 Subject: [PATCH 1/3] update OOP session materials & resources --- courses/backend/README.md | 1 + .../advanced-javascript/week4/README.md | 10 +- .../session-materials/code-inspiration.md | 224 ++++ .../week4/session-materials/exercises.md | 62 +- .../session-materials/js_oop_classes.pdf | Bin 0 -> 671660 bytes .../oop-monster-arena/.gitignore | 4 + .../oop-monster-arena/ABILITY_EXAMPLES.md | 158 +++ .../oop-monster-arena/README.md | 156 +++ .../assets/monsters/.gitkeep | 0 .../assets/monsters/Dragon.svg | 37 + .../assets/monsters/Goblin.svg | 71 ++ .../assets/monsters/Troll.svg | 89 ++ .../oop-monster-arena/index.html | 124 ++ .../oop-monster-arena/package-lock.json | 1013 +++++++++++++++++ .../oop-monster-arena/package.json | 18 + .../oop-monster-arena/src/arena.js | 258 +++++ .../oop-monster-arena/src/core/ability.js | 321 ++++++ .../oop-monster-arena/src/core/health.js | 45 + .../oop-monster-arena/src/core/monster.js | 203 ++++ .../oop-monster-arena/src/main.js | 40 + .../oop-monster-arena/src/monsters/Dragon.js | 55 + .../oop-monster-arena/src/monsters/Goblin.js | 45 + .../oop-monster-arena/src/monsters/Troll.js | 32 + .../src/monsters/your-monster.js | 45 + .../oop-monster-arena/src/style.css | 718 ++++++++++++ .../oop-monster-arena/src/ui.js | 538 +++++++++ .../oop-monster-arena/test.js | 207 ++++ .../advanced-javascript/week4/session-plan.md | 112 +- 28 files changed, 4561 insertions(+), 25 deletions(-) create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/js_oop_classes.pdf create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/.gitignore create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/ABILITY_EXAMPLES.md create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/README.md create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/.gitkeep create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Dragon.svg create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Goblin.svg create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Troll.svg create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/index.html create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package-lock.json create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package.json create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/arena.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/ability.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/health.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/monster.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/main.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Dragon.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Goblin.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Troll.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/your-monster.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/style.css create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/ui.js create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/test.js diff --git a/courses/backend/README.md b/courses/backend/README.md index 0825b4ba..796e91cf 100644 --- a/courses/backend/README.md +++ b/courses/backend/README.md @@ -77,6 +77,7 @@ Total: 18 weeks - [ ] Use logging and debugging tools to monitor and troubleshoot applications - [ ] Connect to databases and implement CRUD operations - [ ] Test APIs using Postman +- [ ] Document APIs using Swagger/OpenAPI ### [Specialist Career Training](/shared-modules/specialist-career-training) diff --git a/courses/frontend/advanced-javascript/week4/README.md b/courses/frontend/advanced-javascript/week4/README.md index 75d2dd93..23fe4226 100644 --- a/courses/frontend/advanced-javascript/week4/README.md +++ b/courses/frontend/advanced-javascript/week4/README.md @@ -18,8 +18,16 @@ By the end of this session, you will be able to: - [ ] Instantiate objects from classes using `new` - [ ] Use Methods and constructors - [ ] Use Static methods - - [ ] Use inheritance with `extends` and `super()` - [ ] Understand the difference between classes vs objects +- [ ] Use **inheritance** and **composition** to share behavior between classes + - [ ] Use inheritance with `extends` and `super()` + - [ ] Recognize when inheritance is a good fit ("is-a" relationship) + - [ ] Use composition ("has-a") as an alternative to inheritance +- [ ] _(optional)_ Recognise common **design patterns** and when to apply them + - [ ] Strategy — swap behavior by passing in a different object + - [ ] Factory — hide object creation complexity behind a function + - [ ] Observer — notify listeners when state changes + - [ ] Singleton — ensure only one instance of a class exists ```js class Comment { diff --git a/courses/frontend/advanced-javascript/week4/session-materials/code-inspiration.md b/courses/frontend/advanced-javascript/week4/session-materials/code-inspiration.md index 4df83aab..e56f640b 100644 --- a/courses/frontend/advanced-javascript/week4/session-materials/code-inspiration.md +++ b/courses/frontend/advanced-javascript/week4/session-materials/code-inspiration.md @@ -148,6 +148,118 @@ Promise.all([fetch("/a"), fetch("/b")]); Promise.race([fetch("/a"), fetch("/b")]); ``` +## Inheritance + +A child class inherits all properties and methods from a parent. `extends` = "is-a". `super()` calls the parent's constructor — must come before using `this`. + +```js +class Vehicle { + constructor(brand, speed) { + this.brand = brand; + this.speed = speed; + } + move() { + console.log(`${this.brand} is moving`); + } +} + +class Car extends Vehicle { + constructor(brand, speed, doors) { + super(brand, speed); // calls Vehicle's constructor + this.doors = doors; + } + honk() { + console.log("Beep!"); + } +} + +const car = new Car("Tesla", 0, 4); +car.move(); // inherited from Vehicle +car.honk(); // Car's own method +``` + +**When inheritance gets awkward** — the child is forced to break or override parent behavior: + +```js +class Vehicle { + refuel() { + console.log("Filling up the tank..."); + } +} + +// ElectricCar IS A Vehicle, but refuel() makes no sense for it +class ElectricCar extends Vehicle { + refuel() { + throw new Error("I don't use fuel!"); + } +} +``` + +When you find yourself overriding methods just to disable them, that's a sign to use composition instead. + +## Composition + +Instead of inheriting behavior, a class HAS parts. Each part is its own class. This is the "has-a" relationship. + +```js +class Engine { + start() { + console.log("Engine started"); + } +} + +class GPS { + navigate(to) { + console.log(`Navigating to ${to}`); + } +} + +class Car { + constructor(brand) { + this.brand = brand; + this.engine = new Engine(); + this.gps = new GPS(); + } + start() { + this.engine.start(); + } + goTo(address) { + this.gps.navigate(address); + } +} +``` + +**Passing dependencies in** — instead of creating the engine inside, receive it from outside. This lets you swap behaviors without changing the class: + +```js +class ElectricEngine { + start(brand) { + console.log(`${brand}: electric engine humming`); + } +} + +class GasEngine { + start(brand) { + console.log(`${brand}: gas engine roaring`); + } +} + +class Car { + constructor(brand, engine) { + this.brand = brand; + this.engine = engine; // passed in from outside + } + start() { + this.engine.start(this.brand); + } +} + +new Car("Tesla", new ElectricEngine()).start(); // "Tesla: electric engine humming" +new Car("Ford", new GasEngine()).start(); // "Ford: gas engine roaring" +``` + +**Rule of thumb:** favor composition. Use inheritance only when there's a clear, stable "is-a" relationship. + ## (Optional) Extending built-ins: Error and Web Components `Error` is a built-in class; custom errors use `extends` and `super()` like any other subclass. Web Components apply the same “class + lifecycle + HTML” idea to the platform. @@ -187,3 +299,115 @@ try { // customElements.define("my-comment", CommentElement); // ``` + +## (Optional) Design Patterns + +Named solutions to problems that keep showing up. Use these only when they genuinely fit — don't force them. + +### Strategy Pattern + +Swap behavior by passing in a different object. This is the composition idea taken one step further. + +```js +const electric = { + start(b) { + console.log(`${b}: humming`); + }, +}; +const gas = { + start(b) { + console.log(`${b}: roaring`); + }, +}; +const hybrid = { + start(b) { + console.log(`${b}: both!`); + }, +}; + +// Same class, different strategy → different behavior +new Car("Tesla", electric).start(); +new Car("Ford", gas).start(); +new Car("Toyota", hybrid).start(); +``` + +**When to use it:** multiple ways to do the same thing (sorting, validation, auth); you want to switch behavior without modifying the class itself. + +### Factory Pattern + +A function that creates objects for you — hides `new` and setup logic from the caller. + +```js +function createCar(type, brand) { + const engines = { + electric: { + start(b) { + console.log(`${b}: humming`); + }, + }, + gas: { + start(b) { + console.log(`${b}: roaring`); + }, + }, + }; + return new Car(brand, engines[type]); +} + +const tesla = createCar("electric", "Tesla"); +const ford = createCar("gas", "Ford"); +``` + +**When to use it:** object creation is complex (many params, config, dependencies); you want to centralize and hide construction details. + +### Observer Pattern + +"When something happens, notify everyone who cares." This is how `addEventListener`, Node's `EventEmitter`, and most UI frameworks work under the hood. + +```js +class Order { + constructor() { + this.listeners = []; + this.status = "pending"; + } + + onChange(fn) { + this.listeners.push(fn); + } + + updateStatus(newStatus) { + this.status = newStatus; + this.listeners.forEach((fn) => fn(this.status)); + } +} + +const order = new Order(); +order.onChange((s) => console.log(`Customer notified: ${s}`)); +order.onChange((s) => console.log(`Driver notified: ${s}`)); +order.updateStatus("ready"); // both callbacks fire +``` + +### Singleton Pattern + +Only one instance ever exists. Every call to `new` returns the same object. + +```js +class Database { + constructor(url) { + if (Database.instance) return Database.instance; + this.url = url; + this.connected = false; + Database.instance = this; + } + connect() { + this.connected = true; + } +} + +const db1 = new Database("postgres://..."); +const db2 = new Database("mysql://..."); +console.log(db1 === db2); // true — same instance! +``` + +**Good for:** DB connections, config, logging, caches — things you truly need only one of. +**Use sparingly:** singletons are global state in disguise. They make testing harder and hide dependencies. diff --git a/courses/frontend/advanced-javascript/week4/session-materials/exercises.md b/courses/frontend/advanced-javascript/week4/session-materials/exercises.md index a375086f..64c32d47 100644 --- a/courses/frontend/advanced-javascript/week4/session-materials/exercises.md +++ b/courses/frontend/advanced-javascript/week4/session-materials/exercises.md @@ -2,17 +2,19 @@ Work through these in order. -## 1. Create a user class +## 1. User class with DOM rendering -The class should have 2 properties: `firstName` and `lastName`. Hint: Use `this` and `constructor`. +### 1. Create a user class -## 2. Create an instance of the class +Create a `User` class with 2 properties: `firstName` and `lastName`. Hint: use `this` and `constructor`. + +### 2. Create an instance of the class Use the `new` keyword and assign the instance in a variable. Add a **`renderUserCard(user)`** function that accepts a **`User`** instance and renders a user card on the page (e.g. a `div` with `firstName` and `lastName`). -## 3. Create a class method +### 3. Create a class method 1. Add **`getFullName`**: it should return the combined first and last name of the user. Use string concatenation or template literals and **`this`** to read the properties. @@ -20,7 +22,7 @@ Add a **`renderUserCard(user)`** function that accepts a **`User`** instance and 3. Call **`myUser.render()`** so the card appears on the page (you can stop using **`renderUserCard`** once this works). -## 4. Creating a CV class +## 2. Creating a CV class The CV that we will be making uses three classes: `Job`, `Education` and `CV`. The `CV` class we have made for you (with some missing functionality). The `Job` and `Education` classes you need to create. @@ -87,3 +89,53 @@ class CV { ### Part 4 Add a method to the `CV` class called `renderCV()`. This method should render out the CV using HTML. Make sure, that view updates, when data is changed. + +## 3. Design Challenge: FoodDash + +You're building a food delivery app. Customers browse restaurants, add items to their order, and a driver picks it up and delivers it. + +**Rules:** paper only — no code yet! + +For each class you identify, write down: + +- Its name +- Its properties +- Its methods +- How it relates to the other classes + +Think about: + +1. What classes do you need? +2. What properties does each class have? +3. What methods does each class need? +4. How do the classes relate to each other? +5. Does anything share behavior? How would you handle that? + +When done, compare your design with others: which classes did different people pick? Did anyone make `Driver extends User`? How did you handle the `Order`/`Restaurant` relationship? + +## Bonus: Build FoodDash + +Now that you've designed FoodDash on paper, build it in code. + +1. Create a `Restaurant` class with a `name` property and a `menu` property (array of items, each with a `name` and `price`). +2. Create an `Order` class that takes an array of items and a `Restaurant` instance. + - Add an `addItem(item)` method and a `removeItem(item)` method. + - Add an `async calculateTotal()` method that sums the prices of all items in the order. +3. Create a `User` class that receives a `name`, `email`, and `role` object via the constructor. The role object must have a `perform(name)` method. + - Add a `doWork()` method that calls `this.role.perform(this.name)`. +4. Create two role objects (`customerRole` and `driverRole`), each with a `perform(name)` method that logs what that role does. + +**Bonus:** Add a `static Order.sortByTotal(orders)` method that sorts an array of orders by total price. + +## Challenge: Monster Arena + +A turn-based monster battle game — design and OOP in action. + +You have a starter project in [`./oop-monster-arena/`](./oop-monster-arena/). Follow the instructions in its README. + +The challenge covers: + +- Modeling game entities as classes (`Monster`, `Arena`, `Attack`) +- Using composition to give monsters different attack strategies +- Inheritance for shared monster behavior +- Turn-based game loop logic diff --git a/courses/frontend/advanced-javascript/week4/session-materials/js_oop_classes.pdf b/courses/frontend/advanced-javascript/week4/session-materials/js_oop_classes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e566337afe0f9e485245227a158955d46001c7e GIT binary patch literal 671660 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 **Higher `amount` = lower trigger chance.** The budget is fixed, so if you return `50`, it fires ~30% of the time. If you return `10`, it fires ~100% (or 80% for HealAbility). Big swings are rare; small effects are reliable. + +> **Fewer charges = higher trigger chance.** Limited-charge abilities get a budget bonus to compensate. A 1-charge ability fires up to 5× more reliably than an unlimited one at the same amount — so a single-use nuke can be near-guaranteed. + +--- + +## Budget & trigger chance + +Every ability type has a fixed **budget**. The trigger chance is calculated automatically: + +```text +triggerChance = (budget × chargeMultiplier) / amount (capped at 100%) +``` + +### Base budgets (unlimited / ≥ 5 charges) + +| Type | Budget | amount 8 | amount 15 | amount 20 | amount 30 | amount 50 | +| ------------- | ------ | -------- | --------- | --------- | --------- | --------- | +| DamageAbility | 15 | 100% | 100% | 75% | 50% | 30% | +| HealAbility | 12 | 100% | 80% | 60% | 40% | 24% | +| ArmorAbility | 8 | 100% | 53% | 40% | 27% | 16% | + +### Charge multiplier + +Charges are part of the budget. An ability with limited charges can fire fewer times per bout, so each trigger is worth more — the budget scales up automatically. + +```text +chargeMultiplier = 5 / min(charges, 5) +``` + +| charges | multiplier | effective DamageAbility budget | +| ------- | ---------- | ------------------------------ | +| ∞ or ≥5 | ×1.0 | 15 | +| 3 | ×1.67 | 25 | +| 2 | ×2.5 | 37.5 | +| 1 | ×5.0 | 75 | + +**Examples with charges:** + +- `new DamageAbility(30)` → 50% trigger, fires every turn it can (unlimited) +- `new DamageAbility(30, 3)` → **83%** trigger, fires at most 3 times +- `new DamageAbility(30, 1)` → **100%** trigger, fires exactly once (guaranteed) +- `new HealAbility(20)` → 60% trigger, unlimited +- `new HealAbility(20, 2)` → **100%** trigger, fires at most twice +- `new ArmorAbility(20)` → 40% trigger, unlimited +- `new ArmorAbility(20, 1)` → **100%** trigger, fires exactly once (guaranteed) + +When `activate()` returns a **variable** amount, the charge multiplier still applies and the chance is recalculated each turn based on whatever value you return. + +--- + +## DamageAbility + +Deals extra damage to the opponent each time it triggers. + +**Flat bonus** — simplest case, always hits for the same extra damage. + +```text +activate() returns 20 — triggers 75% of the time. +``` + +**Rage** — tracks how many hits you've taken; the more damage received, the harder the next hit. + +```text +activate() returns 10 + (hitsReceived × 5). +Each hit you absorb adds 5 to the next ability trigger. +describe() says "Warlord retaliates with X fury damage!" +``` + +**Finishing blow** — checks opponent's HP; explodes when they're low. + +```text +activate() returns 50 if opponent.hp.current < 30, else 10. +When the enemy is near death, you deal a huge spike. +``` + +**Berserk (limited charges)** — 3 charges only, but each one hits hard. + +```text +new DamageAbility(40, 3) — triggers ~63% each turn (budget ×1.67), 3 uses total. +``` + +--- + +## HealAbility + +Restores HP to the attacker each time it triggers. + +**Steady regeneration** — modest heal every few turns. + +```text +new HealAbility(15) — heals 15 HP, triggers 80% of the time. +``` + +**Desperate surge** — heals more when critically low. + +```text +activate() returns 40 if attacker.hp.current < 20, else 8. +Nearly dead? Panic-heal for a large burst. +``` + +**Vampiric strike** — heals based on how hard you attack. + +```text +activate() returns attacker.attackPower / 2. +Steals life proportional to your own strength. +``` + +--- + +## ArmorAbility + +Reduces the opponent's `attackPower` permanently for the rest of the bout. + +**Steady debuff** — grinds down the enemy's attack over time. + +```text +new ArmorAbility(5) — reduces opponent attack by 5, triggers 100% of the time. +By turn 4 the enemy hits much weaker. +``` + +**Intimidation (one shot)** — big one-time armor shred on first contact. + +```text +new ArmorAbility(20, 1) — 1 charge, reduces attack by 20 (100% guaranteed, budget ×5). +One scary moment early that sets the tone for the whole fight. +``` + +--- + +## Ability + onTakeDamage (ability swap) + +The most advanced pattern — your monster **changes ability mid-fight** when hurt. + +**Cornered animal** — starts defensive, switches to offense when badly hurt. + +```text +Start with a HealAbility. +In onTakeDamage(): when HP drops below 50%, swap this.ability to a DamageAbility. +describe() says "Cornered, X fights back with desperation!" +``` + +**Growing counter** — tracks damage taken and scales the ability accordingly. + +```text +this.hitsReceived = 0 +onTakeDamage() increments hitsReceived +activate() returns hitsReceived × 3 +The ability grows stronger the longer the fight goes on. +``` diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/README.md b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/README.md new file mode 100644 index 00000000..a5ceef56 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/README.md @@ -0,0 +1,156 @@ +# Monster Arena ⚔️ + +_Created by Paolo Bozzini for HackYourFuture Denmark — modified fork from [PaoloBozzini/oop-monster-arena](https://github.com/PaoloBozzini/oop-monster-arena/tree/main)._ + +Each group builds a custom monster. At the end of the session, **all monsters fight in a round-robin tournament** — every monster vs every other monster, once. The arena animates each battle in real time in the browser, with a live results matrix and a 1 000-simulation Monte Carlo win-rate chart. + +--- + +## What you'll build + +A JavaScript class that extends `Monster`. Your monster has: + +- A **name**, **health points**, and **attack power** (you choose the numbers) +- A **special ability** — something creative that fires after each normal attack + +The base `Monster` class uses a `HealthComponent` for HP management — this is an example of **composition** (has-a relationship). Your subclass is an example of **inheritance** (is-a relationship). You'll see both OOP patterns in action. + +**Stat budget:** your combined score — `health + attackPower × 3` — must be ≤ 300. Attack power is more expensive than raw HP (3 pts each vs 1 pt). Dragon uses 160 HP + 30 attack × 3 = 250 pts. Exceeding the budget throws an error immediately so you can fix it fast. + +--- + +## Your workflow + +### 1. Get the project + +Clone or download this project, then create your own GitHub repository and push it there: + +```bash +cd oop-monster-arena +git remote set-url origin +git push -u origin main +npm install +``` + +### 2. Copy the template + +```bash +cp src/monsters/your-monster.js src/monsters/YourMonsterName.js +``` + +Open the new file. Read `src/monsters/Dragon.js` for a full worked example, then fill in your stats and pick an ability to inject. + +### 3. Add your monster's image + +- Find or generate an image for your monster (Google Images, DALL·E, Midjourney…) +- The filename **must exactly match your class name** (case-sensitive!) +- If your image is a **PNG**: save it as `assets/monsters/YourMonsterName.png` — done! +- If your image is a **JPG or other format**: save it with the right extension, then add this to your class: + ```js + get imagePath() { return 'assets/monsters/YourMonsterName.jpg'; } + ``` + +### 4. Test your monster + +```bash +npm test # tests src/monsters/your-monster.js +npm test src/monsters/YourMonsterName.js # tests your renamed file +``` + +You should see green checks for all tests. Fix anything red before moving on. + +--- + +## What you write + +Two classes in one file — an ability and a monster: + +```js +// Your ability — extends one of the three base types +class MyAbility extends DamageAbility { + activate(attacker, opponent) { + /* return damage amount */ + } + describe(attacker, amount) { + /* return a log string */ + } +} + +// Your monster — extends Monster, injects your ability +export class YourMonster extends Monster { + constructor() { + super("Name", health, attackPower, new MyAbility(amount)); + } + onTakeDamage(amount) { + /* optional — react when hit, swap stats or ability */ + } +} +``` + +## Monster hooks + +| Override | When it's called | What to do | +| ---------------------- | -------------------------- | -------------------------------------------- | +| `onTakeDamage(amount)` | Every time you take damage | Change stats, swap ability — no return value | + +## Ability base types + +Extend one and override `activate()`. `triggerChance` is derived automatically as `budget / amount` — you never set it directly. + +| Base type | Budget | Default effect | +| --------------- | ------ | ------------------------------------- | +| `DamageAbility` | 15 | `opponent.takeDamage(this.amount)` | +| `HealAbility` | 12 | `attacker.hp.heal(this.amount)` | +| `ArmorAbility` | 8 | `opponent.attackPower -= this.amount` | + +Example: `new MyAbility(30)` extends `DamageAbility` → triggerChance = 15/30 = 50%. + +See `ABILITY_EXAMPLES.md` for full examples including the charge system. + +--- + +## Study guide + +| File | Read it? | Edit it? | +| ------------------------------ | -------------------------------------- | ------------------------ | +| `src/core/health.js` | ✅ Yes — see how **composition** works | ❌ No | +| `src/core/monster.js` | ✅ Yes — understand the base class | ❌ No | +| `src/core/ability.js` | ✅ Yes — see the three ability types | ❌ No | +| `src/monsters/Dragon.js` | ✅ Yes — your **reference example** | ❌ No | +| `src/monsters/your-monster.js` | ✅ Yes | ✅ **This is your file** | +| `src/arena.js` | Optional | ❌ No | +| `src/ui.js` | Optional | ❌ No | + +--- + +## Running the arena + +```bash +npm install +npm run dev +``` + +Open the URL shown in the terminal. To add more monsters to the tournament, update `src/main.js`: + +```js +// Step 1: add an import at the top +import { Hydra } from "./monsters/Hydra.js"; +import { Werewolf } from "./monsters/Werewolf.js"; + +// Step 2: add a new instance to the array +const monsters = [new Dragon(), new Hydra(), new Werewolf()]; +``` + +Vite hot-reloads automatically — save `main.js` and the browser updates instantly. + +--- + +## Checklist + +- [ ] Cloned/downloaded the project, created own repo, ran `npm install` +- [ ] Copied and renamed `your-monster.js` +- [ ] Renamed the class to match the filename (case-sensitive!) +- [ ] Called `super()` with name, health, attack power, and an ability (budget: `health + attackPower × 3 ≤ 300`) +- [ ] Passed a `DamageAbility`, `HealAbility`, or `ArmorAbility` as the 4th argument +- [ ] Added an image to `assets/monsters/` (exact class name as filename) +- [ ] Ran `npm test` — all checks pass diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/.gitkeep b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Dragon.svg b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Dragon.svg new file mode 100644 index 00000000..b127eaa8 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Dragon.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Goblin.svg b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Goblin.svg new file mode 100644 index 00000000..c923c1ab --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Goblin.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Troll.svg b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Troll.svg new file mode 100644 index 00000000..d8578be1 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/assets/monsters/Troll.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/index.html b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/index.html new file mode 100644 index 00000000..7b6150ee --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/index.html @@ -0,0 +1,124 @@ + + + + + + + + + Monster Arena + + +

+

⚔️ Monster Arena

+

+ Waiting for the tournament to start... +

+ +
+ +
+ + +
+
+ + +
+

+
+
+
+ +
+ + +
+
    +
    + + +
    +
    + + +
    +

    +
    +
    +
    + +
    +
    + + + + + + + + +
    +

    Round Robin

    +
    +
    +
    +
    + + + + diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package-lock.json b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package-lock.json new file mode 100644 index 00000000..33dfa9fe --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package-lock.json @@ -0,0 +1,1013 @@ +{ + "name": "monster-arena", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "monster-arena", + "version": "1.0.0", + "dependencies": { + "gsap": "^3.12.5" + }, + "devDependencies": { + "prettier": "^3.8.1", + "vite": "^5.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gsap": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.14.2.tgz", + "integrity": "sha512-P8/mMxVLU7o4+55+1TCnQrPmgjPKnwkzkXOK1asnR9Jg2lna4tEY5qBJjMmAaOBDDZWtlRjBXjLa0w53G/uBLA==", + "license": "Standard 'no charge' license: https://gsap.com/standard-license." + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + } + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package.json b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package.json new file mode 100644 index 00000000..e9354a54 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/package.json @@ -0,0 +1,18 @@ +{ + "name": "monster-arena", + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "test": "node test.js" + }, + "dependencies": { + "gsap": "^3.12.5" + }, + "devDependencies": { + "prettier": "^3.8.1", + "vite": "^5.2.0" + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/arena.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/arena.js new file mode 100644 index 00000000..7fc05b38 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/arena.js @@ -0,0 +1,258 @@ +// arena.js — tournament engine. Students do not edit this file. +// +// Two-phase design: +// 1. Simulate all bouts instantly (deterministic, no async) +// 2. Play back the event log with delays (async, drives the UI) + +const ATTACK_DELAY = 400; +const BOUT_DELAY = 1800; +const SPECIAL_DELAY = 300; + +function emit(name, detail) { + document.dispatchEvent(new CustomEvent(`arena:${name}`, { detail })); +} + +/** + * Run a Monte Carlo simulation over many tournaments and return win-rate stats. + * Uses a lightweight simulation that skips event building for speed. + * + * @param {Monster[]} monsters + * @param {number} [iterations=1000] + * @returns {{ name: string, winRate: number, avgWins: number }[]} + * Sorted by winRate descending. winRate = fraction of tournaments won (0–1). + * avgWins = average bout wins per tournament. + */ +export function monteCarlo(monsters, iterations = 1000) { + const ids = monsters.map((m) => m.id); + const tournamentWins = Object.fromEntries(ids.map((id) => [id, 0])); + const boutWinTotals = Object.fromEntries(ids.map((id) => [id, 0])); + const boutsPerTournament = (monsters.length * (monsters.length - 1)) / 2; + + for (let iter = 0; iter < iterations; iter++) { + const wins = Object.fromEntries(ids.map((id) => [id, 0])); + + for (let i = 0; i < monsters.length; i++) { + for (let j = i + 1; j < monsters.length; j++) { + const a = monsters[i]; + const b = monsters[j]; + a.reset(); + b.reset(); + const winner = _simulateBoutFast(a, b); + if (winner) wins[winner.id]++; + } + } + + monsters.forEach((m) => m.reset()); + + // Credit tournament win to whoever had the most bout wins. + const maxWins = Math.max(...Object.values(wins)); + const champIds = ids.filter((id) => wins[id] === maxWins); + // Distribute credit evenly among tied champions. + champIds.forEach((id) => { + tournamentWins[id] += 1 / champIds.length; + }); + ids.forEach((id) => { + boutWinTotals[id] += wins[id]; + }); + } + + return monsters + .map((m) => ({ + name: m.name, + winRate: tournamentWins[m.id] / iterations, + avgWins: boutWinTotals[m.id] / iterations, + maxWins: boutsPerTournament, + })) + .sort((a, b) => b.winRate - a.winRate); +} + +/** Lightweight bout simulation — no event recording, just returns the winner. */ +function _simulateBoutFast(a, b) { + const goesFirst = Math.random() < 0.5 ? a : b; + const goesSecond = goesFirst === a ? b : a; + let turn = 0; + + while (a.isAlive() && b.isAlive() && turn < 200) { + const attacker = turn % 2 === 0 ? goesFirst : goesSecond; + const defender = turn % 2 === 0 ? goesSecond : goesFirst; + attacker.attack(defender); + turn++; + } + + if (a.isAlive() && !b.isAlive()) return a; + if (b.isAlive() && !a.isAlive()) return b; + return null; // draw +} + +function simulateBout(a, b) { + const events = []; + let turn = 0; + + // Coin flip — first attacker varies each bout even with identical builds. + const goesFirst = Math.random() < 0.5 ? a : b; + const goesSecond = goesFirst === a ? b : a; + + // 200-turn cap prevents infinite loops with immortal builds. + while (a.isAlive() && b.isAlive() && turn < 200) { + const attacker = turn % 2 === 0 ? goesFirst : goesSecond; + const defender = turn % 2 === 0 ? goesSecond : goesFirst; + + // Snapshot HP before the attack so the attack event reflects only normal + // damage, and the special event reflects only the special's contribution. + const defenderHpBefore = defender.hp.current; + + const result = attacker.attack(defender); + + // HP after just the normal attack (before the special was applied). + // attack() applies both atomically, so we reconstruct the mid-point: + // normal damage is clamped at 0 by HealthComponent, mirror that here. + const defenderHpAfterAttack = Math.max(0, defenderHpBefore - result.damage); + const defenderPctAfterAttack = Math.round( + (defenderHpAfterAttack / defender.hp.max) * 100, + ); + + events.push({ + type: "attack", + attackerName: attacker.name, + defenderName: defender.name, + damage: result.damage, + defenderHp: defenderHpAfterAttack, + defenderMaxHp: defender.hp.max, + defenderPct: defenderPctAfterAttack, + attackerSide: attacker === a ? "left" : "right", + }); + + if (result.special) { + // defender.hp.current now reflects attack + special; attacker.hp.current + // reflects any self-heal from the special. + events.push({ + type: "special", + attackerName: attacker.name, + description: result.special, + defenderHp: defender.hp.current, + defenderMaxHp: defender.hp.max, + defenderPct: defender.hp.percentage, + attackerHp: attacker.hp.current, + attackerMaxHp: attacker.hp.max, + attackerPct: attacker.hp.percentage, + attackerSide: attacker === a ? "left" : "right", + }); + } + + turn++; + } + + let winner = null; + if (a.isAlive() && !b.isAlive()) winner = a; + else if (b.isAlive() && !a.isAlive()) winner = b; + + events.push({ + type: "boutEnd", + winnerId: winner ? winner.id : null, + winnerName: winner ? winner.name : null, + isDraw: winner === null, + }); + return { events, winner, firstAttacker: goesFirst }; +} + +/** + * Run a round-robin tournament — every monster fights every other monster once. + * @param {Monster[]} monsters + */ +export function tournament(monsters) { + if (monsters.length < 2) { + const label = document.getElementById("bout-label"); + if (label) + label.textContent = + "⚠️ Need at least 2 monsters to start the tournament!"; + console.error("Need at least 2 monsters for a tournament."); + return; + } + + const allEvents = []; + const wins = Object.fromEntries(monsters.map((m) => [m.id, 0])); + + for (let i = 0; i < monsters.length; i++) { + for (let j = i + 1; j < monsters.length; j++) { + const a = monsters[i]; + const b = monsters[j]; + + a.reset(); + b.reset(); + + // Simulate before building boutStart so firstAttacker is available. + const { events, winner, firstAttacker } = simulateBout(a, b); + + allEvents.push({ + type: "boutStart", + aId: a.id, + bId: b.id, + aName: a.name, + bName: b.name, + aImagePath: a.imagePath, + bImagePath: b.imagePath, + aMaxHp: a.hp.max, + bMaxHp: b.hp.max, + firstAttacker: firstAttacker.name, + }); + + allEvents.push(...events); + if (winner) wins[winner.id]++; + + allEvents.push({ type: "boutPause" }); + } + } + + const leaderboard = monsters + .map((m) => ({ name: m.name, wins: wins[m.id] })) + .sort((a, b) => b.wins - a.wins); + + allEvents.push({ type: "tournamentEnd", leaderboard }); + + monsters.forEach((m) => m.reset()); + + playback(allEvents); +} + +let _pendingTimeouts = []; + +export function cancelTournament() { + _pendingTimeouts.forEach(clearTimeout); + _pendingTimeouts = []; +} + +function playback(events) { + _pendingTimeouts = []; + let delay = 0; + + for (const event of events) { + switch (event.type) { + case "boutStart": + _pendingTimeouts.push( + setTimeout(() => emit("boutStart", event), delay), + ); + delay += BOUT_DELAY; + break; + case "attack": + _pendingTimeouts.push(setTimeout(() => emit("attack", event), delay)); + delay += ATTACK_DELAY; + break; + case "special": + _pendingTimeouts.push(setTimeout(() => emit("special", event), delay)); + delay += SPECIAL_DELAY; + break; + case "boutEnd": + _pendingTimeouts.push(setTimeout(() => emit("boutEnd", event), delay)); + delay += BOUT_DELAY; + break; + case "boutPause": + delay += BOUT_DELAY; + break; + case "tournamentEnd": + _pendingTimeouts.push( + setTimeout(() => emit("tournamentEnd", event), delay), + ); + break; + } + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/ability.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/ability.js new file mode 100644 index 00000000..3aafe1c8 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/ability.js @@ -0,0 +1,321 @@ +/** + * ability.js — three base ability types students extend to write their own. + * + * ## How abilities work + * After every normal attack, the arena engine calls `ability.tryActivate()`. + * If the roll succeeds and charges remain, it calls `activate()` to get the + * effect amount, applies it via `_applyEffect()`, then calls `describe()` to + * produce the battle log entry. + * + * You only need to override two methods: + * - `activate(attacker, opponent)` — return the effect amount for this turn. + * - `describe(attacker, amount)` — return the battle log string. + * + * ## Trigger chance and the budget rule + * Each ability type has a fixed budget. Trigger chance is derived automatically: + * + * triggerChance = (budget × chargeMultiplier) / amount + * + * A higher `amount` means a stronger hit but a rarer trigger — the trade-off + * is built in. You never set triggerChance directly. + * + * ## Charges and the budget + * Charges are part of the budget. A limited-charge ability can fire at most N times + * per bout, so each trigger is worth more — the budget scales up to compensate. + * The multiplier is based on a reference of 5 expected triggers per bout (what an + * unlimited ability would fire in a typical fight): + * + * chargeMultiplier = 5 / min(charges, 5) + * + * | charges | multiplier | DamageAbility budget | + * |------------|------------|----------------------| + * | ∞ (or ≥ 5) | ×1.0 | 15 | + * | 3 | ×1.67 | 25 | + * | 2 | ×2.5 | 37.5 | + * | 1 | ×5.0 | 75 | + * + * A single-charge DamageAbility with amount ≤ 75 is guaranteed to fire (100%). + * A 2-charge HealAbility at amount 30 now has 75% trigger chance instead of 40%. + * + * | Type | Budget | amount 10 | amount 20 | amount 30 | + * |---------------|--------|-----------|-----------|-----------| + * | DamageAbility | 15 | 100% | 75% | 50% | + * | HealAbility | 12 | 100% | 60% | 40% | + * | ArmorAbility | 8 | 80% | 40% | 27% | + * (table above shows unlimited / ≥ 5 charges; finite charges raise all percentages) + * + * ## Charges (optional) + * Pass a second argument to limit how many times the ability can fire per bout. + * Omit it (or pass `Infinity`) for unlimited uses. + * + * ```js + * new DamageAbility(40, 2) // 2 charges → budget ×2.5 → 93% trigger chance + * new DamageAbility(40) // unlimited → budget ×1 → 37% trigger chance + * new HealAbility(20) // unlimited uses, 60% trigger + * ``` + * + * ## Dynamic amount + * `activate()` can return a different amount each turn based on game state. + * Trigger chance is recalculated live from whatever value you return. + * + * ```js + * activate(attacker, opponent) { + * // grows stronger the more hits the attacker has taken + * return this.amount + attacker.hitsTaken * 5; + * } + * ``` + * + * ## Quick-start example + * ```js + * import { DamageAbility } from '../core/ability.js'; + * + * class VenomStrike extends DamageAbility { + * activate(attacker, opponent) { + * return 25; // fixed 25 damage → triggerChance = 15/25 = 60% + * } + * describe(attacker, amount) { + * return `${attacker.name} injects venom for ${amount} damage!`; + * } + * } + * ``` + */ + +export class Ability { + /** + * @param {number} amount + * The base effect amount (damage dealt, HP healed, or attack reduced). + * Must be a positive integer. Controls trigger chance: higher = rarer. + * @param {number} [charges=Infinity] + * Maximum number of times this ability can fire per bout. + * Use a positive integer to limit uses; omit for unlimited. + */ + constructor(amount, charges = Infinity) { + if (!Number.isInteger(amount) || amount < 1) + throw new Error( + `[Ability] amount must be an integer ≥ 1. Got: ${amount}`, + ); + if (charges !== Infinity && (!Number.isInteger(charges) || charges < 1)) + throw new Error( + `[Ability] charges must be a positive integer. Got: ${charges}`, + ); + + /** Base effect amount. Readable in `activate()` as `this.amount`. */ + this.amount = amount; + /** Maximum charges per bout (`Infinity` = unlimited). */ + this.chargesMax = charges; + /** Charges remaining this bout. Decrements on each successful trigger. */ + this.chargesLeft = charges; + } + + /** @protected Budget constant — overridden by each concrete subclass. */ + get _budget() { + return 15; + } + + /** + * Budget multiplier derived from charge count. + * + * Limited-charge abilities fire fewer times per bout, so each trigger is + * worth more. The multiplier scales the budget up to compensate, using 5 + * expected triggers as the reference for an unlimited ability: + * + * chargeMultiplier = 5 / min(charges, 5) + * + * Abilities with ≥ 5 charges (or ∞) receive no bonus (multiplier = 1). + * + * @protected + */ + get _chargeMultiplier() { + const reference = 5; + const effective = + this.chargesMax === Infinity + ? reference + : Math.min(this.chargesMax, reference); + return reference / effective; + } + + /** + * Probability that this ability fires on any given turn (0–1). + * Derived automatically from the budget, charge multiplier, and the amount + * returned by `activate()`. You never set this directly. + */ + get triggerChance() { + return Math.min(1, (this._budget * this._chargeMultiplier) / this.amount); + } + + /** + * Override — return the effect amount to apply this turn. + * + * The engine calls this before the trigger roll so it can recalculate + * the chance from whatever value you return. Return a higher value for + * a stronger but rarer trigger; return a lower value for a weaker but + * more frequent one. + * + * You have full access to both monsters' state here. + * + * @param {Monster} attacker The monster using this ability. + * @param {Monster} opponent The monster being targeted. + * @returns {number} A positive integer — the effect amount for this turn. + * + * @example + * // Scales with hits taken — gets stronger (and rarer) as the fight goes on + * activate(attacker, opponent) { + * return this.amount + attacker.hitsTaken * 4; + * } + */ + activate(attacker, opponent) { + return this.amount; + } + + /** + * Override — return the battle log string shown when the ability fires. + * + * Called only after the trigger roll succeeds and the effect has been applied. + * The `amount` parameter is the exact value returned by `activate()` this turn, + * so your message can reflect dynamic values. + * + * @param {Monster} attacker The monster that used the ability. + * @param {number} amount The effect amount applied this turn. + * @returns {string} A short, flavourful description for the battle log. + * + * @example + * describe(attacker, amount) { + * const fury = attacker.hitsTaken >= 3 ? ' ENRAGED' : ''; + * return `${attacker.name}${fury} strikes for ${amount} bonus damage!`; + * } + */ + describe(attacker, amount) { + return null; + } + + /** @protected Applies the effect. Overridden by each concrete subclass. */ + _applyEffect(attacker, opponent, amount) {} + + /** + * Called by the engine after every attack. Handles the trigger roll, + * charge tracking, and effect application. Do not call or override this. + * + * @param {Monster} attacker + * @param {Monster} opponent + * @returns {string|null} The battle log string, or null if the ability did not fire. + */ + tryActivate(attacker, opponent) { + if (this.chargesLeft <= 0) return null; + + const amount = this.activate(attacker, opponent); + if (!Number.isInteger(amount) || amount < 1) + throw new Error( + `[Ability] activate() must return an integer ≥ 1. Got: ${amount}`, + ); + + // triggerChance × amount = budget × chargeMultiplier (always) + const chance = Math.min( + 1, + (this._budget * this._chargeMultiplier) / amount, + ); + if (Math.random() > chance) return null; + + if (this.chargesMax !== Infinity) this.chargesLeft--; + this._applyEffect(attacker, opponent, amount); + return this.describe(attacker, amount); + } + + /** + * Resets `chargesLeft` to `chargesMax`. Called automatically by + * `Monster.reset()` between bouts — you do not need to call this yourself + * unless you have swapped abilities (see Monster.reset() docs). + */ + reset() { + this.chargesLeft = this.chargesMax; + } +} + +// ── Concrete base types ─────────────────────────────────────────────────────── +// +// Extend one of these three. Override activate() and describe(). +// The _budget and _applyEffect() are already set correctly for each type. + +/** + * Deals bonus damage to the opponent. + * + * Budget: 15 + * Default describe: "[Name] deals N bonus damage!" + * + * @example + * class FireBlast extends DamageAbility { + * activate(attacker, opponent) { return 40; } // 40 dmg → 37% trigger + * describe(attacker, amount) { return `${attacker.name} blasts for ${amount}!`; } + * } + */ +export class DamageAbility extends Ability { + get _budget() { + return 15; + } + _applyEffect(attacker, opponent, amount) { + opponent.takeDamage(amount); + } + describe(attacker, amount) { + const note = + this.chargesMax !== Infinity ? ` (${this.chargesLeft} charges left)` : ""; + return `${attacker.name} deals ${amount} bonus damage${note}!`; + } +} + +/** + * Heals the attacker (self-heal). + * + * Budget: 12 + * Default describe: "[Name] heals N HP!" + * + * Healing cannot exceed max HP — HealthComponent clamps automatically. + * + * @example + * class Regenerate extends HealAbility { + * activate(attacker, opponent) { return 20; } // 20 HP → 60% trigger + * describe(attacker, amount) { return `${attacker.name} regenerates ${amount} HP.`; } + * } + */ +export class HealAbility extends Ability { + get _budget() { + return 12; + } + _applyEffect(attacker, opponent, amount) { + attacker.hp.heal(amount); + } + describe(attacker, amount) { + const note = + this.chargesMax !== Infinity ? ` (${this.chargesLeft} charges left)` : ""; + return `${attacker.name} heals ${amount} HP${note}!`; + } +} + +/** + * Reduces the opponent's `attackPower` for the remainder of the bout. + * + * Budget: 8 + * Default describe: "[Name] reduces opponent's attack by N!" + * + * `attackPower` is clamped to a minimum of 1 so the opponent can always deal + * at least 1 damage. The debuff is automatically reversed at the start of + * the next bout when `Monster.reset()` restores the original `attackPower`. + * + * @example + * class Weaken extends ArmorAbility { + * activate(attacker, opponent) { return 12; } // -12 atk → 67% trigger + * describe(attacker, amount) { return `${attacker.name} weakens the foe by ${amount}!`; } + * } + */ +export class ArmorAbility extends Ability { + get _budget() { + return 8; + } + _applyEffect(attacker, opponent, amount) { + // Monster.reset() restores attackPower to its initial value between bouts. + opponent.attackPower = Math.max(1, opponent.attackPower - amount); + } + describe(attacker, amount) { + const note = + this.chargesMax !== Infinity ? ` (${this.chargesLeft} charges left)` : ""; + return `${attacker.name} reduces opponent's attack by ${amount}${note}!`; + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/health.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/health.js new file mode 100644 index 00000000..85357ef1 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/health.js @@ -0,0 +1,45 @@ +// health.js — manages a monster's hit points. +// Example of COMPOSITION: Monster delegates all HP logic to this object. + +export class HealthComponent { + /** @param {number} maxHealth */ + constructor(maxHealth) { + if (typeof maxHealth !== "number" || maxHealth < 0) + throw new Error( + `HealthComponent: maxHealth must be a non-negative number, got ${maxHealth}`, + ); + this._max = maxHealth; + this._current = maxHealth; + } + + get current() { + return this._current; + } + get max() { + return this._max; + } + + /** HP as a percentage 0–100 (used by the UI to set health bar widths). */ + get percentage() { + if (this._max === 0) return 0; + return Math.round((this._current / this._max) * 100); + } + + /** @param {number} amount */ + takeDamage(amount) { + this._current = Math.max(0, this._current - amount); + } + + /** @param {number} amount */ + heal(amount) { + this._current = Math.min(this._max, this._current + amount); + } + + isAlive() { + return this._current > 0; + } + + reset() { + this._current = this._max; + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/monster.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/monster.js new file mode 100644 index 00000000..4da3e5d2 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/core/monster.js @@ -0,0 +1,203 @@ +/** + * monster.js — base class every monster extends. + * + * ## Architecture + * Monster uses two OOP patterns working together: + * + * - **Inheritance** — your monster class extends Monster and can override + * `onTakeDamage()`, `reset()`, and `imagePath`. + * - **Composition** — HP is delegated to a HealthComponent (`this.hp`). + * Monster never touches HP directly; it calls `this.hp.heal()`, + * `this.hp.takeDamage()`, etc. + * + * ## Stat budget + * Every monster must satisfy: + * + * health + attackPower × 3 ≤ 300 + * + * This keeps fights balanced regardless of stat distribution. + * A monster can be tanky (high HP, low attack) or a glass cannon + * (low HP, high attack) — the formula normalises both. + * + * ## Ability system + * Pass a DamageAbility, HealAbility, or ArmorAbility to the constructor. + * The engine calls `ability.tryActivate(this, opponent)` after every attack. + * You do not need to call it yourself. + * + * ## Lifecycle + * Each tournament bout resets all monsters to full HP via `reset()`. + * If you store extra state (counters, swapped abilities), override `reset()` + * and call `super.reset()` first. + * + * ## Quick-start example + * ```js + * import { Monster } from '../core/monster.js'; + * import { DamageAbility } from '../core/ability.js'; + * + * class FireSurge extends DamageAbility { + * activate(attacker, opponent) { return 30; } + * describe(attacker, amount) { return `${attacker.name} surges for ${amount}!`; } + * } + * + * export class Phoenix extends Monster { + * constructor() { + * // STAT BUDGET: 150 + 50 × 3 = 300 ✓ (max 300) + * super('Phoenix', 150, 50, new FireSurge(30)); + * } + * } + * ``` + */ + +import { HealthComponent } from "./health.js"; +import { Ability } from "./ability.js"; + +export class Monster { + static _nextId = 0; + /** + * @param {string} name Display name shown in the arena UI. + * @param {number} health Starting HP. Must be ≥ 10. + * @param {number} attackPower Base damage per normal attack. Must be ≥ 1. + * @param {Ability|null} ability + * One of DamageAbility, HealAbility, or ArmorAbility — or null for no ability. + * + * @throws If any stat is out of range or the budget is exceeded. + * + * Stat budget: health + attackPower × 3 ≤ 300 + */ + constructor(name, health, attackPower, ability = null) { + if (attackPower < 1) + throw new Error(`[Monster] "${name}": attackPower must be ≥ 1`); + if (health < 10) + throw new Error(`[Monster] "${name}": health must be ≥ 10`); + + const score = health + attackPower * 3; + if (score > 300) { + throw new Error( + `[Monster] "${name}" exceeds the stat budget!\n` + + ` Score: ${health} HP + ${attackPower} attack × 3 = ${score} (max 300)\n` + + ` Reduce your stats by ${score - 300} point(s).\n` + + ` Tip: each attack point costs 3 budget points; each HP costs 1.`, + ); + } + + if (ability !== null && !(ability instanceof Ability)) + throw new Error( + `[Monster] "${name}": ability must be a DamageAbility, HealAbility, or ArmorAbility instance`, + ); + + this.id = `monster-${Monster._nextId++}`; + this.name = name; + this.attackPower = attackPower; + this._initialAttackPower = attackPower; + this.ability = ability; + this._initialAbility = ability; + + // COMPOSITION — HP is managed by HealthComponent, not by Monster directly. + this.hp = new HealthComponent(health); + } + + /** Current HP. Shorthand for `this.hp.current`. */ + get health() { + return this.hp.current; + } + + /** Returns true while HP > 0. */ + isAlive() { + return this.hp.isAlive(); + } + + takeDamage(amount) { + this.hp.takeDamage(amount); + this.onTakeDamage(amount); + } + + /** + * Hook called every time this monster receives damage. + * + * Override to react to damage: track hit counters, swap abilities, + * trigger rage modes, etc. Do **not** modify `attackPower` here — + * use the `activate()` return value or swap the ability instead. + * + * The ability can read any state you set here via the `attacker` + * parameter in `activate(attacker, opponent)`. + * + * If you swap `this.ability` inside this hook, also override `reset()` + * to reset the swapped ability's charges. + * + * @param {number} amount Damage just received (after variance, before HP clamp). + * + * @example + * // Track how many times this monster has been hit + * onTakeDamage(amount) { + * this.hitsTaken++; + * if (this.hitsTaken >= 5) this.ability = this._rageAbility; + * } + */ + // eslint-disable-next-line no-unused-vars + onTakeDamage(amount) {} + + /** + * Deals `attackPower` damage to `opponent` (±15% variance, minimum 1), + * then gives the ability a chance to trigger. + * + * You do not need to call or override this method. The arena engine + * calls it automatically each turn. + * + * @param {Monster} opponent + * @returns {{ damage: number, special: string|null }} + * `damage` — actual HP removed from the opponent this turn. + * `special` — the ability's description string, or null if it did not fire. + */ + attack(opponent) { + const actualDamage = Math.max( + 1, + Math.round(this.attackPower * (0.85 + Math.random() * 0.3)), + ); + opponent.takeDamage(actualDamage); + const usedSpecial = this.ability + ? this.ability.tryActivate(this, opponent) + : null; + return { damage: actualDamage, special: usedSpecial }; + } + + /** + * Restores this monster to its initial state for the next bout. + * + * The arena engine calls this automatically between bouts — you do not + * need to call it yourself. + * + * Override if you store extra state (counters, swapped abilities, etc.). + * Always call `super.reset()` first, then reset your own fields. + * + * Base reset restores: HP to max, `attackPower` to initial value, + * `this.ability` to the original instance, and its charge count. + * + * @example + * reset() { + * super.reset(); // restores HP, attackPower, ability + charges + * this._rageAbility.reset(); // reset any swapped abilities too + * this.hitsTaken = 0; // reset your own counters + * } + */ + reset() { + this.hp.reset(); + this.attackPower = this._initialAttackPower; + this.ability = this._initialAbility; + if (this.ability) this.ability.reset(); + } + + /** + * Path to the monster's image displayed in the arena UI. + * + * Defaults to `assets/monsters/.png`. + * Override to use a different path or file format (e.g. SVG). + * + * @example + * get imagePath() { + * return 'assets/monsters/MyMonster.svg'; + * } + */ + get imagePath() { + return `assets/monsters/${this.constructor.name}.png`; + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/main.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/main.js new file mode 100644 index 00000000..8c9e342d --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/main.js @@ -0,0 +1,40 @@ +// index.js +// +// Entry point — import all monster classes and kick off the tournament. +// To add your monster: import it here and add an instance to the array below. +// Pattern: import { ClassName } from './monsters/ClassName.js'; + +import { Dragon } from "./monsters/Dragon.js"; +import { Goblin } from "./monsters/Goblin.js"; +import { Troll } from "./monsters/Troll.js"; + +import { tournament, cancelTournament, monteCarlo } from "./arena.js"; +import "./ui.js"; // registers all DOM event listeners +import "./style.css"; + +// Add a new instance here for each monster you want in the tournament. +const monsters = [ + new Dragon(), + new Goblin(), + new Troll(), + // new YourMonster(), +]; + +// Populate the start screen roster, then run Monte Carlo in the background. +document.dispatchEvent( + new CustomEvent("arena:roster", { + detail: monsters.map((m) => ({ id: m.id, name: m.name })), + }), +); + +setTimeout(() => { + const results = monteCarlo(monsters, 1000); + document.dispatchEvent( + new CustomEvent("arena:montecarlo", { detail: results }), + ); +}, 0); + +window.startTournament = () => { + cancelTournament(); + tournament(monsters); +}; diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Dragon.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Dragon.js new file mode 100644 index 00000000..aa1c6088 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Dragon.js @@ -0,0 +1,55 @@ +// monsters/dragon.js +// +// ── REFERENCE EXAMPLE — read this, then write your own in monsters/your-monster.js ── +// +// What to notice: +// 1. Two classes in one file: an Ability subclass + a Monster subclass +// 2. DragonBreath extends DamageAbility (INHERITANCE on the ability side) +// 3. Dragon extends Monster (INHERITANCE on the monster side) +// 4. Dragon HAS-A DragonBreath (COMPOSITION) +// 5. DragonBreath is injected, not created inside Monster (DEPENDENCY INJECTION) +// 6. activate() returns more when enraged — triggerChance drops automatically +// 7. onTakeDamage() tracks Monster state; activate() reads it via `attacker` + +import { Monster } from "../core/monster.js"; +import { DamageAbility } from "../core/ability.js"; + +class DragonBreath extends DamageAbility { + activate(attacker, opponent) { + return attacker.hitsTaken >= 3 + ? Math.ceil(this.amount * 1.5) // enraged: bigger hit, rarer trigger + : this.amount; + } + + describe(attacker, amount) { + const tag = attacker.hitsTaken >= 3 ? " 💢 ENRAGED" : ""; + const note = + this.chargesMax !== Infinity ? ` (${this.chargesLeft} charges left)` : ""; + return `🔥 ${attacker.name}${tag} breathes fire for ${amount} bonus damage${note}!`; + } +} + +export class Dragon extends Monster { + constructor() { + // DragonBreath(35, 3): base amount 35, 3 charges → chargeMultiplier = 5/3 ≈ 1.67 + // Normal triggerChance = (15 × 1.67) / 35 = 71% + // Enraged triggerChance = (15 × 1.67) / 53 = 47% (Math.ceil(35 × 1.5) = 53) + // + // STAT BUDGET: 160 + 30 × 3 = 250 ✓ (max 300) + super("Dragon", 160, 30, new DragonBreath(35, 3)); + this.hitsTaken = 0; + } + + onTakeDamage(amount) { + this.hitsTaken++; + } + + reset() { + super.reset(); + this.hitsTaken = 0; + } + + get imagePath() { + return "assets/monsters/Dragon.svg"; + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Goblin.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Goblin.js new file mode 100644 index 00000000..ad43d330 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Goblin.js @@ -0,0 +1,45 @@ +// monsters/Goblin.js — example monster +// +// The Goblin is a glass cannon: low HP, high attack. +// Its ability tracks hits received and grows more dangerous over time. +// After 4 hits it swaps to a debuff ability to cripple the opponent's attack. + +import { Monster } from "../core/monster.js"; +import { DamageAbility, ArmorAbility } from "../core/ability.js"; + +class GoblinStab extends DamageAbility { + activate(attacker, _opponent) { + // each hit received adds 4 to the next stab — trigger chance drops accordingly + return this.amount + attacker.hitsTaken * 4; + } + + describe(attacker, amount) { + return `${attacker.name} stabs for ${amount} bonus damage! (${attacker.hitsTaken} hits taken)`; + } +} + +export class Goblin extends Monster { + constructor() { + // STAT BUDGET: 70 + 70 × 3 = 280 ✓ (max 300) + super("Goblin", 70, 70, new GoblinStab(10)); + this.hitsTaken = 0; + this._debuff = new ArmorAbility(12, 2); // 2-charge debuff, unlocked after 4 hits + } + + onTakeDamage(_amount) { + this.hitsTaken++; + if (this.hitsTaken === 4) { + this.ability = this._debuff; + } + } + + reset() { + super.reset(); + this.hitsTaken = 0; + this._debuff.reset(); + } + + get imagePath() { + return "assets/monsters/Goblin.svg"; + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Troll.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Troll.js new file mode 100644 index 00000000..83465c5c --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/Troll.js @@ -0,0 +1,32 @@ +// monsters/Troll.js — example monster +// +// The Troll regenerates steadily but hits weakly. +// When cornered (HP < 40), it panics and switches to a big heal. + +import { Monster } from "../core/monster.js"; +import { HealAbility } from "../core/ability.js"; + +class TrollRegen extends HealAbility { + activate(attacker, _opponent) { + // panic heal when low — higher amount means rarer trigger (24% vs 80%) + return attacker.hp.current < 65 ? 50 : 15; + } + + describe(attacker, amount) { + const panic = attacker.hp.current < 65; + return panic + ? `${attacker.name} desperately regenerates ${amount} HP!` + : `${attacker.name} slowly regenerates ${amount} HP.`; + } +} + +export class Troll extends Monster { + constructor() { + // STAT BUDGET: 210 + 30 × 3 = 300 ✓ (max 300) + super("Troll", 210, 30, new TrollRegen(15)); + } + + get imagePath() { + return "assets/monsters/Troll.svg"; + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/your-monster.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/your-monster.js new file mode 100644 index 00000000..497292c8 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/monsters/your-monster.js @@ -0,0 +1,45 @@ +// monsters/your-monster.js +// see dragon.js for a reference example + +import { Monster } from "../core/monster.js"; +import { DamageAbility, HealAbility, ArmorAbility } from "../core/ability.js"; + +// ── Step 1: write your ability ──────────────────────────────────────────────── +// Extend one of the three base types. Override activate() and describe(). +// +// triggerChance = budget / amount (higher amount = rarer trigger) +// DamageAbility budget: 15 HealAbility budget: 12 ArmorAbility budget: 8 + +class MyAbility extends DamageAbility { + // swap DamageAbility → HealAbility or ArmorAbility if you want a different effect + activate(attacker, opponent) { + return this.amount; + } + + describe(attacker, amount) { + return `${attacker.name} hits for ${amount} bonus damage!`; + } +} + +// ── Step 2: write your monster ──────────────────────────────────────────────── + +export class YourMonster extends Monster { + // rename class + file to your monster's name (case-sensitive!) + constructor() { + // STAT BUDGET: health + attackPower * 3 must be ≤ 300 + super("YourMonster", 100, 15, new MyAbility(20)); + // pre-create extra abilities here if you want to swap in onTakeDamage: + // this._secondAbility = new HealAbility(15); + } + + // onTakeDamage(amount) { + // this.hitsTaken++; // track state, read in activate() + // // this.ability = this._secondAbility; // swap ability + // } + + // reset() { + // super.reset(); // restores original ability + charges + // this._secondAbility.reset(); // reset swapped ability charges too + // this.hitsTaken = 0; + // } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/style.css b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/style.css new file mode 100644 index 00000000..41f7f342 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/style.css @@ -0,0 +1,718 @@ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +:root { + --bg: #10101f; + --surface: #1a1a30; + --accent: #ff00ff; + --cyan: #00ffff; + --neon-left: #00ffff; + --neon-right: #ff00ff; + --green: #39ff14; + --yellow: #ffd700; + --red: #ff2020; + --text: #e8e8f0; + --muted: #8899aa; + --radius: 4px; + --font-pixel: "Press Start 2P", monospace; + --font-mono: "Courier New", Courier, monospace; + --glow-cyan: 0 0 12px #00ffff, 0 0 30px rgba(0, 255, 255, 0.4); + --glow-accent: 0 0 12px #ff00ff, 0 0 30px rgba(255, 0, 255, 0.4); +} + +[hidden] { + display: none !important; +} + +body { + background: var(--bg); + color: var(--text); + font-family: var(--font-mono); + min-height: 100vh; + display: flex; + flex-direction: column; + position: relative; +} + +header { + text-align: center; + padding: 1.5rem 1rem 0.5rem; + border-bottom: 1px solid rgba(0, 255, 255, 0.15); +} +header h1 { + font-family: var(--font-pixel); + font-size: 1.6rem; + color: var(--cyan); + letter-spacing: 3px; + text-shadow: + 0 0 8px var(--cyan), + 0 0 20px rgba(0, 255, 255, 0.6), + 0 0 40px rgba(0, 255, 255, 0.3); +} +#bout-label { + font-family: var(--font-pixel); + font-size: 0.65rem; + color: var(--accent); + margin-top: 0.5rem; + letter-spacing: 1px; + text-shadow: 0 0 6px var(--accent); +} + +/* ── Arena layout ── */ +.arena { + display: grid; + grid-template-columns: 1fr 320px 1fr; + gap: 1rem; + flex: 1; + padding: 1.5rem; + align-items: center; + position: relative; +} + +/* ── VS overlay ── */ +#vs-overlay { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; + z-index: 50; + opacity: 0; + background: rgba(0, 0, 0, 0.65); +} +#vs-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.6rem; + text-align: center; +} +#vs-name-left { + font-family: var(--font-pixel); + font-size: 1.6rem; + color: var(--neon-left); + letter-spacing: 0.1em; + text-shadow: + 0 0 12px var(--neon-left), + 0 0 30px rgba(0, 255, 255, 0.5); +} +#vs-text { + font-family: var(--font-pixel); + font-size: 3rem; + color: var(--cyan); + letter-spacing: 0.2em; + text-shadow: + 0 0 20px var(--cyan), + 0 0 60px rgba(0, 255, 255, 0.6), + 4px 4px 0 var(--accent); +} +#vs-name-right { + font-family: var(--font-pixel); + font-size: 1.6rem; + color: var(--neon-right); + letter-spacing: 0.1em; + text-shadow: + 0 0 12px var(--neon-right), + 0 0 30px rgba(255, 0, 255, 0.5); +} + +/* ── Fighter cards ── */ +.fighter { + background: var(--surface); + border-radius: var(--radius); + padding: 1.5rem; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.75rem; + transition: box-shadow 0.4s ease; + position: relative; + overflow: visible; + border: 2px solid transparent; +} +#fighter-left { + border-color: var(--neon-left); + box-shadow: 0 0 10px rgba(0, 255, 255, 0.2); +} +#fighter-right { + border-color: var(--neon-right); + box-shadow: 0 0 10px rgba(255, 0, 255, 0.2); +} + +.monster-img-wrap { + width: 180px; + height: 180px; + border-radius: var(--radius); + overflow: hidden; + background: #060610; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(255, 255, 255, 0.06); + image-rendering: pixelated; +} +.monster-img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.monster-name { + font-family: var(--font-pixel); + font-size: 0.8rem; + font-weight: 400; + letter-spacing: 1px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 100%; +} + +.health-bar-wrap { + width: 100%; + height: 16px; + background: #111; + border-radius: 2px; + overflow: hidden; + border: 1px solid #333; +} +.health-bar { + height: 100%; + width: 100%; + background: var(--green); + border-radius: 0; + transform-origin: left center; + /* GSAP controls width — do not add transform to transition */ + transition: background 0.3s; +} +.hp-label { + font-family: var(--font-pixel); + font-size: 0.6rem; + color: var(--muted); + letter-spacing: 1px; +} + +@keyframes low-hp-pulse { + 0%, + 100% { + box-shadow: 0 0 6px rgba(255, 32, 32, 0.4); + } + 50% { + box-shadow: + 0 0 20px rgba(255, 32, 32, 0.9), + 0 0 40px rgba(255, 32, 32, 0.4); + } +} +.fighter.low-hp { + animation: low-hp-pulse 0.8s ease-in-out infinite; +} + +/* ── Battle log ── */ +.log-wrap { + background: var(--surface); + border-radius: var(--radius); + padding: 1rem; + height: 650px; + overflow-y: auto; + scroll-behavior: smooth; + border: 1px solid rgba(0, 255, 255, 0.1); +} +.log { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.4rem; +} +.log li { + font-size: 0.85rem; + padding: 0.3rem 0.5rem; + border-radius: 3px; + animation: fadein 0.3s ease; + border-left: 2px solid transparent; +} +.log li.attack { + background: rgba(0, 255, 255, 0.04); + border-left-color: var(--cyan); +} +.log li.special { + background: rgba(255, 0, 255, 0.08); + border-left-color: var(--accent); + color: #ff88ff; +} +.log li.bout { + background: rgba(57, 255, 20, 0.07); + border-left-color: var(--green); + color: #a0ff80; +} +.log li.divider { + color: var(--muted); + text-align: center; + font-size: 0.72rem; + border-top: 1px solid rgba(255, 255, 255, 0.08); + padding-top: 0.5rem; + border-left: none; +} + +@keyframes fadein { + from { + opacity: 0; + transform: translateY(4px); + } + to { + opacity: 1; + transform: none; + } +} + +/* ── CRT scanlines ── */ +body::after { + content: ""; + position: fixed; + inset: 0; + background: repeating-linear-gradient( + to bottom, + transparent 0px, + transparent 2px, + rgba(0, 0, 0, 0.1) 2px, + rgba(0, 0, 0, 0.1) 4px + ); + pointer-events: none; + z-index: 9999; +} + +/* ── Leaderboard overlay ── */ +.leaderboard-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 10, 0.92); + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + pointer-events: none; + z-index: 300; +} +.leaderboard-overlay.visible { + opacity: 1; + pointer-events: auto; +} +.leaderboard-card { + background: var(--surface); + border: 2px solid var(--cyan); + border-radius: var(--radius); + padding: 2.5rem 3rem; + min-width: 360px; + text-align: center; + box-shadow: var(--glow-cyan); +} +.leaderboard-card h2 { + font-family: var(--font-pixel); + font-size: 1rem; + color: var(--cyan); + margin-bottom: 1.5rem; + letter-spacing: 2px; + text-shadow: 0 0 10px var(--cyan); +} +#leaderboard-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.6rem; +} +#leaderboard-list li { + display: flex; + justify-content: space-between; + font-family: var(--font-pixel); + font-size: 0.65rem; + letter-spacing: 1px; + padding: 0.5rem 0.75rem; + background: rgba(0, 255, 255, 0.05); + border: 1px solid rgba(0, 255, 255, 0.15); + border-radius: 2px; +} +#leaderboard-list li:first-child { + color: gold; +} +#leaderboard-list li:nth-child(2) { + color: silver; +} +#leaderboard-list li:nth-child(3) { + color: #cd7f32; +} + +#header-restart-btn { + font-family: var(--font-pixel); + font-size: 0.5rem; + color: var(--bg); + background: var(--accent); + border: none; + border-radius: var(--radius); + padding: 0.5rem 1rem; + margin-top: 0.75rem; + cursor: pointer; + letter-spacing: 1px; + box-shadow: 0 0 10px rgba(255, 0, 255, 0.4); + transition: + background 0.15s, + box-shadow 0.15s; +} +#header-restart-btn:hover { + background: #fff; + box-shadow: 0 0 18px rgba(255, 0, 255, 0.8); +} + +#restart-btn { + font-family: var(--font-pixel); + font-size: 0.6rem; + color: var(--bg); + background: var(--cyan); + border: none; + border-radius: var(--radius); + padding: 0.75rem 1.5rem; + margin-top: 1.5rem; + cursor: pointer; + letter-spacing: 1px; + box-shadow: 0 0 12px rgba(0, 255, 255, 0.5); + transition: + background 0.15s, + box-shadow 0.15s; +} +#restart-btn:hover { + background: #fff; + box-shadow: 0 0 20px rgba(0, 255, 255, 0.8); +} + +/* ── Floating damage numbers ── */ +.damage-number { + position: absolute; + font-family: var(--font-pixel); + font-size: 1.2rem; + pointer-events: none; + z-index: 60; + text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.8); +} +.damage-number.normal { + color: #fff; +} +.damage-number.special { + color: var(--accent); + font-size: 1.5rem; +} +.damage-number.crit { + color: var(--yellow); + font-size: 1.8rem; +} + +/* ── Start screen ── */ +#start-screen { + position: fixed; + inset: 0; + background: var(--bg); + display: flex; + align-items: center; + justify-content: center; + z-index: 200; +} +#start-card { + display: flex; + flex-direction: column; + align-items: center; + gap: 1.5rem; + text-align: center; +} +#start-subtitle { + font-family: var(--font-pixel); + font-size: 0.55rem; + color: var(--muted); + letter-spacing: 3px; + text-transform: uppercase; +} +#start-title { + font-family: var(--font-pixel); + font-size: 2.8rem; + line-height: 1.4; + color: var(--cyan); + text-shadow: + 0 0 12px var(--cyan), + 0 0 40px rgba(0, 255, 255, 0.5), + 4px 4px 0 var(--accent); +} +#start-roster { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.5rem; +} +#start-roster li { + font-family: var(--font-pixel); + font-size: 0.55rem; + color: var(--text); + letter-spacing: 1px; + padding: 0.4rem 1rem; + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: var(--radius); + background: rgba(255, 255, 255, 0.03); +} +#start-roster li::before { + content: "▶ "; + color: var(--accent); +} + +#montecarlo-panel { + display: flex; + flex-direction: column; + gap: 0.5rem; + width: 100%; + margin-top: 1.25rem; + padding-top: 1.25rem; + border-top: 1px solid rgba(0, 255, 255, 0.15); +} + +#montecarlo-label { + font-family: var(--font-pixel); + font-size: 0.45rem; + color: var(--muted); + letter-spacing: 2px; + text-transform: uppercase; + text-align: center; + margin-bottom: 0.25rem; +} + +#montecarlo-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.6rem; +} + +#montecarlo-list li { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.mc-name-row { + display: flex; + justify-content: space-between; + align-items: baseline; +} + +.mc-name { + font-family: var(--font-pixel); + font-size: 0.5rem; + color: var(--text); + letter-spacing: 1px; +} + +.mc-pct { + font-family: var(--font-pixel); + font-size: 0.5rem; + color: var(--cyan); +} + +.mc-bar-track { + width: 100%; + height: 6px; + background: rgba(255, 255, 255, 0.08); + border-radius: 2px; + overflow: hidden; +} + +.mc-bar-fill { + height: 100%; + border-radius: 2px; + background: var(--cyan); + transition: width 0.6s ease; +} + +.mc-bar-fill.rank-1 { + background: gold; +} +.mc-bar-fill.rank-2 { + background: silver; +} +.mc-bar-fill.rank-3 { + background: #cd7f32; +} +#start-btn { + font-family: var(--font-pixel); + font-size: 0.65rem; + color: var(--bg); + background: var(--cyan); + border: none; + border-radius: var(--radius); + padding: 0.9rem 2rem; + cursor: pointer; + letter-spacing: 2px; + box-shadow: 0 0 14px rgba(0, 255, 255, 0.5); + animation: press-start-blink 1.2s step-end infinite; +} +#start-btn:hover { + background: #fff; + box-shadow: 0 0 24px rgba(0, 255, 255, 0.9); + animation: none; +} +@keyframes press-start-blink { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0; + } +} + +/* ── Bout result overlays ── */ +.bout-result-badge { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-family: var(--font-pixel); + font-size: 0.9rem; + letter-spacing: 3px; + pointer-events: none; + z-index: 10; + text-align: center; + white-space: nowrap; +} +.bout-result-badge.winner { + color: #fff; + text-shadow: + 0 0 10px currentColor, + 0 0 30px currentColor, + 2px 2px 0 rgba(0, 0, 0, 0.8); +} +#fighter-left .bout-result-badge.winner { + color: var(--neon-left); +} +#fighter-right .bout-result-badge.winner { + color: var(--neon-right); +} +.fighter.bout-loser { + opacity: 0.35; + filter: grayscale(80%); + transition: + opacity 0.5s ease, + filter 0.5s ease; +} + +/* ── Round Robin Matrix ── */ +#round-robin { + padding: 1.5rem; + border-top: 1px solid rgba(0, 255, 255, 0.1); +} +#rr-title { + font-family: var(--font-pixel); + font-size: 0.55rem; + color: var(--muted); + letter-spacing: 3px; + text-transform: uppercase; + text-align: center; + margin-bottom: 1rem; +} +#rr-table-wrap { + overflow-x: auto; + display: flex; + justify-content: center; +} +#rr-table { + border-collapse: separate; + border-spacing: 4px; +} +#rr-table th { + font-family: var(--font-pixel); + font-size: 0.45rem; + color: var(--muted); + letter-spacing: 1px; + padding: 0.4rem 0.6rem; + text-align: center; + white-space: nowrap; +} +#rr-table th.rr-active { + color: var(--cyan); +} +#rr-table td { + width: 54px; + height: 40px; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.07); + border-radius: 3px; + text-align: center; + vertical-align: middle; + font-family: var(--font-pixel); + font-size: 0.5rem; + letter-spacing: 1px; + transition: + background 0.3s, + color 0.3s, + box-shadow 0.3s; +} +#rr-table td.rr-self { + background: rgba(255, 255, 255, 0.02); + color: rgba(255, 255, 255, 0.15); +} +#rr-table td.rr-win { + background: rgba(57, 255, 20, 0.12); + color: var(--green); + border-color: rgba(57, 255, 20, 0.3); +} +#rr-table td.rr-loss { + background: rgba(255, 32, 32, 0.1); + color: var(--red); + border-color: rgba(255, 32, 32, 0.3); +} +#rr-table td.rr-draw { + background: rgba(255, 215, 0, 0.1); + color: var(--yellow); + border-color: rgba(255, 215, 0, 0.3); +} +@keyframes rr-active-pulse { + 0%, + 100% { + box-shadow: 0 0 6px rgba(0, 255, 255, 0.3); + border-color: rgba(0, 255, 255, 0.4); + } + 50% { + box-shadow: 0 0 14px rgba(0, 255, 255, 0.8); + border-color: rgba(0, 255, 255, 0.9); + } +} +#rr-table td.rr-active { + animation: rr-active-pulse 0.9s ease-in-out infinite; +} + +/* ── Responsive ── */ +@media (max-width: 860px) { + .arena { + grid-template-columns: 1fr; + } + .log-wrap { + height: 400px; + } +} + +@media (prefers-reduced-motion: reduce) { + .log li { + animation: none; + } + body::after { + display: none; + } + .fighter.low-hp { + animation: none; + } + #start-btn { + animation: none; + } + #rr-table td.rr-active { + animation: none; + border-color: var(--cyan); + } +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/ui.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/ui.js new file mode 100644 index 00000000..094cce07 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/src/ui.js @@ -0,0 +1,538 @@ +// ui.js — arena UI. Students do not edit this file. + +import gsap from "gsap"; + +const boutLabel = document.getElementById("bout-label"); +const imgLeft = document.getElementById("img-left"); +const imgRight = document.getElementById("img-right"); +const nameLeft = document.getElementById("name-left"); +const nameRight = document.getElementById("name-right"); +const barLeft = document.getElementById("bar-left"); +const barRight = document.getElementById("bar-right"); +const hpLeft = document.getElementById("hp-left"); +const hpRight = document.getElementById("hp-right"); +const log = document.getElementById("log"); +const leaderboard = document.getElementById("leaderboard"); +const lbList = document.getElementById("leaderboard-list"); +const fighterLeft = document.getElementById("fighter-left"); +const fighterRight = document.getElementById("fighter-right"); +const closeBtn = document.getElementById("leaderboard-close"); +const headerRestartBtn = document.getElementById("header-restart-btn"); +const startScreen = document.getElementById("start-screen"); +const startRoster = document.getElementById("start-roster"); +const rrTable = document.getElementById("rr-table"); + +const prefersReducedMotion = window.matchMedia( + "(prefers-reduced-motion: reduce)", +).matches; +const prevHp = { left: null, right: null }; + +let _rrMonsters = []; // [{ id, name }] +let _rrActivePair = null; + +function buildRRTable() { + rrTable.innerHTML = ""; + const thead = rrTable.createTHead(); + const headRow = thead.insertRow(); + headRow.insertCell(); + _rrMonsters.forEach(({ id, name }) => { + const th = document.createElement("th"); + th.textContent = name; + th.dataset.colId = id; + headRow.appendChild(th); + }); + const tbody = rrTable.createTBody(); + _rrMonsters.forEach(({ id: rowId, name: rowName }) => { + const tr = tbody.insertRow(); + const th = document.createElement("th"); + th.textContent = rowName; + th.dataset.rowId = rowId; + tr.appendChild(th); + _rrMonsters.forEach(({ id: colId }) => { + const td = tr.insertCell(); + td.dataset.rowId = rowId; + td.dataset.colId = colId; + if (rowId === colId) { + td.className = "rr-self"; + td.textContent = "—"; + } + }); + }); +} + +function updateRRCell(rowId, colId, state) { + const td = rrTable.querySelector( + `td[data-row-id="${rowId}"][data-col-id="${colId}"]`, + ); + if (!td || td.classList.contains("rr-self")) return; + td.className = `rr-${state}`; + td.textContent = + state === "active" + ? "···" + : state === "win" + ? "W" + : state === "loss" + ? "L" + : "D"; +} + +function setRRHeaderActive(aId, bId, active) { + rrTable.querySelectorAll("th").forEach((th) => { + if ( + th.dataset.rowId === aId || + th.dataset.rowId === bId || + th.dataset.colId === aId || + th.dataset.colId === bId + ) { + th.classList.toggle("rr-active", active); + } + }); +} + +function barColor(pct) { + if (pct > 60) return "#39ff14"; + if (pct > 30) return "#ffd700"; + return "#ff2020"; +} + +function updateBar(side, hp, maxHp, pct) { + const bar = side === "left" ? barLeft : barRight; + const hpEl = side === "left" ? hpLeft : hpRight; + const card = side === "left" ? fighterLeft : fighterRight; + // Kill in-flight tween so back-to-back updates start cleanly. + gsap.killTweensOf(bar, "width"); + gsap.to(bar, { + width: `${pct}%`, + backgroundColor: barColor(pct), + duration: 0.4, + ease: "power2.out", + }); + hpEl.textContent = `${hp} / ${maxHp}`; + card.classList.toggle("low-hp", pct <= 30); +} + +function addLog(text, cls) { + const li = document.createElement("li"); + li.className = cls; + li.textContent = text; + log.appendChild(li); + log.parentElement.scrollTop = log.parentElement.scrollHeight; +} + +function hitFlash(side) { + if (prefersReducedMotion) return; + const card = side === "left" ? fighterLeft : fighterRight; + gsap + .timeline() + .to(card, { + backgroundColor: "rgba(255,255,255,0.35)", + duration: 0.06, + ease: "none", + }) + .to(card, { + backgroundColor: "", + duration: 0.12, + ease: "power2.out", + clearProps: "backgroundColor", + }); +} + +function spawnDamageNumber(side, damage, isSpecial) { + if (prefersReducedMotion || !damage) return; + const card = side === "left" ? fighterLeft : fighterRight; + const el = document.createElement("div"); + el.className = `damage-number ${isSpecial ? "special" : damage > 30 ? "crit" : "normal"}`; + el.textContent = `-${damage}`; + el.setAttribute("aria-hidden", "true"); + const w = card.offsetWidth; + el.style.left = `${Math.random() * w * 0.5 + w * 0.25}px`; + el.style.top = "80px"; + card.appendChild(el); + gsap.fromTo( + el, + { opacity: 1, y: 0, scale: 1.2 }, + { + opacity: 0, + y: -55, + scale: 0.8, + duration: 0.85, + ease: "power1.out", + onComplete: () => el.remove(), + }, + ); +} + +function shakeCard(side) { + const card = side === "left" ? fighterLeft : fighterRight; + gsap.killTweensOf(card, "x"); + gsap.set(card, { x: 0 }); + gsap.fromTo( + card, + { x: -6 }, + { + x: 6, + duration: 0.08, + repeat: 3, + yoyo: true, + ease: "none", + onComplete: () => gsap.set(card, { x: 0 }), + }, + ); +} + +function glowCard(side) { + const card = side === "left" ? fighterLeft : fighterRight; + const color = side === "left" ? "0,255,255" : "255,0,255"; + gsap.killTweensOf(card, "boxShadow"); + gsap.fromTo( + card, + { boxShadow: `0 0 40px rgba(${color},1), 0 0 80px rgba(${color},0.6)` }, + { + boxShadow: `0 0 10px rgba(${color},0.2)`, + duration: 0.9, + ease: "power2.out", + }, + ); +} + +function vsFlash(aName, bName) { + if (prefersReducedMotion) return; + const overlay = document.getElementById("vs-overlay"); + const vsText = document.getElementById("vs-text"); + const nameLeft = document.getElementById("vs-name-left"); + const nameRight = document.getElementById("vs-name-right"); + nameLeft.textContent = aName; + nameRight.textContent = bName; + gsap.killTweensOf([overlay, vsText, nameLeft, nameRight]); + gsap.set(overlay, { opacity: 0 }); + gsap.set(vsText, { scale: 2.5, opacity: 0 }); + gsap.set(nameLeft, { opacity: 0, y: -10 }); + gsap.set(nameRight, { opacity: 0, y: 10 }); + gsap + .timeline() + .to(overlay, { opacity: 1, duration: 0.15 }) + .to( + vsText, + { scale: 1, opacity: 1, duration: 0.25, ease: "back.out(3)" }, + "<", + ) + .to( + nameLeft, + { opacity: 1, y: 0, duration: 0.2, ease: "power2.out" }, + "-=0.1", + ) + .to(nameRight, { opacity: 1, y: 0, duration: 0.2, ease: "power2.out" }, "<") + .to({}, { duration: 0.5 }) + .to(overlay, { opacity: 0, duration: 0.2, ease: "power2.in" }) + .to(vsText, { opacity: 0, scale: 0.8, duration: 0.2 }, "<"); +} + +function victoryPulse(winnerSide) { + if (!winnerSide) return; + const winCard = winnerSide === "left" ? fighterLeft : fighterRight; + const loseCard = winnerSide === "left" ? fighterRight : fighterLeft; + const color = winnerSide === "left" ? "0,255,255" : "255,0,255"; + + loseCard.classList.add("bout-loser"); + + if (!prefersReducedMotion) { + gsap.killTweensOf(winCard, "scale,boxShadow"); + gsap + .timeline() + .to(winCard, { + scale: 1.06, + boxShadow: `0 0 40px rgba(${color},1)`, + duration: 0.25, + ease: "power2.out", + }) + .to(winCard, { + scale: 1.03, + boxShadow: `0 0 20px rgba(${color},0.6)`, + duration: 0.25, + yoyo: true, + repeat: 3, + }) + .to(winCard, { + scale: 1, + boxShadow: `0 0 10px rgba(${color},0.2)`, + duration: 0.3, + clearProps: "scale", + }); + } + + const badge = document.createElement("div"); + badge.className = "bout-result-badge winner"; + badge.textContent = "WINNER!"; + badge.setAttribute("aria-hidden", "true"); + winCard.appendChild(badge); + if (!prefersReducedMotion) { + gsap.fromTo( + badge, + { opacity: 0, scale: 1.6 }, + { opacity: 1, scale: 1, duration: 0.35, ease: "back.out(2)" }, + ); + } +} + +function shakeArena() { + if (prefersReducedMotion) return; + const arena = document.querySelector(".arena"); + gsap.killTweensOf(arena, "x,y"); + gsap.to(arena, { + keyframes: [ + { x: -5, y: 3, duration: 0.05 }, + { x: 5, y: -4, duration: 0.05 }, + { x: -4, y: 2, duration: 0.05 }, + { x: 3, y: -3, duration: 0.05 }, + { x: -2, y: 1, duration: 0.05 }, + { x: 0, y: 0, duration: 0.05 }, + ], + ease: "none", + onComplete: () => gsap.set(arena, { clearProps: "x,y" }), + }); +} + +document.addEventListener("arena:boutStart", ({ detail: d }) => { + const strikeNote = d.firstAttacker + ? ` — ${d.firstAttacker} strikes first!` + : ""; + boutLabel.textContent = `${d.aName} vs ${d.bName}${strikeNote}`; + + imgLeft.src = d.aImagePath; + imgLeft.alt = d.aName; + imgRight.src = d.bImagePath; + imgRight.alt = d.bName; + nameLeft.textContent = d.aName; + nameRight.textContent = d.bName; + + fighterLeft.classList.remove("low-hp", "bout-loser"); + fighterRight.classList.remove("low-hp", "bout-loser"); + fighterLeft + .querySelectorAll(".bout-result-badge") + .forEach((el) => el.remove()); + fighterRight + .querySelectorAll(".bout-result-badge") + .forEach((el) => el.remove()); + prevHp.left = d.aMaxHp; + prevHp.right = d.bMaxHp; + + gsap.set(barLeft, { width: "100%", backgroundColor: "#39ff14" }); + gsap.set(barRight, { width: "100%", backgroundColor: "#39ff14" }); + hpLeft.textContent = `${d.aMaxHp} / ${d.aMaxHp}`; + hpRight.textContent = `${d.bMaxHp} / ${d.bMaxHp}`; + + addLog(`── ${d.aName} vs ${d.bName} ──`, "divider"); + + vsFlash(d.aName, d.bName); + if (!prefersReducedMotion) { + gsap.fromTo( + fighterLeft, + { x: -40, opacity: 0 }, + { x: 0, opacity: 1, duration: 0.4, ease: "power2.out" }, + ); + gsap.fromTo( + fighterRight, + { x: 40, opacity: 0 }, + { x: 0, opacity: 1, duration: 0.4, ease: "power2.out" }, + ); + } + + if (_rrActivePair) setRRHeaderActive(_rrActivePair.a, _rrActivePair.b, false); + _rrActivePair = { a: d.aId, b: d.bId }; + updateRRCell(d.aId, d.bId, "active"); + updateRRCell(d.bId, d.aId, "active"); + setRRHeaderActive(d.aId, d.bId, true); +}); + +document.addEventListener("arena:attack", ({ detail: d }) => { + const defSide = d.attackerSide === "left" ? "right" : "left"; + const dmg = + prevHp[defSide] !== null ? prevHp[defSide] - d.defenderHp : d.damage; + prevHp[defSide] = d.defenderHp; + shakeCard(d.attackerSide); + hitFlash(defSide); + spawnDamageNumber(defSide, dmg, false); + updateBar(defSide, d.defenderHp, d.defenderMaxHp, d.defenderPct); + addLog( + `${d.attackerName} attacks ${d.defenderName} for ${d.damage} damage`, + "attack", + ); +}); + +document.addEventListener("arena:special", ({ detail: d }) => { + const defSide = d.attackerSide === "left" ? "right" : "left"; + const dmg = prevHp[defSide] !== null ? prevHp[defSide] - d.defenderHp : 0; + prevHp[defSide] = d.defenderHp; + prevHp[d.attackerSide] = d.attackerHp; + glowCard(d.attackerSide); + shakeArena(); + hitFlash(defSide); + spawnDamageNumber(defSide, dmg, true); + updateBar(defSide, d.defenderHp, d.defenderMaxHp, d.defenderPct); + updateBar(d.attackerSide, d.attackerHp, d.attackerMaxHp, d.attackerPct); + addLog(d.description, "special"); +}); + +document.addEventListener("arena:boutEnd", ({ detail: d }) => { + if (d.isDraw) { + addLog("Draw! No points awarded.", "bout"); + } else { + addLog(`${d.winnerName} wins the bout!`, "bout"); + const winnerSide = + _rrActivePair && d.winnerId === _rrActivePair.a + ? "left" + : _rrActivePair && d.winnerId === _rrActivePair.b + ? "right" + : null; + victoryPulse(winnerSide); + } + + if (_rrActivePair) { + const { a, b } = _rrActivePair; + setRRHeaderActive(a, b, false); + if (d.isDraw) { + updateRRCell(a, b, "draw"); + updateRRCell(b, a, "draw"); + } else { + const winnerId = d.winnerId; + const loserId = winnerId === a ? b : a; + updateRRCell(winnerId, loserId, "win"); + updateRRCell(loserId, winnerId, "loss"); + } + _rrActivePair = null; + } +}); + +document.addEventListener("arena:tournamentEnd", ({ detail: d }) => { + if (_rrActivePair) { + setRRHeaderActive(_rrActivePair.a, _rrActivePair.b, false); + _rrActivePair = null; + } + + lbList.innerHTML = ""; + d.leaderboard.forEach(({ name, wins }, i) => { + const li = document.createElement("li"); + const medal = ["1ST", "2ND", "3RD"][i] ?? `${i + 1}.`; + li.innerHTML = `${medal} ${name}${wins} win${wins !== 1 ? "s" : ""}`; + lbList.appendChild(li); + }); + + populateMonteCarlo(); + + leaderboard.classList.add("visible"); + leaderboard.setAttribute("aria-hidden", "false"); + gsap.fromTo( + leaderboard, + { opacity: 0 }, + { opacity: 1, duration: 0.6, ease: "power2.out" }, + ); + gsap.fromTo( + ".leaderboard-card", + { y: 40, opacity: 0 }, + { y: 0, opacity: 1, duration: 0.6, delay: 0.2, ease: "back.out(1.4)" }, + ); + headerRestartBtn.hidden = false; +}); + +function closeLeaderboard() { + gsap.to(leaderboard, { + opacity: 0, + duration: 0.3, + onComplete: () => { + leaderboard.classList.remove("visible"); + leaderboard.setAttribute("aria-hidden", "true"); + gsap.set(leaderboard, { clearProps: "opacity" }); + }, + }); +} + +closeBtn.addEventListener("click", closeLeaderboard); + +function resetUI() { + log.innerHTML = ""; + boutLabel.textContent = "Waiting for the tournament to start..."; + fighterLeft.classList.remove("low-hp", "bout-loser"); + fighterRight.classList.remove("low-hp", "bout-loser"); + fighterLeft + .querySelectorAll(".bout-result-badge") + .forEach((el) => el.remove()); + fighterRight + .querySelectorAll(".bout-result-badge") + .forEach((el) => el.remove()); + prevHp.left = null; + prevHp.right = null; + headerRestartBtn.hidden = true; + _rrMonsters = []; + _rrActivePair = null; + // Table rebuilds on next arena:roster event +} + +function doRestart() { + closeLeaderboard(); + resetUI(); + window.startTournament(); +} + +document.getElementById("restart-btn").addEventListener("click", doRestart); +headerRestartBtn.addEventListener("click", doRestart); + +// ── Start screen ── +document.getElementById("start-btn").addEventListener("click", () => { + if (prefersReducedMotion) { + startScreen.hidden = true; + } else { + gsap.to(startScreen, { + opacity: 0, + duration: 0.4, + ease: "power2.in", + onComplete: () => { + startScreen.hidden = true; + }, + }); + } + window.startTournament(); +}); + +document.addEventListener("arena:roster", ({ detail: monsters }) => { + startRoster.innerHTML = ""; + monsters.forEach(({ name }) => { + const li = document.createElement("li"); + li.textContent = name; + startRoster.appendChild(li); + }); + _rrMonsters = monsters; // [{ id, name }] + _rrActivePair = null; + buildRRTable(); +}); + +let _mcResults = null; + +document.addEventListener("arena:montecarlo", ({ detail: results }) => { + _mcResults = results; +}); + +function populateMonteCarlo() { + if (!_mcResults) return; + const list = document.getElementById("montecarlo-list"); + const label = document.getElementById("montecarlo-label"); + label.textContent = "1 000 sim win rate"; + list.innerHTML = ""; + + _mcResults.forEach(({ name, winRate }, i) => { + const pct = Math.round(winRate * 100); + const li = document.createElement("li"); + li.innerHTML = ` +
    + ${name} + ${pct}% +
    +
    +
    +
    `; + list.appendChild(li); + + requestAnimationFrame(() => { + li.querySelector(".mc-bar-fill").style.width = `${pct}%`; + }); + }); +} diff --git a/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/test.js b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/test.js new file mode 100644 index 00000000..0422f294 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/oop-monster-arena/test.js @@ -0,0 +1,207 @@ +// test.js +// +// Quick sanity-check for your monster class. +// +// Usage: +// npm test ← tests src/monsters/your-monster.js +// npm test src/monsters/Hydra.js ← tests your renamed file + +import path from "path"; +import { fileURLToPath } from "url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +// ── Which file to test? ── +const target = process.argv[2] ?? "src/monsters/your-monster.js"; +const filePath = path.resolve(__dirname, target); + +// ── Output helpers ── +const green = (s) => `\x1b[32m${s}\x1b[0m`; +const red = (s) => `\x1b[31m${s}\x1b[0m`; +const yellow = (s) => `\x1b[33m${s}\x1b[0m`; +const bold = (s) => `\x1b[1m${s}\x1b[0m`; + +let passed = 0; +let failed = 0; + +function ok(label) { + console.log(` ${green("✓")} ${label}`); + passed++; +} + +function fail(label, reason) { + console.log(` ${red("✗")} ${label}`); + console.log(` ${red("→")} ${reason}`); + failed++; +} + +// ── Load monster module ── +console.log(`\n${bold("Monster Arena — Test Runner")}`); +console.log(`Testing: ${yellow(target)}\n`); + +let MonsterClass; +try { + const mod = await import(filePath); + const exports = Object.values(mod).filter((v) => typeof v === "function"); + if (exports.length === 0) { + console.log( + red("✗ No exported class found — did you forget `export class ...`?"), + ); + process.exit(1); + } + MonsterClass = exports[0]; + ok(`File loads without syntax errors`); +} catch (err) { + console.log(red(`✗ Failed to load ${target}:`)); + console.log(` ${err.message}`); + process.exit(1); +} + +// ── Instantiation + stat budget ── +let monster; +try { + monster = new MonsterClass(); + ok(`new ${MonsterClass.name}() constructs without error`); + const score = monster.hp.max + monster.attackPower * 3; + const abilityNote = monster.ability + ? ` | ability: ${monster.ability.constructor.name}(${monster.ability.amount}), triggerChance: ${(monster.ability.triggerChance * 100).toFixed(0)}%` + : " | no ability"; + ok( + `Stat budget: ${monster.hp.max} HP + ${monster.attackPower} atk × 3 = ${score}/300${abilityNote}`, + ); +} catch (err) { + fail(`Constructor throws an error`, err.message); + console.log(`\n${red("Fix the error above before testing further.")}`); + process.exit(1); +} + +// ── Basic properties ── +if (typeof monster.name === "string" && monster.name.length > 0) { + ok(`name is a non-empty string: "${monster.name}"`); +} else { + fail( + `name must be a non-empty string`, + `got: ${JSON.stringify(monster.name)}`, + ); +} + +if (typeof monster.attackPower === "number" && monster.attackPower >= 1) { + ok(`attackPower is a number ≥ 1: ${monster.attackPower}`); +} else { + fail(`attackPower must be a number ≥ 1`, `got: ${monster.attackPower}`); +} + +if (monster.isAlive()) { + ok(`isAlive() returns true at full HP`); +} else { + fail( + `isAlive() should return true at start`, + `returned false — health may be 0?`, + ); +} + +// ── attack() shape ── +const dummy = new MonsterClass(); // opponent +let attackResult; +try { + attackResult = monster.attack(dummy); + if (typeof attackResult?.damage === "number" && attackResult.damage >= 1) { + ok( + `attack() returns { damage: ${attackResult.damage}, special: ${JSON.stringify(attackResult.special)} }`, + ); + } else { + fail( + `attack() must return { damage: number, ... }`, + `got: ${JSON.stringify(attackResult)}`, + ); + } +} catch (err) { + fail(`attack() threw an error`, err.message); +} + +// ── ability shape ── +monster.reset(); +dummy.reset(); +if (monster.ability === null) { + ok(`ability is null (no ability injected)`); +} else { + const { Ability } = await import( + path.resolve(__dirname, "src/core/ability.js") + ); + if (monster.ability instanceof Ability) { + const chance = (monster.ability.triggerChance * 100).toFixed(0); + ok( + `ability is a ${monster.ability.constructor.name} instance (triggerChance: ${chance}%)`, + ); + } else { + fail( + `ability must be a DamageAbility, HealAbility, or ArmorAbility`, + `got: ${monster.ability}`, + ); + } + try { + const result = monster.ability.tryActivate(monster, dummy); + if (result === null || typeof result === "string") { + ok( + `ability.tryActivate() returns ${result === null ? "null (did not trigger this roll)" : `a string`}`, + ); + } else { + fail( + `ability.tryActivate() must return a string or null`, + `got: ${JSON.stringify(result)}`, + ); + } + } catch (err) { + fail(`ability.tryActivate() threw an error`, err.message); + } +} + +// ── reset() restores HP ── +monster.reset(); +monster.hp.takeDamage(50); +const hpBefore = monster.health; +monster.reset(); +if (monster.health === monster.hp.max && monster.health > hpBefore) { + ok(`reset() fully restores HP (${hpBefore} → ${monster.health})`); +} else if (monster.health === monster.hp.max) { + ok( + `reset() restores HP to max (was already full or took no damage — verify manually)`, + ); +} else { + fail( + `reset() did not restore HP to max`, + `expected ${monster.hp.max}, got ${monster.health}`, + ); +} + +// ── Monster can die ── +monster.reset(); +const target2 = new MonsterClass(); +let turns = 0; +while (target2.isAlive() && turns < 500) { + monster.attack(target2); + turns++; +} +if (!target2.isAlive()) { + ok(`Monster can die (took ${turns} attacks)`); +} else { + fail( + `Monster never died after 500 attacks`, + `check that takeDamage() reduces HP`, + ); +} + +// ── Summary ── +console.log(""); +if (failed === 0) { + console.log(green(bold(`All ${passed} checks passed! 🎉`))); + console.log( + `\n${yellow("Next step:")} add your monster to src/main.js and run ${yellow("npm run dev")} to see it fight!\n`, + ); +} else { + console.log(red(bold(`${failed} check(s) failed, ${passed} passed.`))); + console.log( + `\nFix the issues above, then run ${yellow("npm test")} again.\n`, + ); + process.exit(1); +} diff --git a/courses/frontend/advanced-javascript/week4/session-plan.md b/courses/frontend/advanced-javascript/week4/session-plan.md index 977f9d03..010a6069 100644 --- a/courses/frontend/advanced-javascript/week4/session-plan.md +++ b/courses/frontend/advanced-javascript/week4/session-plan.md @@ -2,29 +2,103 @@ ## Session Materials +- [Slides](./session-materials/js_oop_classes.pdf) – 41-slide deck covering all topics below - [Demo](./session-materials/demo/) – In-session live coding: plain-object motivation, `Comment` class, methods, flagged comments, then Errors / Web Components as “real world” context. **index.js** = worksheet; **index-solution.js** = reference. [README](./session-materials/demo/README.md). +- [Code inspiration](./session-materials/code-inspiration.md) – Snippets for the board or live coding ## Session Outline - - -Start VERY simple. Just a class that has few fields, no methods. Explain the diff from object to class. Explain instance etc. When they get that move on to class methods. **Only teach extends if they really are on top of things** otherwise just get them comfortable with classes :) if you can repeat a bit of promise, maybe when working with class that would be great. - -- Constructor - - [Code inspiration](./session-materials/code-inspiration.md#constructor) - - [Exercise](./session-materials/exercises.md#1-create-a-user-class) -- Instance - - [Code inspiration](./session-materials/code-inspiration.md#instance) - - [Exercise](./session-materials/exercises.md#2-create-an-instance-of-the-class) -- Methods (instance + static) - - [Code inspiration](./session-materials/code-inspiration.md#methods) - - [Code inspiration — static methods](./session-materials/code-inspiration.md#static-methods) (Promise as "you already use this") - - [Exercise](./session-materials/exercises.md#3-create-a-class-method) -- `this` - - Refers to the instance of the class. Do go into too much detail and edge cases. Avoid mentioning `bind`, `apply`, etc unless you find it super important, the trainees will just forget it anyway! -- [Exercise](./session-materials/exercises.md#4-creating-a-cv-class) -- Extend (Only if time!) - - [Code inspiration](./session-materials/code-inspiration.md#extending-built-ins-error-and-web-components) (`Error`, `ValidationError`, Web Components sketch — matches demo Part 4) +Start VERY simple — build the mental model before touching code. **Only teach Inheritance & Composition if trainees are solid on classes and methods.** It's the last major section and can be cut if needed. Design Patterns (slides 35–41) are optional/bonus only. + +### 1. The Mental Model + +Concepts before code. Get this right and the syntax will feel natural. + +- **Class vs Instance:** class = blueprint (the concept), instance = the real thing + - “Car” the concept vs that red Tesla parked outside + - One class → many instances, each with its own data +- **Properties, Methods & Static:** + - Properties = what it IS — the data that makes each instance unique + - Methods = what it DOES — behaviors that use or change properties + - Static = shared truths, same for ALL instances (not specific to one) +- Show the full picture (slide 6): blueprint on the left → two instances on the right + +### 2. From Object to Class + +Bridge from what trainees already know. + +- Start with an object literal: `const myCar = { brand: “Tesla”, drive() { ... } }` — fine for ONE car +- Problem: what if you need 50? Copy-pasting 50 objects is a nightmare → you need a blueprint → a class +- Show the class syntax: `class`, `constructor`, `this` + - `class` keyword defines the blueprint + - `constructor` runs automatically when you call `new` + - `this.___` assigns properties to the new instance +- What `new` does step by step (slide 10): creates empty object → sets `this` → runs constructor → returns object + - [Code inspiration — constructor](./session-materials/code-inspiration.md#constructor) + - [Code inspiration — instance](./session-materials/code-inspiration.md#instance) +- **[Exercise 1: User class with DOM rendering](./session-materials/exercises.md#1-user-class-with-dom-rendering)** — parts 1 & 2 (create class + instantiate) + +### 3. Methods & `this` + +- Adding methods: functions defined inside the class, no `function` keyword needed +- **`this` = the thing left of the dot** — that's all they need to know + - `tesla.drive(100)` → `this` is `tesla`; `honda.drive(60)` → `this` is `honda` + - Same method, different instance → different `this` → different result + - Avoid going into edge cases (`bind`, `apply`, `call`) — trainees will forget it immediately +- Methods calling other methods via `this.method()` +- Async methods: just add the `async` keyword — works exactly like regular async functions, returns a Promise +- Static methods & properties: belong to the class itself, not any instance + - Called on the class name: `Car.numberOfWheels` ✓ vs `myCar.numberOfWheels` ✗ + - Bridge to Promises: `Promise.resolve()`, `Promise.all()` — they already use static methods! + - [Code inspiration — static methods](./session-materials/code-inspiration.md#static-methods) +- [Code inspiration — methods](./session-materials/code-inspiration.md#methods) +- **[Exercise 1: User class with DOM rendering](./session-materials/exercises.md#1-user-class-with-dom-rendering)** — part 3 (add `getFullName` + `render()`) +- **[Exercise 2: Creating a CV class](./session-materials/exercises.md#2-creating-a-cv-class)** + +### 4. Design Challenge: FoodDash + +Paper only — no code. This builds design thinking and sets up the inheritance discussion. + +- **Brief:** food delivery app — customers browse restaurants, add items, driver delivers +- **Rules:** paper only; for each class: name + properties + methods; show relationships between classes +- 8 minutes in small groups, then each group presents their design +- Discussion questions to guide debrief (slide 21): + - Which classes did different teams create? + - Did anyone make `Driver extends User`? `Customer extends User`? + - How did you handle the relationship between `Order` and `Restaurant`? + - Where did shared behavior come up? How did you handle it? +- That last question leads naturally into the next section +- **[Exercise 3: Design Challenge: FoodDash](./session-materials/exercises.md#3-design-challenge-fooddash)** + +### 5. Inheritance & Composition + +**Only teach this section if trainees are solid on classes and methods.** + +- **Inheritance: `extends` and `super()`** + - A child class IS A type of the parent — gets all parent properties and methods + - `super(...)` calls the parent's constructor — must come before using `this` + - `extends` = “is-a”: a Car IS A Vehicle + - [Code inspiration — inheritance](./session-materials/code-inspiration.md#inheritance) +- **When inheritance works:** clean “is-a” relationship, stable parent, max one level deep + - Good examples: `Vehicle → Car, Truck`; `Shape → Circle, Rectangle`; `Account → CheckingAccount, SavingsAccount` +- **When inheritance gets awkward:** `ElectricCar extends Vehicle` — forced to override `refuel()` with an error + - Adding `charge()` to `Vehicle` breaks gas cars; overriding to disable is a code smell +- **Composition: “has-a” instead of “is-a”** + - Car HAS an Engine, HAS a GPS — create parts as classes and delegate to them + - [Code inspiration — composition](./session-materials/code-inspiration.md#composition) +- **Passing dependencies in:** inject the engine from outside — swap behaviors without changing the class +- **Back to FoodDash:** inheritance approach hits a wall (a driver who is also a customer — JS has no multiple inheritance); composition handles it cleanly +- **Rule of thumb:** favor composition; use inheritance only when there's a clear, stable “is-a” relationship + +### 6. Optional: Design Patterns + +Bonus only — skip unless there is plenty of time and trainees are engaged. + +- **Strategy:** swap behavior by passing in a different object (the composition idea taken further) +- **Factory:** a function that hides `new` and setup details from the caller +- **Observer:** “when something happens, notify everyone who cares” — think `addEventListener`; how DOM events, Node EventEmitter, and most UI frameworks work +- **Singleton:** only one instance ever exists — useful for DB connections or config, but global state in disguise, use sparingly +- **[Bonus Exercise: Build FoodDash](./session-materials/exercises.md#bonus-build-fooddash)** ## Exercises From 8891dd882ebf3707d7d290a518624e1c00ca7337 Mon Sep 17 00:00:00 2001 From: Paolo Bozzini Date: Wed, 15 Apr 2026 14:57:48 +0200 Subject: [PATCH 2/3] update OOP assignment --- .../advanced-javascript/week4/assignment.md | 275 +++++++++++++++++- .../session-materials/assignment-mockup.svg | 82 ++++++ 2 files changed, 355 insertions(+), 2 deletions(-) create mode 100644 courses/frontend/advanced-javascript/week4/session-materials/assignment-mockup.svg diff --git a/courses/frontend/advanced-javascript/week4/assignment.md b/courses/frontend/advanced-javascript/week4/assignment.md index 1374fbd2..baf15fb6 100644 --- a/courses/frontend/advanced-javascript/week4/assignment.md +++ b/courses/frontend/advanced-javascript/week4/assignment.md @@ -4,10 +4,12 @@ For this week's assignment we will create a web application that generates a scr We use [Rapid API](https://rapidapi.com/apishub/api/website-screenshot6/?utm_source=RapidAPI.com%2Fguides&utm_medium=DevRel&utm_campaign=DevRel) to generate a screenshot and the [crudcrud API](https://crudcrud.com/) to save the screenshot. +![Application mockup](./session-materials/assignment-mockup.svg) + ## Technical specifications 1. User can enter a URL for a website and it will send back a screenshot of the website using the website-screenshot API -2. User can hit a button to save the screenshot. It will then save the screenshot and the URL as a resource on crudcrud +2. User can hit a button to save the screenshot. It will then save the screenshot URL as a resource on crudcrud 3. User can get a list of all screenshots that they have saved 4. User can delete a screenshot that they have saved @@ -21,6 +23,273 @@ Look at your interface and think about what parts can be modeled as classes — For the error system, think about what kinds of errors can happen in your app — what if the user submits an empty URL? What if the API returns a bad response? What if the network is down? You might end up with classes like `ValidationError`, `ApiError`, or something else entirely — it's up to you. +--- + +## API Guides + +### The Screenshot API (Rapid API) + +Sign up at [RapidAPI](https://rapidapi.com) and subscribe to the **website-screenshot6** API (free tier is enough). You will get an API key. + +The API takes a website URL and returns the screenshot as **binary image data** — not JSON, not a string. See the next section for how to handle that. + +```js +async function fetchScreenshot(websiteUrl) { + const response = await fetch( + `https://website-screenshot6.p.rapidapi.com/?url=${encodeURIComponent(websiteUrl)}`, + { + method: "GET", + headers: { + "x-rapidapi-host": "website-screenshot6.p.rapidapi.com", + "x-rapidapi-key": "YOUR_API_KEY_HERE", + }, + }, + ); + + if (!response.ok) { + throw new Error(`Screenshot API error: ${response.status}`); + } + + // The response body is binary image data — read it as a Blob + const blob = await response.blob(); + return blob; +} +``` + +> **Keep your API key out of git.** Put it in a `secret.js` file and add that file to `.gitignore`. + +--- + +### Working with Blobs + +A **Blob** (Binary Large Object) is how the browser represents raw binary data — like an image file that came from a network response. It is not a string and you cannot display it directly in an `` tag. + +To display a Blob as an image, use `URL.createObjectURL()`. This creates a temporary URL that points to the Blob in memory: + +```js +const blob = await fetchScreenshot("https://example.com"); + +// Create a temporary URL for the blob +const imageUrl = URL.createObjectURL(blob); + +// Now you can use it as an img src +const img = document.createElement("img"); +img.src = imageUrl; +document.body.appendChild(img); +``` + +The URL looks like `blob:http://localhost:3000/some-uuid` — it only lives as long as the page is open. That's fine for displaying images on screen. + +**Can you store a Blob in crudcrud?** No — crudcrud only stores JSON (plain text/numbers/objects). Blobs are binary data and cannot go into JSON directly. + +The practical solution: **store the original website URL in crudcrud, not the image itself.** When you later load saved screenshots, call the screenshot API again with that URL to regenerate the image. This keeps your stored data small and simple. + +```js +// What you save in crudcrud — just the URL string +{ + websiteUrl: "https://example.com"; +} + +// When loading saved items, call fetchScreenshot(item.websiteUrl) again +``` + +--- + +### The crudcrud API + +[crudcrud.com](https://crudcrud.com/) gives you a free, temporary REST API endpoint for storing JSON data. Go to the site and you will get a unique ID — your endpoint will look like: + +```text +https://crudcrud.com/api/YOUR_UNIQUE_ID +``` + +You can create any resource name you like after it, for example `/screenshots`. crudcrud gives you four operations: + +| What you want to do | Method | URL | +| ------------------------- | -------- | --------------------- | +| Get all saved screenshots | `GET` | `.../screenshots` | +| Save a new screenshot | `POST` | `.../screenshots` | +| Delete one screenshot | `DELETE` | `.../screenshots/:id` | + +crudcrud automatically assigns an `_id` field to each item you POST. You will need that `_id` to delete items later. + +#### Save a screenshot + +```js +async function saveScreenshot(websiteUrl) { + const response = await fetch( + "https://crudcrud.com/api/YOUR_UNIQUE_ID/screenshots", + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ websiteUrl }), + }, + ); + + if (!response.ok) { + throw new Error(`Failed to save: ${response.status}`); + } + + // crudcrud returns the saved object with its _id + const saved = await response.json(); + return saved; // { _id: "abc123", websiteUrl: "https://example.com" } +} +``` + +#### Load all screenshots + +```js +async function loadScreenshots() { + const response = await fetch( + "https://crudcrud.com/api/YOUR_UNIQUE_ID/screenshots", + ); + + if (!response.ok) { + throw new Error(`Failed to load: ${response.status}`); + } + + const items = await response.json(); + return items; // Array of { _id, websiteUrl } +} +``` + +#### Delete a screenshot + +```js +async function deleteScreenshot(id) { + const response = await fetch( + `https://crudcrud.com/api/YOUR_UNIQUE_ID/screenshots/${id}`, + { method: "DELETE" }, + ); + + if (!response.ok) { + throw new Error(`Failed to delete: ${response.status}`); + } +} +``` + +> **Note:** crudcrud endpoints expire after a few days on the free plan. If your app suddenly stops working, go to crudcrud.com and get a new unique ID. Keep your unique ID in `secret.js` alongside your API key. + +--- + +## Using `render()` — when and how + +The `render()` method is how a class puts itself on the page. The idea: **the class owns its own DOM element**. Call `render()` to create or update that element, then append the returned element somewhere in the DOM. + +Use this base class as a starting point — every UI class in your app should extend it: + +```js +class UIComponent { + constructor() { + this.element = null; + } + + render() { + throw new Error("render() must be implemented by subclass"); + } +} +``` + +A `Screenshot` class is a natural fit here — it holds the website URL and its crudcrud `_id`, and it knows how to display itself. Think about: + +- What data does it need? (constructor) +- What does its card look like? (render) +- What can it do? (methods like delete) + +```js +class Screenshot extends UIComponent { + constructor(websiteUrl, id) { + super(); + this.websiteUrl = websiteUrl; + this.id = id; // _id from crudcrud — needed to delete later + } + + render() { + // create this.element if it doesn't exist yet, then build the HTML + // return this.element so the caller can append it to the page + } + + async delete() { + // call the crudcrud delete function, then remove this.element from the DOM + } +} + +// Usage +const card = new Screenshot("https://example.com", "abc123"); +document.getElementById("screenshots-list").appendChild(card.render()); +``` + +**When to call `render()`:** + +- Right after creating a new instance — to show it on screen +- After data on the instance changes and the DOM should reflect it + +--- + +## Error handling — when and how + +Not all errors are the same. A user typing nothing in the input is different from the API being down. Custom error classes let you handle each case differently. + +Here is a starting point — adapt it to fit your actual app: + +```js +class ValidationError extends Error { + constructor(message) { + super(message); + this.name = "ValidationError"; + } + toUserMessage() { + return `Invalid input: ${this.message}`; + } +} + +class ApiError extends Error { + constructor(message, statusCode) { + super(message); + this.name = "ApiError"; + this.statusCode = statusCode; + } + toUserMessage() { + return `Something went wrong with the request (${this.statusCode}). Try again.`; + } +} +``` + +Use `throw` to signal that something went wrong, and `try/catch` with `instanceof` to handle each type: + +```js +async function handleGenerateScreenshot(websiteUrl) { + try { + if (!websiteUrl || websiteUrl.trim() === "") { + throw new ValidationError("URL cannot be empty"); + } + + const blob = await fetchScreenshot(websiteUrl); + // ... display the screenshot + } catch (error) { + if (error instanceof ValidationError) { + // User made a mistake — show a friendly message next to the input + showError(error.toUserMessage()); + } else if (error instanceof ApiError) { + // API problem — tell the user to try again + showError(error.toUserMessage()); + } else { + // Unexpected error — log it for debugging + console.error(error); + showError("An unexpected error occurred."); + } + } +} +``` + +**Where to use error handling in this app:** + +- When the user submits the form: validate that the URL field is not empty +- When calling the screenshot API: catch network failures or non-2xx responses +- When calling crudcrud (save, load, delete): catch failures and tell the user + +--- + ## Optional Tasks/Assignments > **Note:** Users do not need to be stored in a database or API — just keep them in memory (e.g. an array of instances in your JavaScript). No need to persist them anywhere. @@ -31,4 +300,6 @@ For the error system, think about what kinds of errors can happen in your app 4. Create another user. When saving a screenshot, also save the user email (or another unique identifier). 5. Make sure you only show screenshots that the logged-in user has uploaded. -Keep in mind the API key for the website-screenshot and the uuid for crudcrud should be in a secret.js file which is not committed to git. +--- + +> Keep in mind the API key for the website-screenshot API and the unique ID for crudcrud should be in a `secret.js` file which is not committed to git. diff --git a/courses/frontend/advanced-javascript/week4/session-materials/assignment-mockup.svg b/courses/frontend/advanced-javascript/week4/session-materials/assignment-mockup.svg new file mode 100644 index 00000000..01aba576 --- /dev/null +++ b/courses/frontend/advanced-javascript/week4/session-materials/assignment-mockup.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + Screenshot Saver + + + GENERATE SCREENSHOT + + + + https://example.com + + + + Generate + + + + + + + + + + + + + + + + + + + + + https://example.com + Generated just now + + + Save + + + SAVED SCREENSHOTS + + + + + + + + + + https://google.com + Saved 2 hours ago + + + Delete + + + + + + + + https://github.com + Saved yesterday + + Delete + + + + + + From 8a9d398692e3ed8d0daa373e96b25d35707bf0bc Mon Sep 17 00:00:00 2001 From: Paolo Bozzini Date: Wed, 15 Apr 2026 15:30:40 +0200 Subject: [PATCH 3/3] update rapid api documentation --- .../advanced-javascript/week4/assignment.md | 73 ++++++------------- 1 file changed, 22 insertions(+), 51 deletions(-) diff --git a/courses/frontend/advanced-javascript/week4/assignment.md b/courses/frontend/advanced-javascript/week4/assignment.md index baf15fb6..415b7ecc 100644 --- a/courses/frontend/advanced-javascript/week4/assignment.md +++ b/courses/frontend/advanced-javascript/week4/assignment.md @@ -9,7 +9,7 @@ We use [Rapid API](https://rapidapi.com/apishub/api/website-screenshot6/?utm_sou ## Technical specifications 1. User can enter a URL for a website and it will send back a screenshot of the website using the website-screenshot API -2. User can hit a button to save the screenshot. It will then save the screenshot URL as a resource on crudcrud +2. User can hit a button to save the screenshot. It will then save the screenshot and the URL as a resource on crudcrud 3. User can get a list of all screenshots that they have saved 4. User can delete a screenshot that they have saved @@ -31,12 +31,12 @@ For the error system, think about what kinds of errors can happen in your app Sign up at [RapidAPI](https://rapidapi.com) and subscribe to the **website-screenshot6** API (free tier is enough). You will get an API key. -The API takes a website URL and returns the screenshot as **binary image data** — not JSON, not a string. See the next section for how to handle that. +The API takes a website URL and returns **JSON** with a `screenshotUrl` field — a direct link to the generated image you can use in an `` tag. ```js async function fetchScreenshot(websiteUrl) { const response = await fetch( - `https://website-screenshot6.p.rapidapi.com/?url=${encodeURIComponent(websiteUrl)}`, + `https://website-screenshot6.p.rapidapi.com/screenshot?url=${encodeURIComponent(websiteUrl)}&width=1920&height=1080`, { method: "GET", headers: { @@ -50,9 +50,9 @@ async function fetchScreenshot(websiteUrl) { throw new Error(`Screenshot API error: ${response.status}`); } - // The response body is binary image data — read it as a Blob - const blob = await response.blob(); - return blob; + // The response is JSON: { screenshotUrl: "https://..." } + const data = await response.json(); + return data.screenshotUrl; } ``` @@ -60,41 +60,6 @@ async function fetchScreenshot(websiteUrl) { --- -### Working with Blobs - -A **Blob** (Binary Large Object) is how the browser represents raw binary data — like an image file that came from a network response. It is not a string and you cannot display it directly in an `` tag. - -To display a Blob as an image, use `URL.createObjectURL()`. This creates a temporary URL that points to the Blob in memory: - -```js -const blob = await fetchScreenshot("https://example.com"); - -// Create a temporary URL for the blob -const imageUrl = URL.createObjectURL(blob); - -// Now you can use it as an img src -const img = document.createElement("img"); -img.src = imageUrl; -document.body.appendChild(img); -``` - -The URL looks like `blob:http://localhost:3000/some-uuid` — it only lives as long as the page is open. That's fine for displaying images on screen. - -**Can you store a Blob in crudcrud?** No — crudcrud only stores JSON (plain text/numbers/objects). Blobs are binary data and cannot go into JSON directly. - -The practical solution: **store the original website URL in crudcrud, not the image itself.** When you later load saved screenshots, call the screenshot API again with that URL to regenerate the image. This keeps your stored data small and simple. - -```js -// What you save in crudcrud — just the URL string -{ - websiteUrl: "https://example.com"; -} - -// When loading saved items, call fetchScreenshot(item.websiteUrl) again -``` - ---- - ### The crudcrud API [crudcrud.com](https://crudcrud.com/) gives you a free, temporary REST API endpoint for storing JSON data. Go to the site and you will get a unique ID — your endpoint will look like: @@ -103,7 +68,7 @@ The practical solution: **store the original website URL in crudcrud, not the im https://crudcrud.com/api/YOUR_UNIQUE_ID ``` -You can create any resource name you like after it, for example `/screenshots`. crudcrud gives you four operations: +You can create any resource name you like after it, for example `/screenshots`. For this app you need three operations: | What you want to do | Method | URL | | ------------------------- | -------- | --------------------- | @@ -116,13 +81,13 @@ crudcrud automatically assigns an `_id` field to each item you POST. You will ne #### Save a screenshot ```js -async function saveScreenshot(websiteUrl) { +async function saveScreenshot(websiteUrl, screenshotUrl) { const response = await fetch( "https://crudcrud.com/api/YOUR_UNIQUE_ID/screenshots", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ websiteUrl }), + body: JSON.stringify({ websiteUrl, screenshotUrl }), }, ); @@ -132,7 +97,7 @@ async function saveScreenshot(websiteUrl) { // crudcrud returns the saved object with its _id const saved = await response.json(); - return saved; // { _id: "abc123", websiteUrl: "https://example.com" } + return saved; // { _id: "abc123", websiteUrl: "https://example.com", screenshotUrl: "https://..." } } ``` @@ -149,7 +114,7 @@ async function loadScreenshots() { } const items = await response.json(); - return items; // Array of { _id, websiteUrl } + return items; // Array of { _id, websiteUrl, screenshotUrl } } ``` @@ -190,7 +155,7 @@ class UIComponent { } ``` -A `Screenshot` class is a natural fit here — it holds the website URL and its crudcrud `_id`, and it knows how to display itself. Think about: +A `Screenshot` class is a natural fit here — it holds the website URL, the screenshot image URL, and its crudcrud `_id`, and it knows how to display itself. Think about: - What data does it need? (constructor) - What does its card look like? (render) @@ -198,14 +163,16 @@ A `Screenshot` class is a natural fit here — it holds the website URL and its ```js class Screenshot extends UIComponent { - constructor(websiteUrl, id) { + constructor(websiteUrl, screenshotUrl, id) { super(); this.websiteUrl = websiteUrl; + this.screenshotUrl = screenshotUrl; // direct image URL from the API this.id = id; // _id from crudcrud — needed to delete later } render() { // create this.element if it doesn't exist yet, then build the HTML + // use this.screenshotUrl directly as the src // return this.element so the caller can append it to the page } @@ -215,7 +182,11 @@ class Screenshot extends UIComponent { } // Usage -const card = new Screenshot("https://example.com", "abc123"); +const card = new Screenshot( + "https://example.com", + "https://storage.linebot.site/...", + "abc123", +); document.getElementById("screenshots-list").appendChild(card.render()); ``` @@ -264,8 +235,8 @@ async function handleGenerateScreenshot(websiteUrl) { throw new ValidationError("URL cannot be empty"); } - const blob = await fetchScreenshot(websiteUrl); - // ... display the screenshot + const screenshotUrl = await fetchScreenshot(websiteUrl); + // ... display the screenshot using screenshotUrl as src } catch (error) { if (error instanceof ValidationError) { // User made a mistake — show a friendly message next to the input