codeworld-api-0.2.2.0: Graphics library for CodeWorld

Safe HaskellNone
LanguageHaskell98

CodeWorld

Contents

Synopsis

Entry points

drawingOf Source #

Arguments

:: Picture

The picture to show on the screen.

-> IO () 

Draws a Picture. This is the simplest CodeWorld entry point.

animationOf Source #

Arguments

:: (Double -> Picture)

A function that produces animation frames, given the time in seconds.

-> IO () 

Shows an animation, with a picture for each time given by the parameter.

simulationOf Source #

Arguments

:: world

The initial state of the simulation.

-> (Double -> world -> world)

The time step function, which advances the state given the time difference.

-> (world -> Picture)

The visualization function, which converts the state into a picture to display.

-> IO () 

Shows a simulation, which is essentially a continuous-time dynamical system described by an initial value and step function.

interactionOf Source #

Arguments

:: world

The initial state of the interaction.

-> (Double -> world -> world)

The time step function, which advances the state given the time difference.

-> (Event -> world -> world)

The event handling function, which updates the state given a user interface event.

-> (world -> Picture)

The visualization function, which converts the state into a picture to display.

-> IO () 

Runs an interactive event-driven CodeWorld program. This is a generalization of simulations that can respond to events like key presses and mouse movement.

collaborationOf Source #

Arguments

:: Int

The number of participants to expect. The participants will be ^ numbered starting at 0.

-> StaticPtr (StdGen -> world)

The initial state of the collaboration.

-> StaticPtr (Double -> world -> world)

The time step function, which advances the state given the time difference.

-> StaticPtr (Int -> Event -> world -> world)

The event handling function, which updates the state given a participant number and user interface event.

-> StaticPtr (Int -> world -> Picture)

The visualization function, which converts a participant number and the state into a picture to display.

-> IO () 

Runs an interactive multi-user CodeWorld program, involving multiple participants over the internet.

unsafeCollaborationOf Source #

Arguments

:: Int

The number of participants to expect. The participants will be ^ numbered starting at 0.

-> (StdGen -> world)

The initial state of the collaboration.

-> (Double -> world -> world)

The time step function, which advances the state given the time difference.

-> (Int -> Event -> world -> world)

The event handling function, which updates the state given a participant number and user interface event.

-> (Int -> world -> Picture)

The visualization function, which converts a participant number and the state into a picture to display.

-> IO () 

A version of collaborationOf that avoids static pointers, and does not check for consistent parameters.

Pictures

data TextStyle Source #

Constructors

Plain 
Bold 
Italic 

blank :: Picture Source #

A blank picture

polyline :: HasCallStack => [Point] -> Picture Source #

A thin sequence of line segments, with these points as endpoints

path :: HasCallStack => [Point] -> Picture Source #

Warning: Please use polyline instead of path.

A thin sequence of line segments, with these points as endpoints

thickPolyline :: HasCallStack => Double -> [Point] -> Picture Source #

A thick sequence of line segments, with given line width and endpoints

thickPath :: HasCallStack => Double -> [Point] -> Picture Source #

Warning: Please used thickPolyline instead of thickPath.

A thick sequence of line segments, with given line width and endpoints

polygon :: HasCallStack => [Point] -> Picture Source #

A thin polygon with these points as vertices

thickPolygon :: HasCallStack => Double -> [Point] -> Picture Source #

A thick polygon with this line width and these points as vertices

solidPolygon :: HasCallStack => [Point] -> Picture Source #

A solid polygon with these points as vertices

curve :: HasCallStack => [Point] -> Picture Source #

A smooth curve passing through these points.

thickCurve :: HasCallStack => Double -> [Point] -> Picture Source #

A thick smooth curve with this line width, passing through these points.

closedCurve :: HasCallStack => [Point] -> Picture Source #

A smooth closed curve passing through these points.

loop :: HasCallStack => [Point] -> Picture Source #

Warning: Please use closedCurve instead of loop.

A smooth closed curve passing through these points.

thickClosedCurve :: HasCallStack => Double -> [Point] -> Picture Source #

A thick smooth closed curve with this line width, passing through these points.

thickLoop :: HasCallStack => Double -> [Point] -> Picture Source #

Warning: Please use thickClosedCurve instead of thickLoop.

A thick smooth closed curve with this line width, passing through these points.

solidClosedCurve :: HasCallStack => [Point] -> Picture Source #

