尝试在MATLAB中玩Minecraft: Education Edition
简介 jiè)
在我的大学,我们与MATLAB签署了校园全线授权协议,使得学生和教职员工都可以使用MATLAB!此外,由于与微软教育机构签署了综合协议(EES),学生们可以通过学生版Microsoft 365使用Minecraft教育版,这让我觉得如果在MATLAB上能玩Minecraft会很有趣。
本次的目标
用MATLAB操作代理人,进行豆腐建筑!
所需之物
Windows PC
Minecraft Education Edition
Code Connection for Minecraft
MATLAB
安装Minecraft:教育版
今回はMinecraft: Education EditionをMATLABでいじっていく
请点击下方链接进行下载并运行Minecraft教育版。
我的世界代码连接
在 Microsoft Store 下载并安装 Minecraft 的 Code Connection。
由于代理程序已经生成,所以这次我们将在MATLAB中运行和测试此代理。
在MATLAB中运行代理程序
皆さん当然インストールしてあるであろうMATLABを起動します
Code ConnectionはAPIがあるのでそれをMATLABで叩くことでエージェントを操作していきます
Code Builder for Minecraft: Education Edition API Documentation
我将使用MATLAB创建一个新的Live Script。
请尝试运行下面的代码。
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res)
我认为代理商向前迈进了一步。
エージェントがどのように機能するかはurl変数のhttp://localhost:8080/ あとによって決まります。
上記のAPIドキュメントを参考にして、ほしい機能を追加してみてください!
如果要走十步的话,可以尝试使用for循环。
s = 10;
for i = 1:s
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res);
end
将其转换为函数
让我们将在先前接触过的内容中继续前进的部分进行函数化。
function f_move
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res);
end
通过执行f_move函数,现在可以向前移动了。
制作豆腐的脚本
我准备了很多函数。
% 前に移動する関数
function move_f
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res);
end
% 後ろに移動する関数
function move_b
url = "http://localhost:8080/move?direction=back";
res = webread(url);
value = jsondecode(res);
end
% 右に移動する関数
function move_r
url = "http://localhost:8080/move?direction=right";
res = webread(url);
value = jsondecode(res);
end
% 左に移動する関数
function move_l
url = "http://localhost:8080/move?direction=left";
res = webread(url);
value = jsondecode(res);
end
% 上に移動する関数
function move_u
url = "http://localhost:8080/move?direction=up";
res = webread(url);
value = jsondecode(res);
end
% 下に移動する関数
function move_d
url = "http://localhost:8080/move?direction=down";
res = webread(url);
value = jsondecode(res);
end
% 前にものを置く関数
function place
url = "http://localhost:8080/place?slotNum=1&direction=forward";
res = webread(url);
value = jsondecode(res);
end
之后我会思考如何组装这个房子。我尝试了使用循环语句来完成,但是我觉得使用三维数组可以更加巧妙地实现。
h = 5; % 高さ
w = 6; % 幅
d = 5; % 奥行き
for i = 1:h
for j = 1:w
for k = 1:d
if j == 1
move_b;
place;
elseif j == w
move_b;
place;
elseif k == 1
move_b;
place;
elseif k == d
move_b;
place;
elseif i == h
move_b;
place;
else
move_b;
end
end
move_r;
for a = 1:d
move_f;
end
end
move_u;
for b = 1:w
move_l;
end
end
我也试着创建了一个类似MATLAB的山。
我尝试自动创建了一个类似MATLAB的山!(虽然可以做得更大,但是因为需要时间,所以我选择了小一点的山)
这次我试着用数组来创建一个山的程序。
我从MATLAB的logo函数生成了一个9×9的MATLAB山(随便起的名字)并将其转换成了一个数组。
由于山太高了一点,所以我将高度压缩到四分之一以生成MATLAB山。
% matlab logo
mat_logo = [ -4.1474 -2.2221 1.5828 6.2576 10.0233 10.8842 7.5711 0.4568 -8.2948;
2.6789 7.2273 13.5919 20.7434 26.6830 28.7386 24.7071 14.4545 0.4568;
5.9884 11.1152 17.9129 25.9224 33.8068 38.3987 35.8258 24.7071 7.5711;
4.5416 7.8502 12.2509 18.0703 27.0549 36.8454 38.3987 28.7386 10.8842;
0.6439 1.0859 1.6770 2.1659 8.3970 27.0549 33.8068 26.6830 10.0233;
-0.0850 -0.1451 -0.2253 -0.7048 2.1659 18.0703 25.9224 20.7434 6.2576;
0 0 0 -0.2253 1.6770 12.2509 17.9129 13.5919 1.5828;
0 0 0 -0.1451 1.0859 7.8502 11.1152 7.2273 -2.2221;
0 0 0 -0.0850 0.6439 4.5416 5.9884 2.6789 -4.1474]
mat_logo_int = round((mat_logo+4)/4)+1 % 負がめんどくさいので大体正の数にして最後に一段分下駄を履かせてあげる
coler_h = round(max(mat_logo_int,[],"all")/6) % 高さで色分けをするために高さを分割
for h = 1:max(mat_logo_int,[],"all") % 最大の高さまで繰り返す
for i = 1:9
for j = 1:9
% 配列の要素より低い位置にいる場合にブロックを置く
if h < mat_logo_int(i,j)
% ブロックの色分け
if h < coler_h
place1;
elseif h < coler_h*2
place2;
elseif h < coler_h*3
place3;
elseif h < coler_h*4
place4;
elseif h < coler_h*5
place5;
else
place6;
end
end
move_b;
end
move_r;
for a = 1:9
move_f;
end
end
move_u;
for a = 1:9
move_l;
end
end
由于引入了新的颜色分类,我们需要准备新的函数。
function place1
url = "http://localhost:8080/place?slotNum=1&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place2
url = "http://localhost:8080/place?slotNum=2&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place3
url = "http://localhost:8080/place?slotNum=3&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place4
url = "http://localhost:8080/place?slotNum=4&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place5
url = "http://localhost:8080/place?slotNum=5&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place6
url = "http://localhost:8080/place?slotNum=6&direction=forward";
res = webread(url);
value = jsondecode(res);
end
只需将所需颜色的方块给代理并执行,就可以制作出丰富多彩的MATLAB标志的山!

