File: SpaceNumber.scm

package info (click to toggle)
denemo 2.6.49-0.2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 66,916 kB
  • sloc: ansic: 94,587; lisp: 38,713; xml: 22,675; python: 1,930; sh: 1,239; makefile: 642; yacc: 288; sed: 93
file content (91 lines) | stat: -rw-r--r-- 3,162 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
(define SpaceNumber::Scale (cons "1 2 3 4" "f' a' c'' e''"))
(define SpaceNumber::notelist '())
(define SpaceNumber::buttonlist '())
(define SpaceNumber::score 0)
(define SpaceNumber::CurrentNote "")
(define SpaceNumber::CurrentNoteNum 0)
(define SpaceNumber::NoteIndex 0)

(let ((time (gettimeofday)))
  (set! *random-state*
    (seed->random-state (+ (car time)
      (cdr time)))))

(define (SpaceNumber::gotoEnd)
  (d-CursorRight)
  (if (d-NextObject)
    (SpaceNumber::gotoEnd)
    (d-CursorRight)))

(define (SpaceNumber::NewNote)
  (SpaceNumber::gotoEnd)
  (set! SpaceNumber::CurrentNoteNum (random (length SpaceNumber::notelist)))
  (set! SpaceNumber::CurrentNote (list-ref SpaceNumber::notelist SpaceNumber::CurrentNoteNum))
  (d-CursorToNote SpaceNumber::CurrentNote)
  (d-Insert0)
  )

(define (SpaceNumber::showscore)
 (d-DirectivePut-score-display "SpaceNumber::GameScore" (string-append "<b>Score: </b>" (number->string SpaceNumber::score))))


;TODO perhaps inherit this from EducationGames
(define (SpaceNumber::PlaceAnswerStatus gfx)
  (begin
    (d-DirectivePut-note-minpixels "SpaceNumber::tick" 30)
    (d-DirectivePut-note-gx "SpaceNumber::tick" -10)
    (d-DirectivePut-note-gy "SpaceNumber::tick" 40)
    (d-DirectivePut-note-graphic "SpaceNumber::tick" gfx)))

(define (SpaceNumber::OfferChord)
  (SpaceNumber::showscore)
  (SpaceNumber::NewNote)
)

(define (SpaceNumber::Go)
  (SpaceNumber::showscore)
  (SpaceNumber::gotoEnd)
  (SpaceNumber::OfferChord)
)

(define (SpaceNumber::notechosen NoteListPosition)
  (if  (= SpaceNumber::CurrentNoteNum (string->number NoteListPosition))
    (begin
      (set! SpaceNumber::score (+ SpaceNumber::score 1))
      (SpaceNumber::PlaceAnswerStatus "CheckMark")
      )
    (begin
      (set! SpaceNumber::score (- SpaceNumber::score 1))
      (SpaceNumber::PlaceAnswerStatus "CrossSign")
  	))
   (SpaceNumber::OfferChord)
  )

(define (SpaceNumber::createbutton note)
  (CreateButton (string-append "SpaceNumber::" note)  (string-append " <span font_desc=\"22\" foreground=\"blue\">" note  "</span>"))
     (d-SetDirectiveTagActionScript  (string-append "SpaceNumber::" note) (string-append "(SpaceNumber::notechosen \"" (number->string SpaceNumber::NoteIndex) "\")"))
     (set! SpaceNumber::NoteIndex (+ SpaceNumber::NoteIndex 1))
    )
  
(define (SpaceNumber::help)
  (d-InfoDialog "After you see the note appear on the screen hit the number that corresponds with the line that it is on.")
)
  
;;;;main procedure to call for SpaceNumber
(define (SpaceNumber::SpaceNumbers Scale) 

  (set! SpaceNumber::Scale Scale)
 
  (set! SpaceNumber::buttonlist (string-split (car SpaceNumber::Scale) #\space))
  (set! SpaceNumber::notelist (string-split (cdr SpaceNumber::Scale) #\space))

  (CreateButton "SpaceNumber::GameScore" "<span font_desc=\"22\">Click to start</span>")
  (d-SetDirectiveTagActionScript "SpaceNumber::GameScore" "(SpaceNumber::Go)")

  (CreateButton "SpaceNumber::GameHelp" "<b>Help</b>")
  (d-SetDirectiveTagActionScript "SpaceNumber::GameHelp" "(SpaceNumber::help)")

  (map SpaceNumber::createbutton SpaceNumber::buttonlist)
)

(SpaceNumber::SpaceNumbers SpaceNumber::Scale)