猫史档案馆


星辰_零柒

星辰_零柒

Lv.1

QQ: 1409669855 神奇代码岛年度创作者

获赞:126收藏:15浏览:1397作品收藏:10

签名:QQ: 1409669855 神奇代码岛·年度创作者 对于代码岛商业化,从盼望到失望。

回复帖子评论
上一页3 页 / 共 24下一页

我生病了55555 中回复

我,体温36.5,学校:隔离14天!我:为啥?学校:因为

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

我去了趟喵。

2021-12-17T22:34:32 点赞:0

初赛时间到!决赛的主题玩点不一样的~ 中回复

险些没做完

2021-12-21T16:20:34 点赞:0

紧 急 招 人 中回复

即使毁图我也能看到明天的太阳因为我远在他乡。

2021-12-21T17:22:13 点赞:0

居然有人删代码,葫芦籽,你喵定了 中回复


要顶
必须顶
不得不顶
用尽全力顶
再加上千斤顶
总之把它顶到顶
接着使出葵花宝顶
就算顶到史前也要顶
老子看了会用道德经顶
孔子亲自拜你为师天天顶
秦始皇站在阿房宫上使劲顶
汉高祖挥师杀向东罗马为你顶
吕布抛弃了貂禅而选择了帮你顶
张三丰见了后用太极拳九式全力顶
左冷禅召开武林盟主大会商讨如何顶
西门吹雪从此学会了最强一招剑神一顶
龙剑飞的儒来神掌最后一式改为万佛朝顶
陆小凤从此再也不管闲事了而专门来为你顶
四大名捕四面出击看天下还有没有人敢不在顶
顶到阎罗王说我制造噪音我刁根烟看看他继续顶
顶到火山喷发太平洋海啸我还要继续往死里顶
顶到益阳地震山崩地裂地下水泛滥我还要顶
顶到地下水喷发造成洪灾损失惨重我也顶
要是你觉得敢兴趣你也可以过来一起顶
要是你看我不爽我没办法还要继续顶
要是 C T敢过来阻止我就更加要顶
要是别人见了骂我傻我还是要顶
要是踩到我脚骨折我也继续顶
要是地面凹了我不管继续顶
要是天真塌下来了继续顶
就算天塌下来我都要顶
就算鸡店倒闭也要顶
就算鞋子烂也要顶
我用尽全力去顶
我非常用力顶
我很用力顶
我用力顶
我再顶
顶顶

2021-12-21T17:59:49 点赞:0

为什么呀,皮肤问题 中回复

我恐怕是第一个报告此问题的

2021-12-21T18:07:31 点赞:0

【公告】拒绝喵行为 中回复

沙发!

2021-12-22T14:40:33 点赞:0

我发明了皮肤编辑软件)) 中回复

求链接

2021-12-23T13:50:03 点赞:2

好消息!他的号终于被封了! 中回复

撒花!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

2021-12-24T17:33:53 点赞:0

找长期合作()()()() 中回复

床()

2021-12-24T17:34:23 点赞:0

找长期合作()()()() 中回复

我可以吗

2021-12-24T17:34:30 点赞:0

【神奇代码岛】动作模拟器文档V2 中回复

床()

2021-12-24T17:42:21 点赞:0

皮肤滞销,帮帮阿吉! 中回复

没有啊!

2021-12-24T21:42:15 点赞:1

皮肤滞销,帮帮阿吉! 中回复

岛三的老玩家一个个都走了,你就照顾这些能给你刷流量的萌新就行了,赚个流量还说的这么好听😡

2021-12-27T11:18:52 点赞:3

终于通关啦,不服来战。 #山峰之巅 中回复

切,我5分钟

2021-12-27T14:37:25 点赞:0

找长期合作()()()() 中回复

我可以吗,建筑,策划都不错

2021-12-29T08:58:59 点赞:0

每日一个岛3建图小技巧:如何制作氛围倒计时? 中回复

天花板

2021-12-29T10:54:01 点赞:0

每日一个岛3建图小技巧:如何制作氛围倒计时? 中回复

《章鱼游戏》倒计喵码公开

2021-12-29T10:54:33 点赞:0

对不起!!! 中回复

嗯,通过创作节获得皮肤才是真本事,加油!

2021-12-29T14:15:52 点赞:0

对不起!!! 中回复

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E5%8A%A0%E6%B2%B9.gif"alt="emotion_编程猫_加油"

