付録
タートル命令リファレンス
この教材で使える命令の一覧です.
この教材で使える命令の一覧です. ここに載っているものは,右側の演習環境でそのまま動くことを確かめてあります. 逆に,ここに載っていない命令は動かないと思ってください.
使い方
命令の名前がわからなくなったとき,引数の順番を忘れたときに開いてください.
- 各表の「書き方」のとおりに打てば動きます.
[ ]で囲んだ引数は省略できます. - 節の中にある「▶ 演習環境で開く」から,その場で試せます.
- 本文の回を探したいときは,上の番号(1〜14)から各章のページへ行けます.
4.1 命令の書き方の約束
プログラムの 1 行目に from turtle import * と書くと,
以下の命令がそのまま使えるようになります.このとき動くのは
自動的に用意される 1 匹目のかめです.
書き方 1:かめを 1 匹だけ使う
from turtle import * fd(100) # 1 匹目のかめが 100 進む lt(90)
かめを増やしたいときは Turtle() で作り,名前を付けます.
このときは 名前.命令() の形で書きます.
第 8 章以降と,第 12 章のゲームはこちらの書き方です.
書き方 2:かめに名前を付ける
from turtle import * t = Turtle() # かめを 1 匹作って t と名づける u = Turtle() # もう 1 匹 t.fd(100) # t だけが進む u.lt(90) # u だけが回る
ヒント
どちらの書き方でも,使える命令は同じです.
以下の表では
fd(長さ) のように短く書きますが,
名前を付けたかめなら t.fd(長さ) と読み替えてください.
たいていの命令には短い名前と長い名前があります.
fd と forward,lt と left は同じものです.
この教材では短いほうを使いますが,どちらで書いてもかまいません.
4.2 移動
| 書き方 | 意味 | 例 |
|---|---|---|
fd(長さ)forward(長さ) | 向いている方へ進む | fd(100) |
bk(長さ)backward(長さ)back(長さ) | 向きを変えずに後ろへ下がる | bk(50) |
goto(x, y)setpos(x, y) | 指定した座標へ移動する.画面の中央が (0, 0) | goto(-100, 50) |
setx(x) | x 座標だけを変える(y はそのまま) | setx(120) |
sety(y) | y 座標だけを変える(x はそのまま) | sety(-80) |
home() | 中央 (0, 0)・右向きの最初の状態に戻る | home() |
circle(半径 [, 角度] [, steps=辺の数]) | 円(または円弧)を描く.半径が正なら左回り,負なら右回り | circle(60)circle(60, 180) |
circle(60)circle(60, 180) 半周だけcircle(60, 360, 6) 正六角形になるref_move.py
# 移動の命令を試す
from turtle import *
pensize(3)
pencolor("navy")
fd(120)
pu()
goto(-150, 80)
pd()
pencolor("crimson")
circle(50)
pu()
goto(0, -120)
pd()
pencolor("seagreen")
setx(150)
sety(-40)
home()
done()
fd・goto・circle・setx・sety・home.4.3 向き
| 書き方 | 意味 | 例 |
|---|---|---|
lt(角度)left(角度) | その場で左に回る.進みはしない | lt(90) |
rt(角度)right(角度) | その場で右に回る | rt(45) |
seth(角度)setheading(角度) | 「何度回る」ではなく「どちらを向く」を指定する.0 が右,90 が上,180 が左,270 が下 | seth(90) |
heading() | いま向いている角度を調べる(0〜360) | print(heading()) |
towards(相手)towards(x, y) | 相手のかめ(または座標)がある方角を調べる.seth(towards(u)) で相手のほうを向ける | seth(towards(u)) |
seth で指定する角度.数学のグラフと同じ向き.4.4 ペン
| 書き方 | 意味 | 例 |
|---|---|---|
pu()penup()up() | ペンを上げる.進んでも線が残らない | pu() |
pd()pendown()down() | ペンを下ろす.進むと線を引く(最初は下りている) | pd() |
pensize(太さ)width(太さ) | 線の太さを決める.以後に描く線に効く | pensize(4) |
pensize() | いまの太さを調べる(引数なしで呼ぶ) | print(pensize()) |
isdown() | ペンが下りているかを調べる.True か False | if isdown(): |
4.5 色と塗り
| 書き方 | 意味 | 例 |
|---|---|---|
pencolor(色) | 線の色を決める | pencolor("red") |
fillcolor(色) | 塗りつぶしの色を決める | fillcolor("gold") |
color(色) | 線と塗りを同じ色にする | color("navy") |
color(線の色, 塗りの色) | 線と塗りを別々に決める | color("navy", "gold") |
begin_fill() | ここから塗る図形が始まる,という合図 | begin_fill() |
end_fill() | ここまでで囲まれた形を塗りつぶす | end_fill() |
filling() | いま塗っている途中かを調べる | print(filling()) |
bgcolor(色) | 画面の背景色を変える | bgcolor("black") |
colormode(255) | 色を 0〜255 の数で指定できるようにする.はじめは 0.0〜1.0 で指定する設定になっている | colormode(255) |
ヒント
色の指定は 3 とおりあります.
- 名前で:
"red""blue""green""yellow""orange""purple""pink""brown""black""white""gray""cyan""magenta""navy""gold"など - 16 進数で:
"#ff8800"(赤・緑・青の強さを 00〜ff で並べる) - 数の組で:
colormode(255)と書いてからpencolor(255, 136, 0)
begin_fill() 〜 end_fill()ref_fill.py
# 色と塗りつぶし
from turtle import *
pensize(3)
# 三角形を塗る
color("darkgreen", "yellowgreen")
begin_fill()
fd(120)
lt(120)
fd(120)
lt(120)
fd(120)
lt(120)
end_fill()
# 隣に円を塗る
pu()
goto(160, 0)
pd()
color("crimson", "pink")
begin_fill()
circle(55)
end_fill()
ht()
done()
4.6 姿
| 書き方 | 意味 | 例 |
|---|---|---|
shape("名前") | かめの姿を変える.使えるのは "classic" "arrow" "square" "triangle" "circle" "turtle" "blank" の 7 つ | shape("turtle") |
shape() | いまの姿の名前を調べる | print(shape()) |
shapesize(たて, よこ)turtlesize(たて, よこ) | 姿の大きさを何倍にするかを決める.1 つだけ書くとたて・よこ同じ倍率になる | shapesize(2, 2) |
ht()hideturtle() | 姿を隠す.絵の仕上げに使う | ht() |
st()showturtle() | 姿を出す | st() |
isvisible() | 姿が見えているかを調べる | if isvisible(): |
speed(数) | 動く速さ.0 が最速,1 が最も遅い.画面右上の「速さ」でも変えられる(そちらが優先される) | speed(1) |
"blank" は何も描かれません).画像は貼れません
画像ファイル(car.gif など)を姿にする機能はありません.
register_shape や addshape を書いてもエラーにはなりませんが,
何も起きません.見た目は shape・color・shapesize の
組み合わせで作ってください.
4.7 文字とスタンプ
| 書き方 | 意味 | 例 |
|---|---|---|
write(文字) | いる場所に文字を書く | write("こんにちは") |
write(文字, font=(書体, 大きさ, 字体)) | 大きさや太さを指定して書く.字体は "normal" "bold" "italic" | write("点", font=("Arial", 20, "bold")) |
write(文字, align="center") | そろえ方を決める."left"(既定)"center" "right" | write("中央", align="center") |
dot([大きさ] [, 色]) | いる場所に丸い点を打つ | dot(20, "red") |
stamp() | いまの姿を画面に押す(足あとが残る).押した番号が返る | s = stamp() |
clearstamp(番号) | その番号のスタンプを 1 つ消す | clearstamp(s) |
clearstamps() | スタンプを全部消す | clearstamps() |
clear() | 描いた線・文字・点を消す(スタンプは残る) | clear() |
align のちがいstamp() の足あとref_text.py
# 文字・点・スタンプ
from turtle import *
ht()
pu()
# 点
goto(-200, 80)
dot(40, "crimson")
goto(-120, 80)
dot(40, "royalblue")
goto(-40, 80)
dot(40, "gold")
# 文字
goto(0, 0)
pencolor("navy")
write("ふつうの文字", font=("Arial", 18, "normal"))
goto(0, -50)
write("太い文字", font=("Arial", 24, "bold"))
goto(0, -100)
write("中央ぞろえ", align="center", font=("Arial", 18, "normal"))
done()
dot と write.4.8 画面
| 書き方 | 意味 | 例 |
|---|---|---|
setup(よこ, たて)screensize(よこ, たて) | 画面の大きさを決める.この教材の演習環境は 620 × 460 です | setup(620, 460) |
window_width() | 画面の横幅を調べる | print(window_width()) |
window_height() | 画面の高さを調べる | print(window_height()) |
bgcolor(色) | 背景色を変える | bgcolor("#0d1117") |
title(文字) | 画面の見出しを変える(この教材では見た目に出ません) | title("ゲーム") |
clearscreen() | 画面を消して,かめも最初の状態に戻す | clearscreen() |
Turtle() | かめを 1 匹新しく作る | t = Turtle() |
Screen() | 画面そのものを表す.sc = Screen() として sc.bgcolor(…) のようにも書ける | sc = Screen() |
turtles() | いま作られているかめを全部並べたリストを返す | print(len(turtles())) |
done()mainloop() | プログラムの終わりの合図.いちばん最後に書く | done() |
clear() は画面ぜんぶが対象
この教材の
clear() と clearscreen() は,
どのかめから呼んでも画面全体を消します.
CPython の turtle では「そのかめが描いたものだけ」を消しますが,
ブラウザ版では区別していません.
スコアの書き換えなどで使うときは,消えて困るものが画面にないか確かめてください
(第 12 章 12.5 節).
4.9 イベント(キーボード・マウス・時間)
「〜されたら,この関数を呼んでください」と登録する命令です.
渡す関数にはかっこを付けません(tick() ではなく tick).
くわしくは第 10 章・第 12 章を見てください.
| 書き方 | 意味 | 例 |
|---|---|---|
onkeypress(関数, "キー名") | そのキーが押されたときに関数を呼ぶ | onkeypress(go, "Left") |
onkey(関数, "キー名")onkeyrelease(関数, "キー名") | そのキーが離されたときに関数を呼ぶ | onkey(stop, "Left") |
listen() | キーボードを聞く準備をする.登録のあとに 1 回書く | listen() |
onscreenclick(関数) | 画面がクリックされたら関数を呼ぶ.関数は (x, y) を受け取る | onscreenclick(jump) |
かめ.onclick(関数) | そのかめがクリックされたら関数を呼ぶ.押せる範囲は中心から半径 14 ほど | t.onclick(hit) |
ontimer(関数, ミリ秒) | その時間のあとに関数を 1 回呼ぶ.関数の最後でもう一度書くとループになる | ontimer(tick, 30) |
textinput(見出し, 質問) | 文字を入力してもらう.コンソールの入力行を使う | s = textinput("", "名前は?") |
numinput(見出し, 質問) | 数を入力してもらう | n = numinput("", "何回?") |
| キー | 書き方 |
|---|---|
| 矢印キー | "Up" "Down" "Left" "Right" |
| スペース | "space" |
| ふつうの文字 | "a" "b" … "z" "0" … "9"(小文字で書く) |
| Enter | "Return" |
| Esc | "Escape" |
| Backspace | "BackSpace" |
| Tab | "Tab" |
ref_event.py
# イベントの最小の例
# ← → で動く/クリックしたところへ飛ぶ/かめは自分で少しずつ回る
from turtle import *
setup(620, 460)
t = Turtle()
t.shape("turtle")
t.color("seagreen")
t.shapesize(2, 2)
t.pu()
def go_left():
t.setx(t.xcor() - 20)
def go_right():
t.setx(t.xcor() + 20)
def jump(x, y):
t.goto(x, y)
def tick():
t.lt(6)
ontimer(tick, 40)
onkeypress(go_left, "Left")
onkeypress(go_right, "Right")
listen()
onscreenclick(jump)
ontimer(tick, 40)
done()
ヒント
キーが効かないときは,一度タートル画面をクリックしてください.
コード欄に文字カーソルがあると,キーはコード欄に取られます.
4.10 状態の取得
「いまどこにいるか」「いまどちらを向いているか」を調べる命令です.
if の条件や,計算の材料として使います.
| 書き方 | 返ってくるもの | 例 |
|---|---|---|
xcor() | いまの x 座標 | if xcor() > 300: |
ycor() | いまの y 座標 | t.sety(t.ycor() - 5) |
pos()position() | いまの座標を (x, y) の形で | print(pos()) |
heading() | いま向いている角度 | print(heading()) |
distance(相手のかめ) | 相手までの距離.当たり判定に使う(第 12 章) | if t.distance(u) < 30: |
distance(x, y) | その座標までの距離 | if t.distance(mx, my) < 30: |
towards(相手) | 相手がいる方角 | t.seth(t.towards(u)) |
pencolor() | いまの線の色 | print(pencolor()) |
pensize() | いまの線の太さ | print(pensize()) |
isdown() | ペンが下りているか | if isdown(): |
isvisible() | 姿が見えているか | if t.isvisible(): |
shape() | いまの姿の名前 | print(shape()) |
shapesize() | いまの倍率 | print(shapesize()) |
4.10.1 タートル以外でよく使うもの
| 書き方 | 意味 | 例 |
|---|---|---|
print(…) | コンソールに書き出す.途中の値を確かめるのに使う | print("x =", xcor()) |
input("質問") | キーボードから 1 行もらう.コンソールの入力行にあらかじめ書いておく | s = input("名前は?") |
int(文字) / float(文字) | 文字を整数/小数に直す.input の結果は文字なので必要 | n = int(input("回数?")) |
str(数) | 数を文字に直す.write でつなぐときに使う | write("点 " + str(score)) |
import random | でたらめな数を作る道具を使えるようにする(1 行目に書く) | import random |
random.randint(a, b) | a 以上 b 以下の整数を 1 つ | random.randint(1, 6) |
random.choice(リスト) | リストから 1 つ選ぶ | random.choice(["red", "blue"]) |
4.11 この教材でできないこと
この教材は,ブラウザの中で動く自前のタートルを使っています.
パソコンにインストールした Python(CPython)の turtle とほとんど同じですが,
次の点が違います.知らずに使うと「なぜ動かないのか」で時間を失うので,
正直に書いておきます.
| できないこと | 理由と代わりの方法 |
|---|---|
while True: で待ち続ける | ブラウザは 1 つのプログラムが動いている間,画面を描き直せません.ontimer を使ってください(第 10 章・第 12 章).しばらく終わらないプログラムは自動で止めます |
time.sleep() で待つ | 同じ理由です.待ちたいときは ontimer のミリ秒で調整します |
| 画像を姿にする | register_shape / addshape は書いてもエラーになりませんが,何も起きません.姿は 7 種類の shape と color・shapesize で作ります |
| 音を鳴らす | このランタイムは音に対応していません.効果音や BGM は扱いません |
| マウスのいまの位置を調べる | 「いまのマウスの位置」を聞く命令はありません.onscreenclick で,クリックされたときだけ座標が届きます |
| ドラッグ・右クリック・ダブルクリック | 区別していません.どれもふつうのクリックとして届きます |
undo()(1 つ戻す) | ありません.描き直してください |
tracer() / update() | 書いてもエラーにはなりませんが,効果はありません.描画はつねにすぐ反映されます |
exitonclick() / bye() | 書いてもエラーにはなりませんが,何も起きません.終わりの合図は done() です |
clear() でそのかめの分だけ消す | 画面全体が消えます.4.8 節の注意を見てください |
かめ.onclick の判定範囲を変える | 中心から半径 14 で固定です.広げたいときは onscreenclick + distance で自分で判定します |
write() で書いた文字を回す | 文字はいつも水平に書かれます.かめの向きを変えても傾きません.斜めに見せたいときは,1 文字ずつ位置をずらして write するか,線で文字をかたどってください |
手元の Python でも動きます
ここに書いたものを除けば,書き方は CPython の
turtle と同じです.
このページのプログラムは,パソコンに入れた Python でもそのまま動きます
(第 1 章の手順で Python を用意してください).
4.12 命令の索引
アルファベット順の一覧です.短い名前と長い名前が同じ働きのものは,まとめてあります.
| 命令 | 分類 | 節 |
|---|---|---|
bgcolor | 色と塗り/画面 | 4.5・A.8 |
begin_fill / end_fill | 色と塗り | 4.5 |
bk / backward / back | 移動 | 4.2 |
circle | 移動 | 4.2 |
clear / clearscreen | 文字とスタンプ/画面 | 4.7・A.8 |
clearstamp / clearstamps | 文字とスタンプ | 4.7 |
color / pencolor / fillcolor | 色と塗り | 4.5 |
colormode | 色と塗り | 4.5 |
distance | 状態の取得 | 4.10 |
done / mainloop | 画面 | 4.8 |
dot | 文字とスタンプ | 4.7 |
fd / forward | 移動 | 4.2 |
filling | 色と塗り | 4.5 |
goto / setpos / setx / sety | 移動 | 4.2 |
heading / towards | 向き/状態の取得 | 4.3・A.10 |
home | 移動 | 4.2 |
ht / hideturtle / st / showturtle / isvisible | 姿 | 4.6 |
isdown | ペン/状態の取得 | 4.4・A.10 |
listen | イベント | 4.9 |
lt / left / rt / right | 向き | 4.3 |
numinput / textinput | イベント | 4.9 |
onclick(かめ) | イベント | 4.9 |
onkey / onkeypress / onkeyrelease | イベント | 4.9 |
onscreenclick | イベント | 4.9 |
ontimer | イベント | 4.9 |
pos / position / xcor / ycor | 状態の取得 | 4.10 |
pu / penup / pd / pendown | ペン | 4.4 |
pensize / width | ペン | 4.4 |
Screen / Turtle / turtles | 画面 | 4.8 |
seth / setheading | 向き | 4.3 |
setup / screensize / window_width / window_height | 画面 | 4.8 |
shape / shapesize / turtlesize | 姿 | 4.6 |
speed | 姿 | 4.6 |
stamp | 文字とスタンプ | 4.7 |
title | 画面 | 4.8 |
write | 文字とスタンプ | 4.7 |