SandCastleIcon.png This article has links to websites or programs outside of Scratch and Wikipedia. Remember to stay safe while using the internet, as we cannot guarantee the safety of other websites.
Current Version 1.0
Operating Systems Windows, macOS, Linux
Purpose for creation To add features that were felt to be missing from Scratch
Developer(s) Sparks, nXIII, Markyparky56, MathWizz, Sperry, ProgrammingFreak, SeptimusHeap
Open source? Yes
Programming language Squeak
Released? Yes
Compatible with 1.4
Official Website
Archived Forum Topic ar-topic:30968
Active no

Panther is a Scratch modification that offers better manipulation (such as blocks that create, move, show, and hide lists and variables), allows cloning, allows projects to read and write computer files, and can be extended by writing blocks in Squeak.


Panther was devised after a group of Scratchers got together in an attempt to make up for some of the features they felt Scratch lacked. It is understandable why Scratch would not have many of Panther's features as it is designed to be easily grasped and too many features would make it harder to get the hang of it. Panther is therefore designed mostly for people who have already been introduced to programming.[1] Panther was released in May of 2010.[2]

Panther is no longer being developed and the download link on Panther's official site is broken,[3] but a copy has been made available by Scratcher powerpoint56 here.[4]


The following people worked on Panther:

  • nXIII — Head programmer
  • Markyparky56 — Programming/research
  • MathWizz — Java applet programmer
  • ProgrammingFreak — Programmer
  • Sparks — Site master/advertising/programming adviser.
  • Sperry — Programmer/adviser
  • SeptimusHeap — Programmer/founder (not working on 1.1)

The official Panther "meet the developers" page is here.


Note Note: Panther has a new block type, color blocks, which can be dropped into any color input. In Panther itself these blocks are rectangular.