2021-12-29T14:16:17 点赞:0

一道密码破解题的编程算法 中回复

沙发!

2021-12-29T16:28:16 点赞:0

源码极客和星辰大海来做图!!! 中回复

你再发帖我也不刷论坛

2021-12-29T16:36:48 点赞:1

真的是学霸题? 中回复

沙发,学霸题,数正方体~

2021-12-31T18:23:39 点赞:0

【新年创作节写的剧情策划】tiger 中回复

沙发

2021-12-31T18:23:56 点赞:0

啊!太爽了! 中回复

center_image

2021-12-31T18:25:09 点赞:0

关于碳基生物的小号劫持吉吉喵万圣创作节介绍帖评论区一事极客的看法 中回复

??

2021-12-31T18:27:56 点赞:0

某吉发的章鱼游戏贴解析 中回复

当我遇见王路飞:

星辰:你好

王路飞:你好~         (形式一片大好)

星辰:你的章鱼游戏好厉害啊!

王路飞:谢谢~             (非常友好)

星辰:那个封面.......

王路飞:那是会画画的小伙伴画的哦

星辰:好厉害!

星辰:这个作品做了多长时间?几个人做的?      (一针见血)

王路飞:......

系统:爱出海的王路飞离开了地图

 

 

 

星辰评价:?????

 

2021-12-31T18:32:32 点赞:2

请大家猜猜我在哪里 中回复

在你的图里

2021-12-31T18:51:40 点赞:0

有大佬教植物大战僵尸吗?求程序! 中回复

你是说岛三的吗?

 

2022-01-16T11:11:20 点赞:0

有大佬教植物大战僵尸吗?求程序! 中回复

const GAME_END_TIME = 10 * 60; // 游戏结束时间, 单位秒
const MIN_GAME_PLAYER_NUM = 2; // 最小游戏人数
const GAME_HALFTIME = 5; // 两局游戏间隔时间, 单位秒
const GROUND_Y = 9; // 地面的Y坐标
const PLAYER_HEIGHT = 4; // 玩家高度
const XZ_BEGIN = 1; // x和z坐标的开始值
const XZ_END = 127; // x和z坐标的结束值
const ZOMBIE_PROBABILITY = 0.1; // 僵尸出现几率
const HUMAN_DAMAGE = 10; // 人类武器伤害
const HUMAN_DISTANCE = 30; // 人类武器距离
const ZOMBIE_BEAT_BACK_FORCE = 3; // 僵尸被击退的力道

// 实体属性
const ENTITY_ATTRIBUTES = {
    human: { // 人类的实体属性
        hp: 100, // 血量
        maxHp: 100, // 最大血量
        enableDamage: false, // 关闭伤害
    },
    zombie: { // 僵尸的实体属性
        hp: 1000,
        maxHp: 1000,
        enableDamage: true, // 关闭伤害
    },
};
// 玩家属性
const PLAYER_ATTRIBUTES = {
    human: { // 人类的玩家属性
        color: new Box3RGBColor(1, 1, 1), // 颜色
        walkSpeed: 0.22, // 走路最大速度
        walkAcceleration: 0.19, // 走路加速度
        runSpeed: 0.4, // 跑步最大速度
        runAcceleration: 0.35, // 跑步加速度
        jumpPower: 0.96, // 一段跳力量
        doubleJumpPower: 0.9, // 二段跳力量
    },
    zombie: { // 僵尸的玩家属性
        color: new Box3RGBColor(0, 1, 0),
        walkSpeed: 0.4,
        walkAcceleration: 0.3,
        runSpeed: 0.8,
        runAcceleration: 0.6,
        jumpPower: 1.2,
        doubleJumpPower: 1.1,
    },
};
// 武器设置
const WEAPON = {
    human: {
        mesh: world.querySelector('.人类武器').mesh,
        parts: [Box3BodyPart.RIGHT_HAND],
        scale: new Box3Vector3(0.2, 0.3, 0.3), // 调整大小
        orientation: new Box3Quaternion(0, 1, 0, 0).rotateX(Math.PI / 2).rotateY(-Math.PI / 2),
        offset: new Box3Vector3(0, -0.45, 0), //调整位置
    },
    zombie: {
        mesh: world.querySelector('.僵尸武器').mesh,
        parts: [Box3BodyPart.LEFT_HAND, Box3BodyPart.RIGHT_HAND],
        orientation: new Box3Quaternion(0, 1, 0, 0).rotateZ(-Math.PI / 2),
        scale: new Box3Vector3(0.2, 0.2, 0.2),
        offset: new Box3Vector3(0, -0.3, 0),
    },
};

