猫史档案馆


嗯哼君 渠源

嗯哼君 渠源

Lv.1

看到我请提醒我“济南外国语学校”

获赞:380收藏:134浏览:15150作品收藏:200

签名:中二救世,略带更文(×) 做一只快乐的鸽子(√)

回复帖子评论
上一页33 页 / 共 42下一页

【教程】表情包-恶搞-新闻 中回复

center_image

2020-04-28T08:45:54 点赞:0

如何正确的提问题 小白必看! 中回复

emotion_编程猫_点赞

2020-04-28T09:14:26 点赞:0

【社区星推荐】第11期·嗯哼君 渠源 中回复

我觉得应该改为:有无读过拙作呢?若有,还请提出改进意见啊。若无,还不赶紧去读!?!emotion_doge

2020-04-28T17:16:14 点赞:0

【Python作品分享】RPG【求助帖】 中回复

这又不是函数,你把

副本 = [1, 3]

放到最后干啥……

2020-04-29T07:19:34 点赞:0

【Python作品分享】RPG【求助帖】 中回复

改成这样:

#开始进入Python的世界
def start():
    玩家名 = input('你的名字?')
    print('哦,原来是', 玩家名)
    print('那么', 玩家名)
    关键决策1 = input('你是否愿意救救我们?')
    if (关键决策1 == '是' or 关键决策1 == '否'):
        if (关键决策1 == '否'):
            print('好吧,再见')
        else:
            道具 = [9, 1]
            print('那么,这把铁剑就给你了')
            道具.append('铁剑')
        print('请去周围的小树林里捉些猪')
            print('(去周围的小树林就输入1)')
            副本['1'] = '小树林副本'
            已解锁地点 = '1'
            传送地点 = input()
            print(传送地点)
            print(副本[传送地点])
            if (传送地点 == 已解锁地点 or 传送地点 < 已解锁地点):
                print('-------', 副本[传送地点], '--------')
            else:
                print('你怎么知道这个地方的?!')
    else:
        print('你说啥?')

副本 = [1, 3]
start()

不愿用函数就提到前面:

#开始进入Python的世界
副本 = [1, 3]
玩家名 = input('你的名字?')
print('哦,原来是', 玩家名)
print('那么', 玩家名)
关键决策1 = input('你是否愿意救救我们?')
if (关键决策1 == '是' or 关键决策1 == '否'):
    if (关键决策1 == '否'):
        print('好吧,再见')
    else:
        道具 = [9, 1]
        print('那么,这把铁剑就给你了')
        道具.append('铁剑')
        print('请去周围的小树林里捉些猪')
        print('(去周围的小树林就输入1)')
        副本['1'] = '小树林副本'
        已解锁地点 = '1'
        传送地点 = input()
        print(传送地点)
        print(副本[传送地点])
        if (传送地点 == 已解锁地点 or 传送地点 < 已解锁地点):
            print('-------', 副本[传送地点], '--------')
        else:
            print('你怎么知道这个地方的?!')
else:
    print('你说啥?')

2020-04-29T07:21:27 点赞:0

【社区星访谈】预告 中回复

这不就和官方的一样吗emotion_doge

2020-04-29T11:06:59 点赞:0

求大家推荐一本关于html的书 中回复

光HTML挺简单的,但你要是选择前端的话,还需要掌握至少CSS/JavaScript

HTML和CSS看看菜鸟教程那种的就行,JavaScript可以去翻翻书?(不过本人还是靠着那些手册过活2333)

2020-04-29T18:31:56 点赞:1

【代码岛3.0科普贴】如何用代码将所有实体实体化? 中回复

个人偏向于直接用if筛选,就是把第二个改为如下:

world.querySelectorAll('*').forEach((e)=>{
    if(! e.isPlayer){
        e.collides=true;
        e.fixed=true;
    }
})

PS:我的《贪吃蛇作战》审核通过后,我也会将源代码全部共享(最好能做个教程?),一起为box3的教程领域开辟道路鸭emotion_doge

2020-04-29T23:03:41 点赞:1

你发mc和mn有关的帖子怎样算违规? 中回复

任何涉及到两个游戏的评价言论都有引战的嫌疑哦,所以说只有极个别的不涉及任何比较、诋毁、言论的帖子可以,或者说单纯地做作品等

2020-04-30T12:03:48 点赞:0

【代码岛3.0双周创作赛!第2届!】今日最后提交! 中回复

所以说吉吉喵,万一我在参赛的时候代码又崩了,该怎么办emotion_doge

2020-04-30T20:50:42 点赞:1

【第二届代码岛创作赛-五光十色-炫酷之队进展报道贴】 中回复

幻梦战队的地图哦(当然只能截一部分):

center_image

此外还有超多的功能与代码(虽然我不介意开源,但毕竟是比赛,等比完了再开源也不迟):

