MC命令方块小游戏 记忆时间
命令方块是很神奇的哦,用命令方块能制作出非常有趣的游戏,今天游戏园小编就为大家带来了命令方块制作的记忆游戏,喜欢的玩家可以来看看哦!
有一个游戏大家一定见过 一些牌两两成双 背对着你 你一次翻开两张 如果一样就会消失 不一样就会翻回去
我就用cb做了这个游戏
玩之前 先放64个展示框 位置随意
然后按下按钮即可
左键右键都能控制 但建议右键 因为展示框虽然用来显示画片 但是大小仍和平时一样 如果左键有可能破坏承载用的方块
亮点:在翻开两个后会展示一段时间后自动翻回去 但是这时仍然可以选择牌 包括翻开的牌
亮点2:点击翻开的牌可以翻回去
使用方法:
先任意放置64个展示框
按下按钮 (这也是复位键 一旦出现故障立刻猛击该按钮)
左或右键翻开或翻回牌
翻开会展示2.5s后自动翻回 当然这不会妨碍你继续游戏
一致的牌会自动消失 所有牌都消失后游戏自动关闭
截图
命令方块是很神奇的哦,用命令方块能制作出非常有趣的游戏,今天游戏园小编就为大家带来了命令方块制作的记忆游戏,喜欢的玩家可以来看看哦!
有一个游戏大家一定见过 一些牌两两成双 背对着你 你一次翻开两张 如果一样就会消失 不一样就会翻回去
我就用cb做了这个游戏
玩之前 先放64个展示框 位置随意
然后按下按钮即可
左键右键都能控制 但建议右键 因为展示框虽然用来显示画片 但是大小仍和平时一样 如果左键有可能破坏承载用的方块
亮点:在翻开两个后会展示一段时间后自动翻回去 但是这时仍然可以选择牌 包括翻开的牌
亮点2:点击翻开的牌可以翻回去
使用方法:
先任意放置64个展示框
按下按钮 (这也是复位键 一旦出现故障立刻猛击该按钮)
左或右键翻开或翻回牌
翻开会展示2.5s后自动翻回 当然这不会妨碍你继续游戏
一致的牌会自动消失 所有牌都消失后游戏自动关闭
截图
原理
为了让玩家可以自由的改变地图形状 我没有区分展示框 因此要刚好放一组展示框
游戏的数据记录在计分板里 为此 我放了只牛 用命名牌起名叫var 用于存储所有游戏信息
游戏有两个高频 分别编号1 3 记录@e[name=var] 的stage 上
游戏可以分成3部分 开局 高频#1和#2
重要的事是确保状态切换时信息的传递
有一个小的高频发生器 分别高频着
execute @e[name=var,score_stage_min=1,score_stage=1] ~ ~ ~ /fill 0 19 4 11 19 4 minecraft:redstone_block
execute @e[name=var,score_stage_min=3,score_stage=3] ~ ~ ~ /fill 0 19 3 16 19 3 minecraft:redstone_block
testfor @e[type=ItemFrame]
最后一条连比较器连红石火把接命令方块矿车内含/scoreboard players set @e[name=var] stage 0在没展示框时停止游戏
开局
开局时要给每个方块随机上一个画片 我使用@r 并把画片编号存储在各个展示框的pic里
防止重复赋值我先
/scoreboard players set @e[type=ItemFrame] pic -1
用负一表示没被赋值
然后
/scoreboard players set @r[type=ItemFrame,c=8,score_pic=-1] pic 0
/scoreboard players set @r[type=ItemFrame,c=8,score_pic=-1] pic 1
。。。。
/scoreboard players set @r[type=ItemFrame,c=8,score_pic=-1] pic 7
这样每种图案各有8个
最后
/scoreboard players set @e[type=ItemFrame] disp 1 disp表示正/反 1是反 0是正
/scoreboard players set @e[name=var] stage 1
开局就结束了
高频#1
高频#1用来准备迎接玩家的按下 在状态1时启动
先/scoreboard players set @e[type=ItemFrame] spi 1
/scoreboard players set @e[type=ItemFrame] spi 0 {ItemRotation:0b}
于是转过的spi就是1 其他的就是0 因为空白展示框没有ItemRotation 因此空白展示框也被当做转过
execute @e[score_spi_min=1,type=ItemFrame] ~ ~ ~ /scoreboard players remove @e[type=ItemFrame,c=1,r=0] disp 1
execute @e[score_spi_min=1] ~ ~ ~ /scoreboard players operation @e[type=ItemFrame,c=1,r=0] disp *= @e[type=ItemFrame,c=1,r=0] disp
这两条看起来很长 其实就是让被玩家点的方块的disp=(disp-1)^2
于是0变1 1变0
然后是负责显示的
/entitydata @e[type=ItemFrame,score_disp_min=1] {Item:{id:"minecraft:filled_map",Damage:100s,Count:1b},ItemRotation:0b}
/entitydata @e[type=ItemFrame,score_disp=0,score_pic_min=0,score_pic=0] {Item:{id:"minecraft:filled_map",Damage:0s,Count:1b},ItemRotation:0b}
/entitydata @e[type=ItemFrame,score_disp=0,score_pic_min=1,score_pic=1] {Item:{id:"minecraft:filled_map",Damage:1s,Count:1b},ItemRotation:0b}
。。。。。
/entitydata @e[type=ItemFrame,score_disp=0,score_pic_min=7,score_pic=7] {Item:{id:"minecraft:filled_map",Damage:7s,Count:1b},ItemRotation:0b}
第一条是显示背面的 其他的是显示正面的 (背面的图案是我拿有史以来最有名的绘图软件mspaint.exe制作的 其他来自wiki)
然后就是正面数达到2以后的事了
tp @e[type=ItemFrame,score_disp=0] ~ ~ ~
这个只是用来检测正面牌个数用的 它有stats 连接到var的tem计分板
execute @e[name=var,score_tem_min=2] ~ ~ ~ /scoreboard players operation @e[name=var] d = @e[score_disp=0,c=1] pic
execute @e[name=var,score_tem_min=2] ~ ~ ~ /scoreboard players operation @e[name=var] d -= @e[score_disp=0,c=-1] pic
这两条是让var的d成为两个翻开的牌pic值的差 是0说明一致
execute @e[name=var,score_tem_min=2] ~ ~ ~ /scoreboard players set @e[name=var] time 20
execute @e[name=var,score_tem_min=2] ~ ~ ~ /scoreboard players set @e[name=var] stage 3
切换到stage 3 开始20tick计时
/scoreboard players set @e[type=ItemFrame,score_disp=0] d 1本着节约变量的想法也用d标记翻开的牌 现在看似乎没必要了
#1结束
#2高频是为了展示一会翻开的牌设计的 在状态3时启动/scoreboard players set @e[type=ItemFrame] spi 1
/scoreboard players set @e[type=ItemFrame] spi 0 {ItemRotation:0b}
跟刚才一样
/execute @e[type=ItemFrame,score_spi_min=1] ~ ~ ~ /scoreboard players set @e[name=var] time 0
如果有范开的就把时间快进到0
以下是时间到时做的事
execute @e[name=var,score_time=0] ~ ~ ~ /scoreboard players set @e[name=var] stage 1
切换回状态1
execute @e[name=var,score_time=0,score_d_min=0,score_d=0] ~ ~ ~ kill @e[type=ItemFrame,score_d_min=1]
如果一样就杀展示框
execute @e[name=var,score_time=0] ~ ~ ~ /entitydata @e[type=ItemFrame,score_d_min=1] {ItemRotation:1b,Item:{id:"stone"}}
能进行这一步 肯定是不一样 不然已经被杀了 自动拧一下 一会回到状态1是就因为被拧自动翻回去了
execute @e[name=var,score_time=0] ~ ~ ~ /entitydata @e[type=ItemFrame,score_spi_min=1,score_d_min=1] {ItemRotation:0b,Item:{id:"stone"}}
如果刚才点了翻过来的框 把他们摆正 因为他们不应该翻回去
execute @e[name=var,score_time=0] ~ ~ ~ /scoreboard players reset @e[type=ItemFrame] d
清除展示框的标记
/scoreboard players remove @e[name=var] time 1
每tick时间减一
#2完
好了我讲完了 有兴趣的同志可以修改 比如改成固定形状但不用每次手摆1组展示框
存档
http://pan.baidu.com/s/10hTAe
相关下载
相关文章
更多+热门搜索
手游排行榜
- 最新排行
- 最热排行
- 评分最高
-
冒险解谜 大小:37M
-
飞行射击 大小:76.77M
-
休闲益智 大小:201.89MB
-
赛车竞速 大小:132.99MB
-
休闲益智 大小:1.87 GB