A solid smooth closed curve passing through these points.

solidLoop :: HasCallStack => [Point] -> Picture Source #

Warning: Please use solidClosedCurve instead of solidLoop.

A solid smooth closed curve passing through these points.

rectangle :: HasCallStack => Double -> Double -> Picture Source #

A thin rectangle, with this width and height

solidRectangle :: HasCallStack => Double -> Double -> Picture Source #

A solid rectangle, with this width and height

thickRectangle :: HasCallStack => Double -> Double -> Double -> Picture Source #

A thick rectangle, with this line width, and width and height

circle :: HasCallStack => Double -> Picture Source #

A thin circle, with this radius

solidCircle :: HasCallStack => Double -> Picture Source #

A solid circle, with this radius

thickCircle :: HasCallStack => Double -> Double -> Picture Source #

A thick circle, with this line width and radius

arc :: HasCallStack => Double -> Double -> Double -> Picture Source #

A thin arc, starting and ending at these angles, with this radius

Angles are in radians.

sector :: HasCallStack => Double -> Double -> Double -> Picture Source #

A solid sector of a circle (i.e., a pie slice) starting and ending at these angles, with this radius

Angles are in radians.

thickArc :: HasCallStack => Double -> Double -> Double -> Double -> Picture Source #

A thick arc with this line width, starting and ending at these angles, with this radius.

Angles are in radians.

text :: HasCallStack => Text -> Picture Source #

A piece of text

colored :: HasCallStack => Color -> Picture -> Picture Source #

A picture drawn entirely in this color.

coloured :: HasCallStack => Color -> Picture -> Picture Source #

A picture drawn entirely in this colour.

translated :: HasCallStack => Double -> Double -> Picture -> Picture Source #

A picture drawn translated in these directions.

scaled :: HasCallStack => Double -> Double -> Picture -> Picture Source #

A picture scaled by these factors.

dilated :: HasCallStack => Double -> Picture -> Picture Source #

A picture scaled by these factors.

rotated :: HasCallStack => Double -> Picture -> Picture Source #

A picture rotated by this angle.

Angles are in radians.

(<>) :: Monoid m => m -> m -> m infixr 6 #

An infix synonym for mappend.

Since: 4.5.0.0

(&) :: Picture -> Picture -> Picture infixr 0 Source #

Binary composition of pictures.

coordinatePlane :: HasCallStack => Picture Source #

A coordinate plane. Adding this to your pictures can help you measure distances more accurately.

Example:

main = drawingOf (myPicture <> coordinatePlane) myPicture = ...

:: HasCallStack => Picture Source #

The CodeWorld logo.

rotatedVector :: Double -> Vector -> Vector Source #

Angle is in radians

Colors

data Color Source #

Constructors

RGBA !Double !Double !Double !Double 

Instances

Eq Color Source # 

Methods

(==) :: Color -> Color -> Bool #

(/=) :: Color -> Color -> Bool #

Show Color Source # 

Methods

showsPrec :: Int -> Color -> ShowS #

show :: Color -> String #

showList :: [Color] -> ShowS #

pattern RGB :: Double -> Double -> Double -> Color Source #

pattern HSL :: Double -> Double -> Double -> Color Source #

assortedColors :: [Color] Source #

An infinite list of colors.

fromHSL :: Double -> Double -> Double -> Color Source #

Warning: Please use HSL instead of fromHSL.

Events

data Event Source #

An event initiated by the user.

Values of this type represent events that the user triggers when using an interaction, defined with interactionOf.

Key events describe the key as Text. Most keys are represented by a single character text string, with the capital letter or other symbol from the key. Keys that don't correspond to a single character use longer names from the following list. Keep in mind that not all of these keys appear on all keyboards.

  • Up, Down, Left, and Right for the cursor keys.
  • F1, F2, etc. for function keys.
  • Backspace
  • Tab
  • Enter
  • Shift
  • Ctrl
  • Alt
  • Esc
  • PageUp
  • PageDown
  • End
  • Home
  • Insert
  • Delete
  • CapsLock
  • NumLock
  • ScrollLock
  • PrintScreen
  • Break
  • Separator
  • Cancel
  • Help

Debugging

trace :: Text -> a -> a Source #

Prints a debug message to the CodeWorld console when a value is forced. This is equivalent to the similarly named function in Trace, except that it uses the CodeWorld console instead of standard output.