am; // 最终队伍
let playerScore; // 玩家分数
let gameEndResolve; // 用于结束游戏的函数
// 主函数
(async function main() {
    // 打印开始时间的日志
    console.log(`-------[${new Date().toISOString()}]--------`)
    setup(); // 初始化const spawnPoints = []; // 出生点坐标
const zombies = new Set();
const human = new Set();
let finalTe
    // 主循环, 不断检测并开始新的游戏
    for(;;await sleep(GAME_HALFTIME * 1000)) {
        // 检测人数
        if (world.querySelectorAll('player').length < MIN_GAME_PLAYER_NUM) {
            world.say(`当前人数不足${MIN_GAME_PLAYER_NUM}人, 无法开始游戏!`);
            continue;
        }
        // 倒计时
        world.say('游戏即将开始!');
        for (let i = 0; i > 0; i--) {
            await sleep(1000);
            world.say(`${i}...`);
        }
        await start();
    }
})();

// 开始游戏
async function start() {
    const players = world.querySelectorAll('player');
    // 初始化玩家分数
    playerScore = { '': -1 };
    finalTeam = {};
    for (const entity of players) {
        playerScore[entity.player.name] = 0;
    }
    // 计算僵尸数量
    const zombieNum = Math.ceil(ZOMBIE_PROBABILITY * players.length);
    for (let i = 0; i < zombieNum; i++) {
        const entity = rando喵elete(players); // 从玩家列表中随机删除一名玩家作为僵尸
        setPlayer(entity, 'zombie');
        setWeapon(entity, 'zombie');
        zombies.add(entity);
        finalTeam[entity.player.name] = 'zombie';
        entity.player.directMessage('你是僵尸, 快去触碰人类来感染他们!');
    }
    for (const entity of players) {
        human.add(entity);
        setWeapon(entity, 'human');
        finalTeam[entity.player.name] = 'human';
        entity.player.directMessage('你是人类, 用武器消灭僵尸, 并不要被他们碰到!');
    }
    await new Promise(async (resolve) => {
        gameEndResolve = resolve; // 设置游戏结束函数
        await sleep(GAME_END_TIME * 1000); // 等待GAME_END_TIME秒
        resolve(); // 如果游戏没有提前结束, 就会由于到时间而结束
    });
    // 计算分数
    const winner = zombies.size > human.size ? 'zombie' : 'human';
    let best = '';
    for (const name in playerScore) {
        if (finalTeam[name] === winner && playerScore[name] > playerScore[best]) {
            best = name;
        }
    }
    const winnerName = winner === 'zombie' ? '僵尸' : '人类';
    const winnerScoreName = winner === 'zombie' ? '感染数' : '击杀数';
    world.say(`本局游戏${winnerName}获胜, ${best}以${playerScore[best]}的${winnerScoreName}成为MVP!`);
    // 僵尸恢复人类
    for (const entity of zombies) {
        initPlayer(entity);
    }
    zombies.clear(); // 清空僵尸
}

