1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

教育版マイクラでAtCoderの問題解いてみた

1
Last updated at Posted at 2025-06-17
Page 1 of 20

はじめに

本記事は,LoGeek (https://x.com/nu_chs_logeek) のLT会向けに作成した記事となります.


今回使用する教育版マインクラフト (https://education.minecraft.net/ja-jp) にはMakeCodeというプログラミングの機能があり,ビジュアルプログラミングの他,Python,Java Scriptを使用してコーディングすることができます.


Pythonが使える?ということは…


AtCoderの問題,マイクラ上で解けるんじゃね?


て,ことでやってみた.


AtCoderの問題解いてみよ

今回はこちらのA問題を使用.


チャット欄にテキスト出力するだけじゃつまらないよな…


そこで見つけたのがこちら.

英数字記号をマイクラ上のブロックで出力する関数.

image.png

image.png


Pythonで書くならこんな感じ.

MakeCode
blocks.print("文字列", ブロックの種類, pos(プレイヤーからの距離), 出力する方角)

じゃぁまずは先ほどのA問題をPythonで普通に解いてみましょう.

Python
n = int(input())
if n % 2 == 0:
    l = n // 2 - 1
    m = 2
else:
    l = n // 2
    m = 1
for _ in range(l):
    print('-', end='')
for _ in range(m):
    print('=', end='')
for _ in range(l):
    print('-', end='')

まぁさすがにAC.

image.png


マイクラ上で書いてみよ

じゃぁここからマイクラ上で書いてみる.
とりあえず,そのままコピペしてみよう.

image.png

input()が使えない!!


じゃぁ,諦めてさっきのこれをPythonに変換します.

image.png


そしたらこんな感じでした.

MakeCode
def on_on_chat():
    blocks.print("HELLO", GRASS, pos(0, 0, 0), WEST)
player.on_chat("jump", on_on_chat)

以下の関数で特定の文字列をチャット欄に入力すると,関数を呼び出すことができるらしいです.

MakeCode
player.on_chat("文字列", 呼び出す関数)

じゃぁ,関数呼び出しのときに引数として'N'与えてあげればいいかぁ.


完成

MakeCode
def on_on_chat(n):
    xPos = 0
    if n % 2 == 0:
        l = n // 2 - 1
        m = 2
    else:
        l = n // 2
        m = 1
    for _ in range(l):
        blocks.print("-", GOLD_BLOCK, pos(xPos, 0, 0), WEST)
        xPos -= 6
    for _ in range(m):
        blocks.print("=", GOLD_BLOCK, pos(xPos, 0, 0), WEST)
        xPos -= 6
    for _ in range(l):
        blocks.print("-", GOLD_BLOCK, pos(xPos, 0, 0), WEST)
        xPos -= 6
        
player.on_chat("run", on_on_chat)

1文字5ブロック,空白1ブロックだったので,xPosを6ずつずらしてブロック出力してみました.

image.png


ちなみに

さっきのコードをビジュアルプログラムに変換してみると,プログラムが壊れました.
なので,初手からPythonを書くのには向いていないのかも...?

image.png


所感

ブロックでのprintでは,日本語が使えなかったよ.
input()とかlist()とかmap()が使えなかった.オワリ\(^o^)/


今後に向けて

  • print()は別に独自の関数作れば実装できるくない?
  • list(),map()はどうだろ?ライブラリかなんか追加できれば使えるようになるんだろうか?調べてみる

その他

大学やその他学校でMicrosoftアカウントを配布されている方は,教育版マインクラフトを無料でプレイできる可能性があります.統合版と同じように遊ぶこともできますし,通常のMinecraftにはないプログラミング機能を使用することもできるので,ぜひ一度試してみてください.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?