用MATLAB操作代理人,进行豆腐建筑!
所需之物
Windows PC
Minecraft Education Edition
Code Connection for Minecraft
MATLAB
安装Minecraft:教育版
Minecraft Education Edition
Code Connection for Minecraft
MATLAB
今回はMinecraft: Education EditionをMATLABでいじっていく
请点击下方链接进行下载并运行Minecraft教育版。


我的世界代码连接
在 Microsoft Store 下载并安装 Minecraft 的 Code Connection。


由于代理程序已经生成,所以这次我们将在MATLAB中运行和测试此代理。
在MATLAB中运行代理程序
皆さん当然インストールしてあるであろうMATLABを起動します
Code ConnectionはAPIがあるのでそれをMATLABで叩くことでエージェントを操作していきます
Code Builder for Minecraft: Education Edition API Documentation
我将使用MATLAB创建一个新的Live Script。
请尝试运行下面的代码。
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res)
我认为代理商向前迈进了一步。
エージェントがどのように機能するかはurl変数のhttp://localhost:8080/ あとによって決まります。
上記のAPIドキュメントを参考にして、ほしい機能を追加してみてください!
如果要走十步的话,可以尝试使用for循环。
s = 10;
for i = 1:s
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res);
end
将其转换为函数
让我们将在先前接触过的内容中继续前进的部分进行函数化。
function f_move
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res);
end
通过执行f_move函数,现在可以向前移动了。
制作豆腐的脚本
我准备了很多函数。
% 前に移動する関数
function move_f
url = "http://localhost:8080/move?direction=forward";
res = webread(url);
value = jsondecode(res);
end
% 後ろに移動する関数
function move_b
url = "http://localhost:8080/move?direction=back";
res = webread(url);
value = jsondecode(res);
end
% 右に移動する関数
function move_r
url = "http://localhost:8080/move?direction=right";
res = webread(url);
value = jsondecode(res);
end
% 左に移動する関数
function move_l
url = "http://localhost:8080/move?direction=left";
res = webread(url);
value = jsondecode(res);
end
% 上に移動する関数
function move_u
url = "http://localhost:8080/move?direction=up";
res = webread(url);
value = jsondecode(res);
end
% 下に移動する関数
function move_d
url = "http://localhost:8080/move?direction=down";
res = webread(url);
value = jsondecode(res);
end
% 前にものを置く関数
function place
url = "http://localhost:8080/place?slotNum=1&direction=forward";
res = webread(url);
value = jsondecode(res);
end
之后我会思考如何组装这个房子。我尝试了使用循环语句来完成,但是我觉得使用三维数组可以更加巧妙地实现。
h = 5; % 高さ
w = 6; % 幅
d = 5; % 奥行き
for i = 1:h
for j = 1:w
for k = 1:d
if j == 1
move_b;
place;
elseif j == w
move_b;
place;
elseif k == 1
move_b;
place;
elseif k == d
move_b;
place;
elseif i == h
move_b;
place;
else
move_b;
end
end
move_r;
for a = 1:d
move_f;
end
end
move_u;
for b = 1:w
move_l;
end
end
我也试着创建了一个类似MATLAB的山。
我尝试自动创建了一个类似MATLAB的山!(虽然可以做得更大,但是因为需要时间,所以我选择了小一点的山)
这次我试着用数组来创建一个山的程序。
我从MATLAB的logo函数生成了一个9×9的MATLAB山(随便起的名字)并将其转换成了一个数组。
由于山太高了一点,所以我将高度压缩到四分之一以生成MATLAB山。
% matlab logo
mat_logo = [ -4.1474 -2.2221 1.5828 6.2576 10.0233 10.8842 7.5711 0.4568 -8.2948;
2.6789 7.2273 13.5919 20.7434 26.6830 28.7386 24.7071 14.4545 0.4568;
5.9884 11.1152 17.9129 25.9224 33.8068 38.3987 35.8258 24.7071 7.5711;
4.5416 7.8502 12.2509 18.0703 27.0549 36.8454 38.3987 28.7386 10.8842;
0.6439 1.0859 1.6770 2.1659 8.3970 27.0549 33.8068 26.6830 10.0233;
-0.0850 -0.1451 -0.2253 -0.7048 2.1659 18.0703 25.9224 20.7434 6.2576;
0 0 0 -0.2253 1.6770 12.2509 17.9129 13.5919 1.5828;
0 0 0 -0.1451 1.0859 7.8502 11.1152 7.2273 -2.2221;
0 0 0 -0.0850 0.6439 4.5416 5.9884 2.6789 -4.1474]
mat_logo_int = round((mat_logo+4)/4)+1 % 負がめんどくさいので大体正の数にして最後に一段分下駄を履かせてあげる
coler_h = round(max(mat_logo_int,[],"all")/6) % 高さで色分けをするために高さを分割
for h = 1:max(mat_logo_int,[],"all") % 最大の高さまで繰り返す
for i = 1:9
for j = 1:9
% 配列の要素より低い位置にいる場合にブロックを置く
if h < mat_logo_int(i,j)
% ブロックの色分け
if h < coler_h
place1;
elseif h < coler_h*2
place2;
elseif h < coler_h*3
place3;
elseif h < coler_h*4
place4;
elseif h < coler_h*5
place5;
else
place6;
end
end
move_b;
end
move_r;
for a = 1:9
move_f;
end
end
move_u;
for a = 1:9
move_l;
end
end
由于引入了新的颜色分类,我们需要准备新的函数。
function place1
url = "http://localhost:8080/place?slotNum=1&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place2
url = "http://localhost:8080/place?slotNum=2&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place3
url = "http://localhost:8080/place?slotNum=3&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place4
url = "http://localhost:8080/place?slotNum=4&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place5
url = "http://localhost:8080/place?slotNum=5&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place6
url = "http://localhost:8080/place?slotNum=6&direction=forward";
res = webread(url);
value = jsondecode(res);
end
只需将所需颜色的方块给代理并执行,就可以制作出丰富多彩的MATLAB标志的山!