// 游戏初始化
function setup() {
    // 遍历地图, 寻找合适出生点
    for (let x = XZ_BEGIN; x < XZ_END; x++) {
        for (let z = XZ_BEGIN; z < XZ_END; z++) {
            let i = 0;
            while (i < PLAYER_HEIGHT && voxels.getVoxel(x, i + GROUND_Y, z) === 0) i++;
            // 如果(x, GROUND_Y, z)有足够空间容纳玩家, 则将其纳入出生点
            if (i === PLAYER_HEIGHT) {
                spawnPoints.push([x, GROUND_Y + 2, z])
            }
        }
    }
    // 删除所有临时实体
    world.querySelectorAll('.临时').forEach((e) => e.destroy());

    // 初始化人类属性
    world.onPlayerJoin(({entity}) => {
        initPlayer(entity);
    });

    // 人类射击
    world.onPress(({ entity, button, raycast: { hitEntity, direction, distance } }) => {
        if (!(button === 'action0' && human.has(entity) && zombies.has(hitEntity))) return;
        // 设置击中效果
        hitEntity.velocity.x += direction.x * ZOMBIE_BEAT_BACK_FORCE;
        hitEntity.velocity.y += 0.5;
        hitEntity.velocity.z += direction.z * ZOMBIE_BEAT_BACK_FORCE;
        // 计算伤害并应用
        const basicDamage = Math.max(1, HUMAN_DAMAGE * Math.min(1, HUMAN_DISTANCE / distance));
        const damage = Math.ceil(basicDamage * (1 + Math.random() * 0.3));
        hitEntity.hurt(damage, { attacker: entity });
    });

    // 僵尸喵
    world.onDie(({entity, attacker}) => {
        if (!(human.has(attacker) && zombies.has(entity))) return;
        world.say(`@${attacker.player.name}击杀了僵尸${entity.player.name}.`);
        playerScore[attacker.player.name]++; // 人类分数+1
        attacker.player.directMessage(`击杀数: ${playerScore[attacker.player.name]}`);
        zombies.delete(entity); // 移除僵尸
        initPlayer(entity); // 恢复为人类, 可观战
        if (zombies.size === 0) gameEndResolve(); // 判断是否还有僵尸, 否则结束游戏
    });
    // 玩家离开
    world.onPlayerLeave(({entity}) => {
        // 从僵尸或人类中移除离开的玩家, 并判断游戏是否结束
        if (human.has(entity)) {
            human.delete(entity);
            if (human.size === 0) gameEndResolve();
        } else if (zombies.has(entity)) {
            zombies.delete(entity);
            if (zombies.size === 0) gameEndResolve();
        }
    });
    // 人类感染
    world.onEntityContact(({entity, other}) => {
        if (!(human.has(entity) && zombies.has(other))) return; // 只处理人类和僵尸碰撞
        world.say(`@${entity.player.name}被${other.player.name}感染, 成为了新的僵尸.`);
        playerScore[other.player.name]++; // 僵尸分数+1
        playerScore[entity.player.name] = 0; // 人类分数清零
        other.player.directMessage(`感染数: ${playerScore[other.player.name]}`);
        removeWearable(entity); // 移除人类武器
        setPlayer(entity, 'zombie'); // 设置僵尸属性
        setWeapon(entity, 'zombie'); // 设置僵尸武器
        finalTeam[entity.player.name] = 'zombie'; // 跟新最终阵营
        zombies.add(entity); // 添加到僵尸列表
        human.delete(entity); // 从人类列表中移除
        if (human.size === 0) gameEndResolve(); // 判断是否还有人类, 否则结束游戏
    });

}

// 移除装扮
function removeWearable(entity) {
    WEAPON.zombie.parts.forEach((part) => {
        const wearables = entity.player.wearables(part); // 查找所有可穿戴物品
        for (const wearable of wearables) {
            entity.player.removeWearable(wearable); // 移除可穿戴物品
        }
    });
}

// 装备武器
function setWeapon(entity, camp) {
    WEAPON[camp].parts.forEach((part) => entity.player.addWearable({
        bodyPart: part, // 装备在右手上
        mesh: WEAPON[camp].mesh, // 设置武器mesh
        orientation: WEAPON[camp].orientation, // 设置方向
        scale: WEAPON[camp].scale, // 设置大小
        offset: WEAPON[camp].offset, // 设置位置
    }));
}

// 初始化玩家为人类
function initPlayer(entity) {
    entity.position.set(...randomPick(spawnPoints)); // 随机位置
    // entity.player.cameraMode = 'FPS'; // 设置FPS模式
    setPlayer(entity, 'human'); // 初始化为人类属性
    removeWearable(entity); // 移除已装备的武器
}

// 设置玩家为人类或僵尸
function setPlayer(entity, camp = 'human') {
    Object.assign(entity, ENTITY_ATTRIBUTES[camp]); // 复制实体属性
    Object.assign(entity.player, PLAYER_ATTRIBUTES[camp]); // 复制玩家属性
}

// 随机数组下标
function randomIndex(arr) {
    return Math.floor(Math.random() * arr.length);
}

// 随机选取数组中的元素
function randomPick(arr) {
    return arr[randomIndex(arr)];
}

// 随机删除数组中的元素
function rando喵elete(arr) {
    return arr.splice(randomIndex(arr), 1)[0];
}

2022-01-16T11:13:09 点赞:0

有没有不用登陆的录屏软件 中回复

EV录屏

 

2022-01-17T14:49:35 点赞:0