Javascript实现一个冒险小游戏

游戏的目标是探索整个岛屿,解开其隐藏的秘密,尽可能多地收集宝藏和物品。然后玩家需要谨慎决策,因为某些选择可能会导致健康值下降或错过重要的奖励。最终,玩家可以选择离开岛屿,结束冒险,或者继续探索,发现更多的神秘之处。

// 创建一个更丰富的文字冒险游戏
// 博客:ooize.com

// 定义玩家对象
const player = {
    name: '',
    health: 100,
    items: [],
    location: '起始点'
};

// 欢迎玩家
alert('欢迎来到神秘岛屿的冒险!');

// 获取玩家姓名
player.name = prompt('请输入你的名字:');

// 开始冒险
alert(`你好,${player.name}!你发现自己置身于一个神秘的岛屿上。`);

// 主游戏循环
while (player.health > 0) {
    const choice = prompt(`你现在在${player.location},你想要做什么?(探索/休息/离开)`).toLowerCase();

    switch (choice) {
        case '探索':
            explore();
            break;
        case '休息':
            rest();
            break;
        case '离开':
            leave();
            break;
        default:
            alert('无效的选择,请重新输入。');
    }
}

// 探索函数
function explore() {
    const encounter = Math.random();

    if (encounter < 0.3) {
        // 发现物品
        const foundItem = prompt('你发现了一件神秘的物品!是否要捡起它?(是/否)').toLowerCase();
        if (foundItem === '是') {
            const item = generateItem();
            player.items.push(item);
            alert(`你捡起了${item}!`);
        } else {
            alert('你决定不捡起物品。');
        }
    } else if (encounter < 0.6) {
        // 遭遇怪物
        const damage = Math.floor(Math.random() * 30) + 10;
        player.health -= damage;
        alert(`你遭遇了一只怪物,你受到了${damage}点伤害!你现在的健康值为${player.health}。`);
    } else {
        // 探索事件
        const event = Math.random();
        if (event < 0.2) {
            exploreMaze();
        } else if (event < 0.4) {
            communicateWithNatives();
        } else if (event < 0.6) {
            solvePuzzle();
        } else if (event < 0.7) {
            visitWitch();
        } else if (event < 0.8) {
            findTreasure();
        } else if (event < 0.9) {
            fightDragon();
        } else {
            exploreCave();
        }
    }
}

// 探索迷宫
function exploreMaze() {
    player.location = '迷宫';
    alert('你发现了一个神秘的迷宫,你决定进去探索。');
    const success = Math.random() < 0.5; // 50%的成功率
    if (success) {
        alert('你成功地走出了迷宫,并发现了一处隐藏的宝藏!');
        const coins = Math.floor(Math.random() * 50) + 10;
        player.items.push(`${coins} 金币`);
    } else {
        alert('你在迷宫中迷失了方向,费尽九牛二虎之力才最终找到出口,但什么都没有发现。');
    }
    player.location = '迷宫入口';
}

// 与原住民交流
function communicateWithNatives() {
    player.location = '原住民村落';
    alert('你遇到了岛上的原住民,他们似乎友好且乐意与你交流。');
    const trade = prompt('他们提议与你交换一些东西,你愿意吗?(是/否)').toLowerCase();
    if (trade === '是') {
        alert('你与原住民进行了交易,并获得了一些有用的物品!');
        const item = generateItem();
        player.items.push(item);
        alert(`你获得了${item}!`);
    } else {
        alert('你决定不进行交易。');
    }
    player.location = '原住民村落';
}

// 解谜
function solvePuzzle() {
    player.location = '神秘遗迹';
    alert('你发现了一处古老的遗迹,上面刻着一个神秘的谜题。');
    const answer = prompt('你能解开这个谜题吗?请输入你的答案:');
    if (answer.toLowerCase() === '秘密') {
        alert('恭喜你,你成功解开了谜题,并获得了一件神秘的宝物!');
        const item = generateItem();
        player.items.push(item);
        alert(`你获得了${item}!`);
    } else {
        alert('很遗憾,你的答案是错误的。');
    }
    player.location = '神秘遗迹';
}