center_image

2020-05-01T20:20:34 点赞:0

【灌水灌水+接R姐】一人说一句可以让你的主角哭出来的话 中回复

https://shequ.codemao.cn/wiki/novel/cover/61302《玊兽·前传》

金仔:没有翅膀又如何?不想想你是如此幸福:你的父母还在天上守护着你,你的所有朋友也都一心为了你好……你还有什么理由不去努力、去暗自消沉!

 

PS:系列另外三位主角:

志鑫:“放心,这盛世如你所愿!”

燧影:“活该单身emotion_doge

清皓:“醒醒啦,你可是杀了你老婆啊emotion_doge

2020-05-01T21:02:11 点赞:0

我来编程猫了! 中回复

生日快乐鸭,一起加油进步!

emotion_编程猫_加油

2020-05-02T22:50:08 点赞:0

hi hi,初次见面 中回复

一起加油啊

emotion_编程猫_加油

2020-05-02T22:55:58 点赞:0

【BOX3科普贴】怎样做出一个贪吃蛇大作战?源代码全公开! 中回复

原谅我的多次console,我有个坏习惯就是不喜欢删去,而是直接加上//emotion_doge

2020-05-02T23:11:08 点赞:0

【BOX3科普贴】怎样做出一个贪吃蛇大作战?源代码全公开! 中回复

 

 

最终精简版:

console.log("Link Start!");//桐老爷专属水印[doge]

const SECONDS_PER_TICK = 1000 / 128; 
const ROUND_TIME = 200 * SECONDS_PER_TICK;//每局游戏时长
const MIN_PLAYERS = 2;//玩家数量下限
const BLACK_TIME = 250 //刷新黑方块的时间,默认一秒钟4个
const GRID_X = 128;//两个都是地图边界
const GRID_Z = 128;
var t;
world.gravity *= 10;

const TEAMS = [
    { r: 1, g: 0, b: 0, v: voxels.id('red_light'),      n: '红队',       score: 0, },
    { r: 0, g: 1, b: 0, v: voxels.id('green_light'),    n: '绿队',     score: 0, },
    { r: 0, g: 0, b: 1, v: voxels.id('blue_light'),     n: '蓝队',      score: 0, },
    { r: 1, g: 0, b: 1, v: voxels.id('purple'),         n: '紫队',   score: 0, },
    { r: 0, g: 1, b: 1, v: voxels.id('indigo_light'),   n: '青队',      score: 0, },
    { r: 1, g: 1, b: 0, v: voxels.id('yellow_light'),   n: '黄队',    score: 0, },
];


world.onPlayerJoin(({ entity }) => {
    //初始化各参数
    entity.player.Len = 1
    //因为刚开始玩家就有一条尾迹,所以说不是0而是1
    entity.player.All = []
    //因为尾迹的添加是在触碰后再添加的,所以说目前为空列表
});

// 辅助函数,用于随机打乱一个数组(未魔改)
function shuffle (array) {
    for (let i = 1; i < array.length; ++i) {
        const temp = array[i];
        const x = (Math.random() * (i + 1)) | 0;
        array[i] = array[x];
        array[x] = temp;
    }
    return array;
}

