Skip to content

A turtle graphics (a key feature of the Logo ) engine written in Swift.

License

Notifications You must be signed in to change notification settings

temoki/TortoiseGraphics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Swift Xcode Swift Playgrounds Carthage compatible Version License Platform

A turtle graphics (a key feature of the Logo engine written in Swift.

The commands were implemented with reference to the turtle in Python 3 standard libraries.

Example

// Turtle Star!
🐒.beginFill()
36.timesRepeat {
    🐒.forward(200)
    🐒.left(170)
}
🐒.endFill()

Result

Usage

// Instantiate a `Tortoise`
let 🐒 = Tortoise()

// Instantiate `ImageCanvas` and add the tortoise
let canvas = ImageCanvas(size: Vec2D(300, 300))
canvas.add(🐒)

// Command 🐒
🐒.right(90)
🐒.forward(100)

// Get drawn `CGImage`
let cgImage = canvas.cgImage

Playgrounds

On Xcode

  1. Open TortoiseGraphics.xcworkspace in Xcode.
  2. Build TortoiseGraphics scheme for iOS Simulator.
  3. Select Playground in project navigator.
  4. Let's play!

On Swift Playgrounds (iPad app)

Subscription

  1. Launch Safari on your iPad and browse this page.
  2. Tap the following link to subscribe.
  3. You can get Tortoise Graphics playground book on Swift Playgrounds app.

Download

  1. Download TortoiseGraphics.playgroundbook.zip from here.
  2. Unarchive the downloaded zip file.
  3. Send the unarchvied TortoiseGraphics.playgroundbook file to your iPad by AirDrop.
  4. Open it with Swift Playgrounds app.
  5. Let's play!

Classes

  • Tortoise
  • ImageCanvas
  • Shape
  • Color
  • Vec2D

Enums

  • Speed

Tortoise Commands

Motion

Move and Draw

  • forward(), fd()
  • backword(), back(), bk()
  • right(), rt()
  • left(), lt()
  • setPosition(), setPos(), goto()
  • setX()
  • setY()
  • setHeading(), setH()
  • home()
  • circle()

Tell tortoise's state

  • position, pos
  • towards()
  • xcor
  • ycor
  • heading
  • distance()

Pen Control

Drawing state

  • penDown(), pd(), down()
  • penUp(), pu(), up()
  • penSize()
  • width()
  • isDown
  • penSize
  • width

Color control

  • penColor()
  • penColor
  • fillColor()
  • fillColor

Filling

  • filling
  • beginFill()
  • endFill()

More drawing control

  • reset()
  • clear()

Tortoise state

Visiblity

  • showTortoise(), st()
  • hideTortoise(), ht()
  • isVisible
  • shape()
  • shape

Other Commands

  • Int.timesRepeat() {}
  • random()
  • degrees()
  • radians()
  • colorMode(),
  • colorMode

for Playground

  • PlaygroundCanvas
  • PlaygroundCanvasLiveView

for Swift Playgrounds

  • SwiftPlaygroundCanvas
  • LiveViewController

Requirements

  • Swift 5.1 (Xcode 11.1)
  • iOS/iPadOS 13.0 or later

Installation

github "temoki/TortoiseGraphics"
pod 'TortoiseGraphics'

Remaining Work

  • support SVG output
  • macOS support
  • Swift Package Manager support
  • Enrich tortoise commands
  • Enrich playground contents

Credits

  • Special thanks to @kiyoshifuwa, for the amazing art works.

License

TortoiseGraphics is released under the MIT license. See LICENSE for details.