iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0

DAY2有介紹一些迴圈的運用,今天想分享一個進階練習!
這裡有一個名為「迷宮探險」的Java動態生成數據的遊戲概念:

目錄
1.遊戲概述
2.遊戲機制
3.JAVA實例

1.遊戲概述—「迷宮探險」
/一款基於動態生成數據的冒險遊戲。
/玩家需要探索隨機生成的迷宮,解開謎題、打敗敵人並尋找寶藏。
/每次進入遊戲,迷宮、敵人、寶藏和事件都是隨機生成的。

2.遊戲機制

  1. 迷宮生成:
    每次玩家進入遊戲時,迷宮地圖會隨機生成,包含房間、走廊和寶箱。
  2. 角色和敵人:
    玩家和敵人角色會隨機生成屬性(如生命值、攻擊力、防禦力等)。
  3. 戰鬥系統:
    玩家和敵人在迷宮中相遇時會進行戰鬥,戰鬥結果根據角色的屬性決定。
    寶藏和道具:
    迷宮中有隨機生成的寶藏和道具,玩家可以拾取並使用來提升自己的能力。

3.Java 實現範例

「迷宮生成」

import java.util.Random;

public class Maze {
private char[][] map;
private int width;
private int height;
private Random random;

public Maze(int width, int height) {
    this.width = width;
    this.height = height;
    this.map = new char[width][height];
    this.random = new Random();
    generateMaze();
}

private void generateMaze() {
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            if (random.nextInt(100) < 10) {
                map[i][j] = 'T'; // T代表陷阱
            } else if (random.nextInt(100) < 5) {
                map[i][j] = 'C'; // C代表寶藏
            } else {
                map[i][j] = '.'; // .代表空地
            }
        }
    }
}

public void printMaze() {
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            System.out.print(map[i][j] + " ");
        }
        System.out.println();
    }
}

public static void main(String[] args) {
    Maze maze = new Maze(10, 10);
    maze.printMaze();
}

}

「角色和戰鬥」

import java.util.Random;

public class Character {
private String name;
private int health;
private int attack;
private int defense;
private Random random;

public Character(String name) {
    this.name = name;
    this.random = new Random();
    this.health = random.nextInt(50) + 50; // 隨機生成50到100之間的生命值
    this.attack = random.nextInt(20) + 10; // 隨機生成10到30之間的攻擊力
    this.defense = random.nextInt(10) + 5; // 隨機生成5到15之間的防禦力
}

public void attack(Character enemy) {
    int damage = this.attack - enemy.defense;
    if (damage > 0) {
        enemy.health -= damage;
        System.out.println(this.name + " 對 " + enemy.name + " 造成了 " + damage + " 點傷害!");
    } else {
        System.out.println(this.name + " 的攻擊未能穿透 " + enemy.name + " 的防禦!");
    }
}

public boolean isAlive() {
    return this.health > 0;
}

public static void main(String[] args) {
    Character hero = new Character("勇者");
    Character monster = new Character("怪物");

    while (hero.isAlive() && monster.isAlive()) {
        hero.attack(monster);
        if (monster.isAlive()) {
            monster.attack(hero);
        }
    }

    if (hero.isAlive()) {
        System.out.println("勇者獲勝!");
    } else {
        System.out.println("怪物獲勝!");
    }
}

}

「寶藏和道具」

import java.util.Random;

public class Treasure {
private String name;
private int value;

public Treasure(String name, int value) {
    this.name = name;
    this.value = value;
}

public void use(Character character) {
    character.health += value;
    System.out.println(character.name + " 使用了 " + name + ",恢復了 " + value + " 點生命值!");
}

public static void main(String[] args) {
    Random random = new Random();
    Treasure potion = new Treasure("治療藥水", random.nextInt(20) + 10);

    Character hero = new Character("勇者");
    System.out.println("勇者的初始生命值: " + hero.health);

    potion.use(hero);
    System.out.println("使用後勇者的生命值: " + hero.health);
}

}

這樣就簡單的設計了迴圈遊戲,往後幾天也會依照語法實驗及創新相關的遊戲及制定規則~


上一篇
數字排列有這麼複雜嗎?簡單迴圈介紹讓Java一目了然!
下一篇
DAY4 少不了的關卡!用迴圈語法增加障礙
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言