async function startGame () {
    // 将地面初始化,全部变成white
    for (let j = 0; j < GRID_Z; ++j) {
        for (let i = 0; i < GRID_X; ++i) {
            voxels.setVoxel(i, 8, j, 'white');
        }
    }
    
    // 等待玩家进入(未魔改)
    while (world.querySelectorAll('player').length < MIN_PLAYERS) {
        world.say('等待其他玩家加入...');
        await sleep(1000);
        world.say('2个玩家立即开始');
        await world.nextPlayerJoin();
    }

    // 足够玩家加入后,就开始倒计时(未魔改)
    for (let i = 3; i > 0; --i) {
        world.say(i + '...');
        await sleep(1000);
    }
    world.say('游戏开始!');
    putb()
    //putb()即"put black",用于随机放置黑色方块
    
    // 每局都随机打乱队伍(喵)
    const players = shuffle(world.querySelectorAll('player'));
    
    // 设置玩家的颜色、分值和初始位置
    function setTeam (p, t) {
        p.player.color.r = t.r;
        p.player.color.g = t.g;
        p.player.color.b = t.b;
        p.position.x = Math.random() * GRID_X;
        p.position.y = 30;
        p.position.z = Math.random() * GRID_Z;
        //新加了一个v的私人变量(储存他的颜色),用于下面的队伍判断
        p.player.v = t.v;
        //初始化分数(似乎有点多余了?但也不敢随意删去hhhc)
        p.player.Len = 1
        //初始化身体(似乎有点多余了?但也不敢随意删去hhhc)
        p.player.All = []
    }

    // 获得初始团队(未魔改……吧)
    const teams = players.map((p, i) => {
        t = TEAMS[i % TEAMS.length]
        setTeam(p, t);
        return t;
    })
    
    //当玩家接触到地面任意方块时,更新该方块的颜色
    const contactHandler = world.onVoxelContact(({voxel, entity, x, y, z }) => {
        //获得该玩家的索引idx:从所有的玩家列表中获得第一个(唯一一个)符合条件的玩家)
        //调用私人变量时要用entity.player.xxx
        const idx = players.indexOf(entity);
        if (idx < 0) {
            //indexOf返回-1时表明未找到
            return;
        }
        if (voxel === voxels.id('black')){
            //如果染色的方块为black(食物)
            entity.player.Len ++ ;
            //长度增加
            entity.player.All[entity.player.All.length] = [x, y, z];
            //向列表末尾添加染色方块的位置
            //因为他会让玩家变长,所以说不用删除末尾的方块(举个例子:大家都在退步,你不退步就是进步)
        } 
        else if (voxel === voxels.id('white')){
            //如果染色的方块为white(空地)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //将列表第一项填充为white(末尾减少)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            if (entity.player.All.length != 1){
                //喵也不知道哪来的BUG
                entity.player.All.shift()
            }
            //之前用的第一项,看不懂忽略即可:entity.player.All[-(entity.player.Len + 1)]
        } 
        else if (voxel === entity.player.v){
            //如果染色的方块为自己的颜色(遗留痕迹/尾迹)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //将列表第一项填充为white(尾迹减少)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            if (entity.player.All.length != 1){
                //同上,喵也不知道哪来的BUG
                entity.player.All.shift()
            }
            //同上,第一项:entity.player.All[-(entity.player.Len + 1)]
        else{
            //如果染色的方块不为black、white或自己的颜色(其他人)
            //获取目标(将要被染色)的方块
            mubiao = voxels.getVoxel(x,y,z);
            for(i=0; i<TEAMS.length; i++){
                //遍历查找该队
                if (mubiao === TEAMS[i].v){
                    for(let j=0; j<players.length; j++){
                        //遍历查找属于这个队伍的玩家
                        if (players[j].player.v == mubiao){
                            //如果颜色相匹配(与上方的player.v相对应)
                            players[j].position.x = Math.random() * GRID_X;
                            players[j].position.y = 30;
                            players[j].position.z = Math.random() * GRID_Z;
                            //GO DIETH!
                            restart(players[j])
                            
                        };
                    };

                };
            };
            
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //将列表第一项填充为white(末尾减少)
            if (entity.player.All.length != 1){
                //喵也不知道哪来的BUG×3
                entity.player.All.shift()
            }

        }
        const t = teams[idx];
        voxels.setVoxelId(x, y, z, t.v);
    });

    world.onVoxelSeparate(({entity}) => {
        //当有玩家停止接触方块(即有可能掉出虚空)
        if(entity && entity.isPlayer){
            if(entity.position['y'] < 9){
                //如果y坐标小于9(玩家是10)
                restart(entity);
                //GO DEATH!
            }
        }
    });


    // 新玩家加入,会被随机分配到一个队伍(未魔改)
    const joinHandler = world.onPlayerJoin(({entity}) => {
        const t = TEAMS[(Math.random() * teams.length) | 0];
        setTeam(entity, t);
        teams.push(t);
        players.push(entity)
    });
    
    // 每局游戏会在计时到达时结束。(未魔改)
    const endTick = world.currentTick + ROUND_TIME;
    
    // 检测游戏是否进行中(未魔改)
    function gameInProgress () {
        let numActivePlayers = 0;
        for (let i = 0; i < players.length; ++i) {
            if (!players[i].destroyed) {
                numActivePlayers += 1;
            }
        }
        return world.currentTick < endTick && numActivePlayers >= MIN_PLAYERS;
        //返回一布尔值,是否游戏中
    }
    
    
    // 当游戏结束时(未魔改)
    while (gameInProgress()) {
        // 等待 1 Tick
        await world.nextTick();
    }
        
        
    // 计算各队伍的分数(其实就是把一队的玩家的Len加起来)
    for (let i = 0; i < TEAMS.length; ++i) {
        //遍历各队伍计算分数
        for (let j = 0; j < players.length; j++){
            //遍历各玩家,找出这一个队伍的
            if (players[j].player.v == TEAMS[i].v){
                //如果该玩家颜色与该队伍颜色一样
                TEAMS[i].score += players[j].player.Len;
                //将队伍分数加上该玩家分数
            }
        }
    }
    // 清除事件处理器(未魔改,似乎还要把putb.cancel()加上的,但咱也不敢动(小心翼翼))
    contactHandler.cancel();
    joinHandler.cancel();

    // 重置玩家颜色(未魔改)
    for (let i = 0; i < players.length; ++i) {
        const c = players[i].player.color;
        c.r = c.g = c.b = 1;
    }
    world.say('本局游戏结束!');
    await sleep(5000);

    // 宣布获胜队伍(未魔改)
    TEAMS.sort((a, b) => b.score - a.score);
    world.say(`恭喜 ${TEAMS[0].n} 胜利!!`);
    await sleep(10000);
    for(let i=0;i<TEAMS.length;i++ ){
        TEAMS[i].score = 0
    }
   
}

