import java.util.ArrayList; import java.util.List; import java.util.Scanner; // UEFNの「仕掛け(Device)」をイメージしたクラス public class FortniteVerseSimulator { // Verseの変数宣言(@editable プロパティのイメージ) private static int playerHp = 100; private static int playerShield = 50; private static final List<String> builtStructures = new ArrayList<>(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("=== フォートナイト Verse風 Javaシミュレーター ==="); showStatus(); // イベントループ(ゲームの入力待ち状態) while (playerHp > 0) { System.out.println("\n[アクションを選択]: 1:壁を建築 2:階段を建築 3:敵から攻撃を受ける 4:終了"); System.out.print("> "); String input = scanner.nextLine(); switch (input) { case "1": onBuildTriggered("壁 (Wall)"); break; case "2": onBuildTriggered("階段 (Ramp)"); break; case "3": onPlayerDamaged(40); // 40ダメージ受けるイベント break; case "4": System.out.println("シミュレーターを終了します。"); return; default: System.out.println("無効な入力です。"); } } } // 建築イベントが発生したときの処理(Verseの関数に相当) private static void onBuildTriggered(String structureType) { builtStructures.add(structureType); System.out.println("【Verseログ】: " + structureType + " が建築されました!"); System.out.println("現在の建築物: " + builtStructures); } // ダメージイベントが発生したときの処理(Verseの<decides>(失敗する可能性のある処理)のイメージ) private static void onPlayerDamaged(int damage) { System.out.println("【Verseログ】: 敵から " + damage + " ダメージを受けました!"); // シールドの計算 if (playerShield >= damage) { playerShield -= damage; } else { int remainingDamage = damage - playerShield; playerShield = 0; playerHp -= remainingDamage; } // プレイヤーのHP判定(Verseのif文のロジック) if (playerHp <= 0) { playerHp = 0; showStatus(); System.out.println("❌ 【GAME OVER】 プレイヤーがダウンしました。撃破されました!"); } else { showStatus(); } } // ステータス表示 private static void showStatus() { System.out.println("----------------------------------------"); System.out.println("? HP: " + playerHp + " | ?️ シールド: " + playerShield); System.out.println("----------------------------------------"); } }
System.in↑フォートナイト似たようなものを作った