// 拜访女巫
function visitWitch() {
    player.location = '女巫小屋';
    alert('你找到了一个隐藏在树林中的小屋,里面住着一位神秘的女巫。');
    const potion = prompt('女巫提供给你一瓶神秘的药水,你想要喝吗?(是/否)').toLowerCase();
    if (potion === '是') {
        const healing = Math.floor(Math.random() * 30) + 10;
        player.health += healing;
        alert(`你喝下了药水,感觉身体得到了治愈,你的健康值增加了${healing}点!你现在的健康值为${player.health}。`);
    } else {
        alert('你拒绝了女巫的药水。');
    }
    player.location = '女巫小屋';
}

// 发现宝藏
function findTreasure() {
    player.location = '宝藏地点';
    alert('你发现了一个隐藏的宝藏地点,里面有丰富的财宝!');
    const coins = Math.floor(Math.random() * 100) + 50;
    player.items.push(`${coins} 金币`);
    alert(`你获得了${coins} 金币!`);
    player.location = '宝藏地点';
}

// 与龙战斗
function fightDragon() {
    player.location = '龙穴';
    alert('你勇敢地进入了龙的巢穴,准备与它一决生死!');
    const dragonHealth = 200;
    let dragonAttack = Math.floor(Math.random() * 50) + 20;
    while (player.health > 0 && dragonHealth > 0) {
        const playerAttack = Math.floor(Math.random() * 30) + 10;
        dragonHealth -= playerAttack;
        if (dragonHealth <= 0) {
            alert('你成功地击败了恶龙,夺得了宝藏!');
            const treasure = generateItem();
            player.items.push(treasure);
            alert(`你获得了${treasure}!`);
            break;
        }
        player.health -= dragonAttack;
        alert(`你受到了龙的攻击,受到了${dragonAttack}点伤害!你的健康值为${player.health}。`);
    }
    if (player.health <= 0) {
        alert('你被龙击败了,冒险结束。');
    }
    player.location = '龙穴';
}

// 探索洞穴
function exploreCave() {
    player.location = '洞穴';
    alert('你发现了一个深邃的洞穴,里面似乎隐藏着一些秘密。');
    const event = Math.random();
    if (event < 0.5) {
        alert('你在洞穴中发现了一个神秘的宝箱,里面有丰富的财宝!');
        const coins = Math.floor(Math.random() * 50) + 20;
        player.items.push(`${coins} 金币`);
        alert(`你获得了${coins} 金币!`);
    } else {
        alert('你不小心触发了洞穴中的陷阱,受到了一些伤害。');
        const damage = Math.floor(Math.random() * 30) + 10;
        player.health -= damage;
        alert(`你受到了${damage}点伤害!你的健康值为${player.health}。`);
    }
    player.location = '洞穴';
}

// 休息函数
function rest() {
    player.location = '安全地点';
    const healing = Math.floor(Math.random() * 30) + 10;
    player.health += healing;
    alert(`你找到了一个安全的地方休息,你的健康值恢复了${healing}点!你现在的健康值为${player.health}。`);
    player.location = '安全地点';
}

// 离开函数
function leave() {
    const decision = prompt('你确定要离开这个神秘的岛屿吗?(是/否)').toLowerCase();
    if (decision === '是') {
        alert('你离开了岛屿,冒险结束。');
        player.health = 0; // 结束游戏循环
    } else {
        alert('你决定留在岛上继续探险。');
    }
}

// 生成随机物品
function generateItem() {
    const items = ['魔法药水', '宝藏地图', '魔法武器', '神秘护身符', '古老的奇石', '龙之鳞片'];
    const randomIndex = Math.floor(Math.random() * items.length);
    return items[randomIndex];
}

演示:

https://demo.8i5.net/tanxian.html

温馨提示 : 非特殊注明,否则均为©李联华的博客网原创文章,本站文章未经授权禁止任何形式转载;IP地址:3.142.194.55,归属地:俄亥俄州Dublin ,欢迎您的访问!
文章链接:https://www.ooize.com/javascript-implementation-of-an-adventure-mini-game.html
Popup Image

通知

本站原则上是免费提供技术支持,但是服务器维护和运营成本高,可以实行自由赞助:赞助

Loading...