The following features are available in Panther 1.0:[5]


  • make draggable :: motion — Makes the sprite draggable.
  • make undraggable :: motion — Makes the sprite undraggable when viewing the project.
  • <draggable? :: motion> — Reports if the sprite is draggable when viewing the project.


  • when [ v] key pressed has added keys. (See #Sensing.)
  • <[ v] received? :: control> — Reports true if any script that responds to the given broadcast is running.
  • clone me :: control — Clones the sprite, including costumes, scripts and local variables.
  • delete me :: control — Deletes the sprite if it is a clone. (It does not delete the sprite otherwise to avoid accidents.)
  • when Sprite1 created :: control hat — Triggered in a clone sprite once created.


  • do with camera open {
    } :: looks
    — Runs the given blocks with the camera open.
  • <camera is open? :: looks> — Reports true if the camera is open.
  • replace costume () with [ v] :: looks — Replaces the specified costume with a new one from one of the following sources:
    • Camera — takes a photo, if the camera is open
    • Stage — takes a picture of the stage and everything on it
    • Paint new
    • Import
  • add [camera v] to costumes :: looks — Adds a new costume and switches to it; same options as above block.
  • delete costume (1) :: looks
  • ([color v] effect :: looks) — Reports the value of the given graphic effect.
  • The saturation and pointillize effects have been re-added.
  • change stretch by () :: looks, change vStretch by () :: looks — Stretches a sprite horizontally or vertically respectively.
  • set stretch to () % :: looks, set vStretch to () % :: looks
  • (stretch :: looks), (vStretch :: looks) — Reports the percentage the sprite is horizontally or vertically stretched by respectively.
  • <visible? :: looks> — Reports true if the sprite is hidden, false otherwise.

Stage only:

  • change horizontal pan by () :: looks, change vertical pan by () :: looks — Pans the stage along the x-axis or y-axis respectively.
  • set horizontal pan to () :: looks, set vertical pan to () :: looks
  • change zoom by () :: looks
  • set zoom to () % :: looks


  • (sprite name :: sensing) — Reports the sprite's name.
  • set sprite name to [] :: sensing — Changes the sprite's name.
  • <I am a clone? :: sensing>
  • ask [] in dialog :: sensing — Asks a question in a dialog box and stores the answer in (answer).
  • show dialog [info] with text [] :: sensing — Shows a dialog box with the given heading and message.
  • The keys ⇧ Shift, Control, Alt, ← Backspace, and Esc have been added to <key [ v] pressed?>.
  • (key pressed :: sensing) — Reports the currently pressed key, if any.
  • (date/time: [ v] :: sensing) — Reports the given option, which may be one of the following:
    • Time
    • Hour
    • Minute
    • Second
    • Date
    • Day of month
    • Day of year
    • Weekday-name
    • Weekday-#
    • Month-name
    • Month-#
    • Year


  • (() ^ () :: operators) — Reports the first number raised to the power of the second.
  • <true :: operators>, <false :: operators> — Reports true or false respectively.
  • <[true] as boolean :: operators> — Reports true unless the given input is false or 0.
  • (if <> then [] else [] :: operators) — Reports the second input if the first input is true and the third otherwise.
  • (if <> then <> else <> :: operators)
  • (letters (1) - (5) of [hello world] :: operators)
  • (index of [o] starting at (6) in [hello world] :: operators) — Reports the index of the first occurrence first input (which must be a single character) not before the nth character.
  • A factorial option has been added to ([ v] of () :: operators).
  • ([ v] :: operators) — Reports one of the following:
    • Pi — a good approximation of π
    • E — a good approximation of e
    • Newline — a special character that begins a new line


  • (pen color :: pen) — Reports the pen color.
  • (pen hue :: pen) — Reports a number from 0 to 200 representing the hue of the pen color. This is what Scratch calls "pen color", but this name was chosen to prevent confusion.
  • (pen shade :: pen)
  • (pen size :: pen)



  • ([a variable▾] :: variables) — Reports the value of the variable named. The other Variables blocks have been similarly generalized.
  • move [a variable▾] to x: (0) y: (0) :: variables
  • set layout of [a variable▾] to [large v] :: variables
  • make [a variable] :: variables — Creates a variable with the given name.
  • delete [a variable] :: variables


  • ([a list▾] :: list) — Reports the contents of the list named. The other List blocks have been similarly generalized.
  • show list [a list▾] :: list
  • hide list [a list▾] :: list
  • make list [a list] :: list — Creates a list with the given name.
  • delete list [a list] :: list


This category allows projects to read and write computer files. (Because only trusted projects should do this, a warning is displayed the first time one of the blocks that read or write files are used.) It also has a few blocks allowing the project to use Mesh.

  • (contents of file [] :: #2c78c3) — Reports the contents of the specified text file. A complete file path must be given unless it is in the Panther folder.
  • (line () of file [] :: #2c78c3) — Reports the contents of the specified line of the specified file.
  • (number of lines of file [ ] :: #2c78c3)
  • (contents of file at URL [http://] :: #2c78c3) — Reports the content of the specified web page.
  • (line () of file at URL [http://] :: #2c78c3)
  • (number of lines of file at URL [http://] :: #2c78c3)
  • write [] to file [] :: #2c78c3 — Writes the given text to the end of the specified file, which must already exist.
  • clear file [] :: #2c78c3 — Clears the entire file, creating it if it does not already exist.
  • host mesh :: #2c78c3
  • join mesh [] :: #2c78c3
  • <hosting mesh? :: #2c78c3>
  • leave mesh :: #2c78c3
  • (mesh IP address :: #2c78c3) — Reports the user's internal IP address.


The block palette featuring the Color blocks
  • Make a color — Makes a variable that stores a color.
  • Delete a color
  • ([a color▾] :: #404040) — Reports the value of the color variable named.
  • set [a color▾] to [#cdad00] :: #404040
  • show color [a color▾] :: #404040 — Shows a watcher for the color variable named.
  • hide color [a color▾] :: #404040
  • make color [a color] :: #404040 — Creates a color variable with the given name.
  • delete color [a color] :: #404040
  • (color r: (0) g: (0) b: (0) :: #404040) — Reports the color with the given amounts of red, green, and blue, from 0 to 1.
  • ([#ee9a00] red :: #404040), ([#ffc1c1] green :: #404040), ([#8db6cd] blue :: #404040) — Reports the amount of red, green, or blue in the given color respectively.
  • (color h: (0) s: (0) b: (0) :: #404040) — Reports the color with the given hue, in degrees; saturation, from 0 to 1; and brightness, from 0 to 1.
  • ([#1e90ff] hue :: #404040), ([#8b4789] saturation :: #404040), ([#00fa9a] brightness :: #404040)
  • (mix [#ff6347] with [#698b22] :: #404040) — Mixes two colors evenly.
  • (mix [#8b3626] (1) : (1) with [#2e8b57] :: #404040) — Mixes to the given ratio.
  • (color of pixel x: (0) y: (0) :: #404040) — Reports the color of the pixel at the given point.
  • ([#8b4513] as string :: #404040) — Reports "#" followed a hexadecimal numeral representing the given color.
  • ([] as color :: #404040) — Reports the color represented by the given string, which may be a name or "#" followed by a hexadecimal numeral.
  • (color named [black v] :: #404040) — Reports the color named.


See also: Squeak Tutorial

CYOB stands for "Code Your Own Block" and allows any user familiar with Squeak to write blocks for Panther as part of their projects. A block can be created by clicking "Make a block" at the bottom of the Variables palette. The user can then enter the block name and decide whether it should be for all sprites or this sprite only. Then a block editor will appear, allowing the user to change the name, type, and color of the block and to write the block's Squeak code. Each argument is given a name beginning with "t" followed by a numeral; the first argument is t1, the second t2, etc.

Note Note: Panther blocks do not use the same argument notation as does Scratch. An argument is added to a block title by writing the name of the argument type between dollar signs; see Squeak Tutorial#Block arguments for a list.

For example, a block to open the sound recorder can be created as follows: Enter the block name "record sound". This is a stack block, so the block type should be -. The color picker can be used to select the color of Sound. The block only needs to send a recordSound message to the stage or sprite, so in the final large text box type self recordSound. Many Panther blocks could be found at the block library.

Other Features

  • Mesh functionality is provided by the Mesh menu.
  • Editing or rearranging costumes no longer snaps the costume pane back to the beginning.
  • Any pane with a scrollbar can also be dragged with the mouse.
  • The appearance of blocks can be changed with the Graphics Quality menu in Settings, which has the options good, normal, and fast.

See Also

External Links


Cookies help us deliver our services. By using our services, you agree to our use of cookies.