付録
じゆうに書く
白紙のエディタです.思いついたことを,そのまま試してください.
教材のページは,どれも「読んでから試す」順番になっています. このページは逆です.先に書いて,動かしてみるための場所です. 習ったことを試すのにも,課題を書くのにも, ただ落書きするのにも使ってかまいません.
下のボタンから右側にひな形を読み込み,好きなように書き換えて
「▶ 実行」(Ctrl + Enter)を押してください.
このページの使い方
- 書いた内容はブラウザが覚えています.ページを閉じても消えません.
- まっさらに戻したいときは「↺ 最初から」を押します.
- できたものは「⤓ 保存」で
.pyファイルとして手元に保存できます.作品として残すときは,このファイルを保存しておきます. - 動き続けるプログラム(
ontimerを使ったもの)は「■ 停止」で止めます. - 命令の名前を忘れたら,タートル命令リファレンスを見てください.
白紙のひな形
いちばん短い,何も入っていないプログラムです.ここから始めてください.
mynote.py
from turtle import * done()
ヒント
1 行目の
from turtle import * は「タートルの道具箱を開ける」合図,
最後の done() は「おしまい」の合図です.
この 2 行のあいだに書いていきます.
困ったときは — 書き出しのテンプレート
「何から書けばいいかわからない」ときは,作りたいものに近いひな形を開いて, 中身を書き換えるのがいちばん速い方法です.4 つ用意しました.
| 作りたいもの | 使うひな形 | おもに使う回 |
|---|---|---|
| 絵や模様を描く | ① 図形を描く | 第 2・4-1・4-2・5-1 回 |
| ものを動かす | ② アニメーション | 第 8-1・8-2 回 |
| 遊べるものを作る | ③ ゲーム | 第 12 章 |
| 数を入力して使う | ④ 入力を使う | 第 3-1・7 回 |
draw_template.py
# 題名:
# 名前:
# 日付:
from turtle import *
pensize(3)
pencolor("navy")
# ここから描く
for i in range(6):
fd(90)
rt(60)
ht()
done()
range の数と角度を変えてみてください.anim_template.py
# 題名:
# 名前:
# 日付:
from turtle import *
setup(620, 460)
# --- 準備(1 回だけ) ---
t = Turtle()
t.shape("turtle")
t.color("seagreen")
t.pu()
t.goto(-280, 0)
# --- 1 コマぶんの処理 ---
def tick():
t.fd(5)
if t.xcor() > 290:
t.goto(-280, t.ycor())
ontimer(tick, 30) # ← 次のコマを予約する
ontimer(tick, 30) # ← 最初の 1 回
done()
ヒント
ブラウザでは
while True: で動かし続けることができません.
動くものを作るときは,かならず ontimer を使ってください
(第 10 章・第 12 章).
game_template.py
# 作品名:
# 名前:
# 日付:
# 遊び方:
from turtle import *
import random
setup(620, 460)
bgcolor("#0d1117")
# --- 1. 準備 ---------------------------------------------------
player = Turtle()
player.shape("triangle")
player.color("cyan")
player.pu()
player.goto(0, -170)
board = Turtle()
board.ht()
board.pu()
board.color("white")
board.goto(-290, 190)
score = 0
playing = True
def show_score():
board.clear()
board.write("スコア " + str(score), font=("Arial", 18, "normal"))
# --- 2. 操作 ---------------------------------------------------
def go_left():
if playing:
player.setx(max(-290, player.xcor() - 20))
def go_right():
if playing:
player.setx(min(290, player.xcor() + 20))
# --- 3. 毎フレームの処理 ---------------------------------------
def tick():
global score, playing
# ここに「動かす」「当たり判定」を書く
show_score()
# ここに「終わりの条件」を書く
ontimer(tick, 30)
show_score()
onkeypress(go_left, "Left")
onkeypress(go_right, "Right")
listen()
ontimer(tick, 30)
done()
ヒント
キーが効かないときは,一度タートル画面をクリックしてください.
コード欄に文字カーソルがあると,キーはコード欄に取られます.
input_template.py
# 題名:
# 名前:
# 日付:
from turtle import *
name = input("名前を入れてください:")
n = int(input("何角形にしますか:"))
print("こんにちは," + name + " さん")
print(str(n) + " 角形を描きます")
pensize(3)
pencolor("darkorange")
for i in range(n):
fd(240 / n)
rt(360 / n)
ht()
done()
ヒント
input() を使うプログラムは,右下の
コンソールの入力行にあらかじめ答えを 1 行ずつ書いておくか,
そこを空にしたまま実行して,出てくる窓に打ち込みます.
このひな形には ひろしま と 6 が入れてあります.
書き換えて試してください.
input() が返すのは文字なので,
計算に使うときは int() で数に直します.
よく使う命令の早見
くわしくはタートル命令リファレンスにあります. ここには,書き出すときによく使うものだけを並べます.
| やりたいこと | 書き方 |
|---|---|
| 進む・下がる | fd(100) bk(50) |
| 曲がる | lt(90) rt(45) |
| 線を引かずに動く | pu() → goto(x, y) → pd() |
| 色と太さ | pencolor("red") pensize(3) |
| 塗りつぶす | begin_fill() … end_fill() |
| 同じことを繰り返す | for i in range(6): |
| 条件で分ける | if x > 100: |
| まとまりに名前を付ける | def kaku(): |
| かめを増やす | t = Turtle() |
| 文字を書く | write("文字", font=("Arial", 18, "normal")) |
| 動かし続ける | ontimer(tick, 30) |
| キーを受ける | onkeypress(go, "Left") + listen() |
| 当たり判定 | if t.distance(u) < 30: |
| でたらめな数 | import random + random.randint(1, 6) |
| かめを消す | ht() |
うまくいかないときは
- コンソールを見る.エラーには行番号と種類が出ます.まずそこを読んでください.
- 全角に注意.
(),や全角スペースは使えません.SyntaxError: invalid characterと出たらこれです. - 1 行目を確かめる.
NameError: name 'fd' is not definedは,from turtle import *の書き忘れです. - 少しずつ書く.2〜3 行書いては実行する人のほうが,結果的に速く進みます.
- 最後に足した行を消す.そこまでは動いていたはずです.
- 速さを落とす.「とてもゆっくり」にすると,かめがどこで思わぬ方へ曲がったかが目で追えます.
ヒント
このページは採点されません.
壊れても,消しても,何を書いてもかまいません.
失敗できる場所があることが,上達のいちばんの近道です.