1.8 Managing Control Arrows: "arrow.ss"

► |  | Teachpacks

1 | Ht DP Teachpacks
2 | Ht DP/ 2e Teachpacks

▼ | 1 | Ht DP Teachpacks

1.1 | Manipulating Images: "image.ss"
1.2 | Simulations and Animations: "world.ss"
1.3 | Converting Temperatures: "convert.ss"
1.4 | Guessing Numbers: "guess.ss"
1.5 | Master Minding: "master.ss"
1.6 | Simple Drawing: "draw.ss"
1.7 | Hangman: "hangman.ss"
1.8 | Managing Control Arrows: "arrow.ss"
1.9 | Manipulating Simple HTML Documents: "docs.ss"
1.10 | Working with Files and Directories: "dir.ss"
1.11 | Graphing Functions: "graphing.ss"
1.12 | Simple Graphical User Interfaces: "gui.ss"
1.13 | An Arrow GUI: "arrow-gui.ss"
1.14 | Controlling an Elevator: "elevator.ss"
1.15 | Queens: "show-queen.ss"
1.16 | Matrix Operations: "matrix.ss"

On this page:

control-left-right
control-up-down
control

top← prev up next →

#### 1.8`` Managing Control Arrows: "arrow.ss"

The teachpack implements a controller for moving shapes across a canvass. A shape is a class of data for which move and draw operations can be drawn.

( control-left-right shape n move draw) → true
shape : Shape
n : number?
move : (-> number? Shape Shape)
draw : (-> Shape true)

Moves shape n pixels left (negative) or right (positive).

( control-up-down shape n move draw) → true
shape : Shape
n : number?
move : (-> number? Shape Shape)
draw : (-> Shape true)

Moves shape n pixels up (negative) or down (positive).

( control shape n move-lr move-ud draw) → true
shape : Shape
n : number?
move-lr : (-> number? Shape Shape)
move-ud : (-> number? Shape Shape)
draw : (-> Shape true)

Moves shape N pixels left or right and up or down, respectively.

Example:

; A shape is a structure:
; (make-posn num num)
; RAD : the radius of the simple disk moving across a canvas
( define RAD 10)
; move : number shape -> shape or false
; to move a shape by delta according to translate
; effect: to redraw it
( define (move delta sh)
( cond
[( and (clear-solid-disk sh RAD)
(draw-solid-disk (translate sh delta) RAD))
(translate sh delta)]
[ else false]))
; translate : shape number -> shape
; to translate a shape by delta in the x direction
( define (translate sh delta)
(make-posn (+ (posn-x sh) delta) (posn-y sh)))
; draw-it : shape -> true
; to draw a shape on the canvas: a disk with radius
( define (draw-it sh)
(draw-solid-disk sh RAD))
; RUN:
; this creates the canvas
(start 100 50)
; this creates the controller GUI
( control-left-right (make-posn 10 20) 10 move draw-it)

top← prev up next →