【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【カメ】Pythonで激突カメレース

こんにちは。
年中410エラー
システムソリューション部のかわいです。

最近湿気と暑さと住民税で元気が出ないので、今回はPythonライブラリのturtleを使って
カメたちを競わせたいと思います。↑のGIF画像みたいにいろいろできちゃうので、ぜひ好きなカメを好きなだけ動かしてみてください。

動作環境とコード全文

それでは早速、

使用OS:Microsoft Windows 10 Pro
Pyhtonバージョン:3.10

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from turtle import *
from random import randint
import time
 
#ライン引き
for step in range(11):
    write(step, align='center')
    speed(80)
    right(90)
    forward(10)
    pendown()
    forward(150)
    penup()
    backward(160)
    left(90)
    forward(20)
 
time.sleep(1)
 
#赤カメ
red = Turtle()
red.color('red')
red.shape('turtle')
red.penup()
red.goto(0, -10)
 
#青カメ
blue = Turtle()
blue.color('blue')
blue.shape('turtle')
blue.penup()
blue.goto(0, -30)
 
#黄カメ
yellow = Turtle()
yellow.color('orange')
yellow.shape('turtle')
yellow.penup()
yellow.goto(0, -60)
 
#緑カメ
green = Turtle()
green.color('green')
green.shape('turtle')
green.penup()
green.goto(0, -90)
 
#黒カメ
black = Turtle()
black.color('black')
black.shape('turtle')
black.penup()
black.goto(0, 60)
 
#ネズミ亀
gray = Turtle()
gray.color('gray')
gray.shape('turtle')
gray.penup()
gray.goto(0, -120)
 
#回転カメ
pink = Turtle()
pink.color('pink')
pink.shape('turtle')
pink.penup()
pink.goto(0, -150)
 
time.sleep(3)
 
#それぞれのカメを動かすx100
for kame in range(100):
    red.forward(randint(1, 2))
    blue.forward(randint(-1, 3))
    yellow.forward(randint(-3, 4))
    green.forward(randint(-4, 5))
    black.right(90)
    gray.forward(randint(-3, -2))
    pink.forward(randint(-10, 10))

コード解説

各ライブラリをインポートします。
カメをランダムに走らせるためにrandom
timeはカメを配置してからちょっと待機させるための演出用なのでなくてもok

1
2
3
from turtle import *
from random import randint
import time

正直気にする箇所はここだけ。
0を起点に、レース場として10本線が引かれるまでforで繰り返します。

1
2
3
4
5
6
7
8
9
10
11
for step in range(11):
    write(step, align='center')
    speed(80)
    right(90)
    forward(10)
    pendown()
    forward(150)
    penup()
    backward(160)
    left(90)
    forward(20)

color()を使ってカメの色を指定します。
fillcolor()でもう少し細かく色指定ができます。
shape()でカメの形、goto()で最初の配置座標を指定します。後続のカメはデバッグしながら少しずつズラしていけばok

1
2
3
4
5
6
#赤カメ
red = Turtle()
red.color('red')
red.shape('turtle')
red.penup()
red.goto(0, -10)

100回動くようにforで回します。
それぞれのカメごとに(数字, 数字)のどちらかの数字がrandom選択されるようになってます。
今回はめんどくさくて記述してませんが、ゴールした時に「ゴール!」みたいな表示を出せばたぶん雰囲気出ますね。

1
2
3
4
5
6
7
8
for kame in range(100):
    red.forward(randint(1, 2))
    blue.forward(randint(-1, 3))
    yellow.forward(randint(-3, 4))
    green.forward(randint(-4, 5))
    black.right(90)
    gray.forward(randint(-3, -2))
    pink.forward(randint(-10, 10))

もともとturtlrは描写ライブラリみたいですが、カメshapeを入れたばっかりにこんな使い方もできます。
(詳細な使い方は公式ドキュメント参照したれり)
Python入門にはうってつけだと思うので、ぜひクーラーのきいた涼しい部屋でカメカメしてみてください。
ではでは

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
13
読み込み中...
13 票, 平均: 1.00 / 113
1,001
X facebook はてなブックマーク pocket
【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

かわ けん

システムソリューション部所属
好奇心旺盛ポケ○ン