MC命令方块小游戏 记忆时间

时间:2017-11-18 来源:88130安卓下载 作者:佚名

  命令方块是很神奇的哦,用命令方块能制作出非常有趣的游戏,今天游戏园小编就为大家带来了命令方块制作的记忆游戏,喜欢的玩家可以来看看哦!

  有一个游戏大家一定见过 一些牌两两成双 背对着你 你一次翻开两张 如果一样就会消失 不一样就会翻回去

  我就用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

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高