以下は、4属性バトルのアプリの実装例です。アプリでは、4つの属性を持つバトルキャラクターを作成し、それらを戦わせます。
```html
<!DOCTYPE html>
<html>
<head>
<title>4属性バトル</title>
</head>
<body>
<h1>4属性バトル</h1>
<button onclick="createCharacter()">新しいキャラクターを作成</button>
<button onclick="startBattle()">バトルを開始</button>
<div id="characters">
<!-- ここにキャラクターが追加されます -->
</div>
<script>
// キャラクタークラスの定義
class Character {
constructor(name, attribute) {
this.name = name;
this.attribute = attribute;
}
attack() {
let joke = "";
switch (this.attribute) {
case "Fire":
joke = "火属性の攻撃!相手を炎で包み込む!";
break;
case "Water":
joke = "水属性の攻撃!相手をずぶ濡れにする!";
break;
case "Earth":
joke = "土属性の攻撃!相手を埋め尽くす!";
break;
case "Wind":
joke = "風属性の攻撃!相手を舞い上がらせる!";
break;
}
console.log(joke);
}
}
let characters = [];
// 新しいキャラクターを作成する関数
function createCharacter() {
let name = prompt("キャラクターの名前を入力してください");
let attribute = prompt("キャラクターの属性を入力してください(Fire, Water, Earth, Wind)");
if (['Fire', 'Water', 'Earth', 'Wind'].includes(attribute)) {
characters.push(new Character(name, attribute));
alert("新しいキャラクターが作成されました!");
} else {
alert("属性が無効です!Fire, Water, Earth, Windのいずれかを入力してください");
}
}
// バトルを開始する関数
function startBattle() {
if (characters.length >= 2) {
let attackerIndex = Math.floor(Math.random() * characters.length);
let defenderIndex = Math.floor(Math.random() * characters.length);
while (attackerIndex === defenderIndex) {
defenderIndex = Math.floor(Math.random() * characters.length);
}
let attacker = characters[attackerIndex];
let defender = characters[defenderIndex];
attacker.attack();
defender.attack();
} else {
alert("バトルを開始するにはキャラクターが2体以上必要です!");
}
}
</script>
</body>
</html>
```
このアプリでは、2つ以上のキャラクターが作成されるまでバトルを開始することはできません。作成されたキャラクターはランダムに選ばれ、各キャラクターは`attack()`メソッドを使って属性に応じた攻撃ジョークをコンソールに表示します。