an interactive test for various game pad configs
This commit is contained in:
parent
5867589993
commit
b0de0e126e
62
collects/2htdp/tests/pad1.rkt
Normal file
62
collects/2htdp/tests/pad1.rkt
Normal file
|
@ -0,0 +1,62 @@
|
|||
#lang racket/gui
|
||||
|
||||
(require 2htdp/image 2htdp/universe)
|
||||
|
||||
;; constants
|
||||
(define width 1200)
|
||||
(define height 300)
|
||||
(define center-x (quotient width 2))
|
||||
(define center-y (quotient height 2))
|
||||
(define x0 0)
|
||||
|
||||
;; graphical constants
|
||||
(define label "press down, press a, press rshift")
|
||||
(define (mt)
|
||||
(overlay/align 'left 'top
|
||||
(text label 22 'red)
|
||||
(add-line
|
||||
(add-line (empty-scene width height 'lightblue)
|
||||
center-x 0
|
||||
center-x height
|
||||
'blue)
|
||||
0 center-y
|
||||
width center-y
|
||||
'blue)))
|
||||
|
||||
(define dot (circle 3 'solid 'red))
|
||||
|
||||
(define (render w)
|
||||
(define x (transform-x (real-part w)))
|
||||
(define y (transform-y (imag-part w)))
|
||||
(place-image dot x y (mt)))
|
||||
|
||||
(define ((transform center) delta)
|
||||
(+ center delta))
|
||||
|
||||
(define transform-x (transform center-x))
|
||||
(define transform-y (transform center-y))
|
||||
|
||||
(define (pad-handler x k)
|
||||
(case (string->symbol k)
|
||||
[(up w) (- x 0+10i)]
|
||||
[(down s) (+ x 0+10i)]
|
||||
[(left a) (- x 10)]
|
||||
[(right d) (+ x 10)]
|
||||
[(| |) x0]
|
||||
[(shift) (conjugate x)]
|
||||
[(rshift) (stop-with (conjugate x))]))
|
||||
|
||||
(define ((key-handler tag) x k)
|
||||
(displayln `(,tag ,k))
|
||||
x)
|
||||
|
||||
(define-syntax-rule
|
||||
(run txt clause ...)
|
||||
(begin (set! label (string-append txt label))
|
||||
(big-bang x0 (to-draw render) (on-pad pad-handler) clause ... )))
|
||||
|
||||
(= -10-10i (run ""))
|
||||
(= -10-10i (run "press l, " (on-key (key-handler 'key))))
|
||||
(= -10-10i (run "press l, " (on-key (key-handler 'key)) (on-release (key-handler 'release))))
|
||||
(= -10-10i (run "press l, " (on-release (key-handler 'release))))
|
||||
|
|
@ -39,4 +39,4 @@ run on-release-no-key.rkt
|
|||
run struct-universe.rkt
|
||||
run universe-receive.rkt
|
||||
run name.rkt
|
||||
|
||||
run pad1.rkt
|
||||
|
|
Loading…
Reference in New Issue
Block a user