Upgrade to Pro — share decks privately, control downloads, hide ads and more …

turtleであそぼう!

ksnt
September 18, 2020
200

 turtleであそぼう!

はんなりPython #32

ksnt

September 18, 2020
Tweet

Transcript

  1. turtleであそぼう!
    ksnt

    View full-size slide

  2. turtleって何?何?
    ・Python標準ライブラリに入ライブラリに入っているモに入っているモジ入っているモジュって何?いるモジュールモジュール
    ・計算機科学者のシーモア・パのシーモア・パパシーモア・パパートが生みの親が生みの親生みの親みのシーモア・パパ親
    ・お絵かきが得意絵かきが得意かきが生みの親得意

    View full-size slide

  3. Hello world with turtle
    from turtle import *
    color('blue', 'yellow')
    begin_fill()
    while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
    break
    end_fill()
    done()

    View full-size slide

  4. 今回はこのはこのシーモア・パパturtleで
    ゲームをつくってみたをつくって何?みた

    View full-size slide

  5. なに入っているモジはともあれ
    デモ

    View full-size slide

  6. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(1)
    # Set up screen
    wn = turtle.Screen()
    wn.bgcolor("black")
    wn.bgpic("kbgame-bg.gif")
    wn.tracer(7)
    # Draw border
    mypen = turtle.Turtle()
    mypen.color(“black")
    mypen.penup()
    mypen.setposition(-300, -300)
    mypen.pendown()
    mypen.pensize(3)
    for side in range(4):
    mypen.forward(600)
    mypen.left(90)
    mypen.hideturtle()
    # スクリに入っているモーンのセットアップのシーモア・パパセットが生みの親アップ
    スクリに入っているモーンのセットアップのシーモア・パパ生みの親成
    背景色を設定を設定
    背景のシーモア・パパ画像を設定を設定
    スクリに入っているモーンのセットアップアップデートが生みの親が生みの親遂行される回数の調されるモジュール回はこの数の調整のシーモア・パパ調整
    # 境界を描くを描くく
    タートが生みの親ルのシーモア・パパ生みの親成
    タートが生みの親ルのシーモア・パパ色を設定を設定
    ペンのセットアップを上げるげるモジュール
    ペンのセットアップのシーモア・パパポジションのセットアップをセットが生みの親
    ペンのセットアップを下ろすろす
    ペンのセットアップのシーモア・パパサイズを設定を設定
    ペンのセットアップで四角形を書くを書くく
    タートが生みの親ルを隠すす
    border.py

    View full-size slide

  7. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(2)
    # Create player turtle
    player = turtle.Turtle()
    player.color("blue")
    player.shape("triangle")
    player.penup()
    player.speed(0)
    # Create obstacles
    maxObsts = 20
    obsts = []
    for count in range(maxObsts):
    obsts.append(turtle.Turtle())
    obsts[count].color("yellow")
    obsts[count].shape("square")
    obsts[count].penup()
    obsts[count].speed(0)
    obsts[count].setposition(random.randint(-
    300, 300), random.randint(-300, 300))
    # プレイヤーをつくるモジュール
    タートが生みの親ルのシーモア・パパ生みの親成
    タートが生みの親ルのシーモア・パパ色を設定を設定
    タートが生みの親ルのシーモア・パパ形を書くを設定
    ペンのセットアップを上げるげるモジュール
    タートが生みの親ルのシーモア・パパ初期速度を設定を設定
    # 障害物をつくるをつくるモジュール
    障害物をつくるのシーモア・パパ数の調整を設定
    黄色を設定のシーモア・パパ障害物をつくるをmaxObsts個つくるつくるモジュール
    障害物をつくるをランのセットアップダムをつくってみたに入っているモジ配置するするモジュール

    View full-size slide

  8. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(3)
    # Create the score variable
    score = 0
    # Create goals
    maxGoals = 10
    goals = []
    for count in range(maxGoals):
    goals.append(turtle.Turtle())
    goals[count].color("red")
    goals[count].shape("circle")
    goals[count].penup()
    goals[count].speed(0)
    goals[count].setposition(random.r
    andint(-280, 280),
    random.randint(-280, 280))
    # スコア変数の調整をつくるモジュール
    0点からスタートからスタートスタートが生みの親
    # ゴールをつくるモジュール
    ゴールのシーモア・パパ数の調整を設定
    ゴールをmaxGoals個つくるつくるモジュール
    ゴールをランのセットアップダムをつくってみたに入っているモジ配置するするモジュール

    View full-size slide

  9. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(4)
    # Define function
    def turnleft():
    player.left(30)
    def turnright():
    player.right(30)
    def increasespeed():
    global speed
    speed += 1
    def decresespeed():
    global speed
    if speed > 0:
    speed -= 1
    elif speed == 0:
    pass
    else:
    speed = 0
    def isCollision(t1, t2):
    d = math.sqrt(math.pow(t1.xcor()-
    t2.xcor(), 2) + math.pow(t1.ycor()-
    t2.ycor(), 2))
    if d < 20:
    return True
    else:
    return False

    View full-size slide

  10. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(5)
    # Set keyboard bindings
    turtle.listen()
    turtle.onkey(turnleft, "Left")
    turtle.onkey(turnright, "Right")
    turtle.onkey(increasespeed, "Up")
    turtle.onkey(decresespeed, "Down")
    # キーボード
    バインのセットアップディンのセットアップグの設定のシーモア・パパ設定

    View full-size slide

  11. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(6)
    start = time.time()
    while True:
    player.forward(speed)
    now = time.time()
    # Draw the elapsed time on th screen
    mypen.undo()
    mypen.penup()
    mypen.hideturtle()
    mypen.setposition(0, 310)
    mypen.write(now - start, False, align="left",
    font=("Ubuntu", 14, "normal"))
    # スクリに入っているモーンのセットアップ上げるに入っているモジ時間経過を描くを描くく

    View full-size slide

  12. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(7)
    # Draw the score on the screen

    # Boundary Checking
    if player.xcor() > 300 or player.xcor() < -300:
    player.right(180)
    os.system("mplayer bounce.mp3&")
    if player.ycor() > 300 or player.ycor() < -300:
    player.right(180)
    os.system("mplayer bounce.mp3&")
    # 境界を描くチェック

    View full-size slide

  13. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(7)
    # Move the goals
    for count in range(maxGoals):
    goals[count].forward(3)
    # Boundary Checking
    ...
    # Collision checking for player and goals
    if isCollision(player, goals[count]):
    goals[count].setposition(random.randint(-280, 280),
    random.randint(-280, 280))
    goals[count].right(random.randint(0, 360))
    os.system("mplayer collision.mp3&")
    score += 1
    +1point!
    Goal
    turtle

    View full-size slide

  14. turtleを使ってゲームを作って何?ゲームをつくってみたを作るるモジュール(7)
    for count in range(maxObsts):
    # Collision checking for player and obstacles
    if isCollision(player, obsts[count]):
    # os.system("mplayer collision.mp3&")
    score -= 1
    -1point!
    Obstacle
    turtle

    View full-size slide

  15. 再度を設定デモ

    View full-size slide

  16. Enjoy Python!

    View full-size slide

  17. Reference

    Simple Python Turtle Graphics Game (Part 1 –
    Part 9)
    https://www.youtube.com/watch?
    v=PTgyzZGknvg

    View full-size slide