fixed an (apparently VERY old) problem with lights out and the built-in boards

please merge to release branch
(cherry picked from commit 4f236386a9)
This commit is contained in:
Robby Findler 2010-10-22 14:43:58 -05:00 committed by Ryan Culpepper
parent b845c05e7d
commit b7ccf8d91e
2 changed files with 79 additions and 68 deletions

View File

@ -51,11 +51,14 @@
6)]
[button-panel (make-object horizontal-panel% dialog)]
[cancel? #t]
[ok (make-object button% "OK"
button-panel
[ok (new button%
[label "OK"]
[parent button-panel]
[style '(border)]
[callback
(lambda x
(set! cancel? #f)
(send dialog show #f)))]
(send dialog show #f))])]
[cancel (make-object button% "Cancel"
button-panel
(lambda x
@ -76,9 +79,12 @@
(send random-slider get-value)
(lambda (x) (make-vector (send random-slider get-value) 'o)))]
[(prebuilt)
(board-board (list-ref boards (send prebuilt get-selection)))]))))
(to-vectors (board-board (list-ref boards (send prebuilt get-selection))))]))))
(new-board)))
(define (to-vectors lsts)
(apply vector (map (λ (x) (apply vector x)) lsts)))
'(define (build-vector n f)
(list->vector
(let loop ([n n])

View File

@ -1,64 +1,69 @@
(module boards mzscheme
#lang racket/base
(require racket/vector)
(provide boards
(struct board (name board)))
(struct-out board))
(define-struct board (name board))
(define (build-board name vec)
(make-board name (vector-map vector-copy vec)))
(define boards
(list
(make-board
"1"
#(#(o o o o o)
#(o o o o o)
#(x o x o x)
#(o o o o o)
#(o o o o o)))
'((o o o o o)
(o o o o o)
(x o x o x)
(o o o o o)
(o o o o o)))
(make-board
"2"
#(#(x o x o x)
#(x o x o x)
#(o o o o o)
#(x o x o x)
#(x o x o x)))
'((x o x o x)
(x o x o x)
(o o o o o)
(x o x o x)
(x o x o x)))
(make-board
"3"
#(#(o x o x o)
#(x x o x x)
#(x x o x x)
#(x x o x x)
#(o x o x o)))
'((o x o x o)
(x x o x x)
(x x o x x)
(x x o x x)
(o x o x o)))
(make-board
"4"
#(#(o o o o o)
#(x x o x x)
#(o o o o o)
#(x o o o x)
#(x x o x x)))
'((o o o o o)
(x x o x x)
(o o o o o)
(x o o o x)
(x x o x x)))
(make-board
"5"
#(#(x x x x o)
#(x x x o x)
#(x x x o x)
#(o o o x x)
#(x x o x x)))
'((x x x x o)
(x x x o x)
(x x x o x)
(o o o x x)
(x x o x x)))
(make-board
"6"
#(#(o o o o o)
#(o o o o o)
#(x o x o x)
#(x o x o x)
#(o x x x o)))
'((o o o o o)
(o o o o o)
(x o x o x)
(x o x o x)
(o x x x o)))
(make-board
"7"
#(#(x x x x o)
#(x o o o x)
#(x o o o x)
#(x o o o x)
#(x x x x o)))
'((x x x x o)
(x o o o x)
(x o o o x)
(x o o o x)
(x x x x o)))
(make-board
"Diagonal"
#(#(o o o o x)
#(o o o x o)
#(o o x o o)
#(o x o o o)
#(x o o o o))))))
'((o o o o x)
(o o o x o)
(o o x o o)
(o x o o o)
(x o o o o)))))