我尝试自动创建了一个类似MATLAB的山!(虽然可以做得更大,但是因为需要时间,所以我选择了小一点的山)
这次我试着用数组来创建一个山的程序。
我从MATLAB的logo函数生成了一个9×9的MATLAB山(随便起的名字)并将其转换成了一个数组。
由于山太高了一点,所以我将高度压缩到四分之一以生成MATLAB山。
% matlab logo
mat_logo = [ -4.1474 -2.2221 1.5828 6.2576 10.0233 10.8842 7.5711 0.4568 -8.2948;
2.6789 7.2273 13.5919 20.7434 26.6830 28.7386 24.7071 14.4545 0.4568;
5.9884 11.1152 17.9129 25.9224 33.8068 38.3987 35.8258 24.7071 7.5711;
4.5416 7.8502 12.2509 18.0703 27.0549 36.8454 38.3987 28.7386 10.8842;
0.6439 1.0859 1.6770 2.1659 8.3970 27.0549 33.8068 26.6830 10.0233;
-0.0850 -0.1451 -0.2253 -0.7048 2.1659 18.0703 25.9224 20.7434 6.2576;
0 0 0 -0.2253 1.6770 12.2509 17.9129 13.5919 1.5828;
0 0 0 -0.1451 1.0859 7.8502 11.1152 7.2273 -2.2221;
0 0 0 -0.0850 0.6439 4.5416 5.9884 2.6789 -4.1474]
mat_logo_int = round((mat_logo+4)/4)+1 % 負がめんどくさいので大体正の数にして最後に一段分下駄を履かせてあげる
coler_h = round(max(mat_logo_int,[],"all")/6) % 高さで色分けをするために高さを分割
for h = 1:max(mat_logo_int,[],"all") % 最大の高さまで繰り返す
for i = 1:9
for j = 1:9
% 配列の要素より低い位置にいる場合にブロックを置く
if h < mat_logo_int(i,j)
% ブロックの色分け
if h < coler_h
place1;
elseif h < coler_h*2
place2;
elseif h < coler_h*3
place3;
elseif h < coler_h*4
place4;
elseif h < coler_h*5
place5;
else
place6;
end
end
move_b;
end
move_r;
for a = 1:9
move_f;
end
end
move_u;
for a = 1:9
move_l;
end
end
由于引入了新的颜色分类,我们需要准备新的函数。
function place1
url = "http://localhost:8080/place?slotNum=1&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place2
url = "http://localhost:8080/place?slotNum=2&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place3
url = "http://localhost:8080/place?slotNum=3&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place4
url = "http://localhost:8080/place?slotNum=4&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place5
url = "http://localhost:8080/place?slotNum=5&direction=forward";
res = webread(url);
value = jsondecode(res);
end
function place6
url = "http://localhost:8080/place?slotNum=6&direction=forward";
res = webread(url);
value = jsondecode(res);
end
只需将所需颜色的方块给代理并执行,就可以制作出丰富多彩的MATLAB标志的山!