// 无限循环游戏(未魔改)
async function gameLoop () {
    while (true) {
        await startGame();    
    }
}

async function putb(){
    //刷黑方块
    voxels.setVoxelId((Math.random() * GRID_X), 8, (Math.random() * GRID_Z), voxels.id('black'));
    await sleep(BLACK_TIME)
    putb()
    //无限套娃喵好!(滑稽)
};

async function restart(f_player){
//用于处理当玩家喵后的还原(包括掉下虚空与被别人触碰尾迹,似乎可以用forEach重构的)
    console.log(f_player.player.name + "喵了")
    f_player.player.Len = 1;
    f_player.player.All = []
    for(let ij=0; ij<GRID_X; ij++){
        //通过遍历还原所有方块
        for(let ji=0; ji<GRID_Z; ji++){
            //c我电脑要炸了,*龙门粗口*,谁想试试就把注释符号删去:console.log(ij+ "," +ji)
            if(voxels.getVoxel(ij,8,ji) == f_player.player.v){
                //如果该方块为该玩家的颜色
                //s**t:console.log("开始还原颜色")
                voxels.setVoxelId(ij, 8, ji, voxels.id('black'));
            };

        };
                                
    };
}

gameLoop();

2020-05-03T11:25:54 点赞:2

【kitten3.0】测试一下你是大佬吗? 中回复

我啥都不是,我是萌新emotion_doge

2020-05-03T12:38:21 点赞:0

有关Python的一个问题 中回复

一般来说没有,单双引号只适用于区别“括号中的括号”

2020-05-03T12:41:57 点赞:0

【第二届代码岛3.0创作赛】色彩之城 中回复

预告文案:

传言道:“在彩虹的彼端,有一个奇妙的地方:那里汇集世间的色彩,集天地之精华,世人们称其为“色彩次元”……而由于四洲的崩坏,色彩也逐渐分离,逐渐形成了现在的颜色。在那里生活着的人们,也将次元分为了四个空间:极彩之城、虹光之塔、迷石古堡及最神秘的‘第四区域’。每个次元都会有他们背后的故事,等待着你们的挖掘……你是选择流连在色彩缤纷的房屋之间,还是选择攀爬气势如虹的通天之塔,亦或者探秘隐藏在石砖之间的秘密,还是揭开‘第四区域’的谜团?这一切,由你来决定!”

——未完待续……

2020-05-03T15:22:02 点赞:0

【编程猫的极大问题】一个老用户 中回复

一个18年来的萌新虽然很赞同,但是却瑟瑟发抖不敢发表言论emotion_doge

2020-05-03T21:01:32 点赞:0

啊……怎么办 中回复

把图片转换成代码试试看?

2020-05-03T21:28:39 点赞:0

最近我是否在论坛太过于活跃? 中回复

某源表示很赞emotion_doge

2020-05-03T21:38:04 点赞:0

【社区星推荐】第11期·嗯哼君 渠源 中回复

怎么看大家都是在自谦啊,昂扬地抬起头来,为了梦想而努力,梦想才终会实现啊

emotion_编程猫_加油

2020-05-03T22:33:07 点赞:6

【暂退】碳酸变成气体飘走了(?) 中回复

又有一个退猫的了……先是阿代,再是芝士,现在的书评区只剩下我孤独的一个人了啊……

——————

好吧开个玩笑,随时欢迎回来接受催更哦emotion_doge

2020-05-03T22:43:46 点赞:0

如何不让网络喷子搞垮你的心态 中回复

说白了,一群xxs嫌作业不够多,到处没素质没家教罢了emotion_doge

2020-05-04T09:42:57 点赞:1

【企鹅日记】🔰盘点编程猫三大你不知道的隐蔽网站🔰 中回复

第二个怎么和后台的登录界面那么像呢……emotion_doge

2020-05-04T10:02:40 点赞:0

测试你在中国所有少儿编程社区的级别 中回复

萌新(达成共识emotion_doge

2020-05-05T09:54:09 点赞:0

【社区星推荐】第11期·嗯哼君 渠源 中回复

期待下一位社区星推荐的回答emotion_doge

2020-05-05T09:56:26 点赞:0

彩虹快跑被毁了 中回复

2333

2020-05-05T14:49:57 点赞:0

软糖的摸底测试。。。【别慌,不是考试.....】 中回复

众所周知,我是萌新emotion_doge

2020-05-05T15:51:28 点赞:0