diff --git a/collects/games/lights-out/board.rkt b/collects/games/lights-out/board.rkt index 46f922b707..bda7a8b7ba 100644 --- a/collects/games/lights-out/board.rkt +++ b/collects/games/lights-out/board.rkt @@ -51,11 +51,14 @@ 6)] [button-panel (make-object horizontal-panel% dialog)] [cancel? #t] - [ok (make-object button% "OK" - button-panel - (lambda x - (set! cancel? #f) - (send dialog show #f)))] + [ok (new button% + [label "OK"] + [parent button-panel] + [style '(border)] + [callback + (lambda x + (set! cancel? #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]) diff --git a/collects/games/lights-out/boards.rkt b/collects/games/lights-out/boards.rkt index 1c727ef721..7886fc1ebb 100644 --- a/collects/games/lights-out/boards.rkt +++ b/collects/games/lights-out/boards.rkt @@ -1,64 +1,69 @@ -(module boards mzscheme - (provide boards - (struct board (name board))) +#lang racket/base +(require racket/vector) - (define-struct board (name board)) +(provide boards + (struct-out board)) - (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))) - (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))) - (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))) - (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))) - (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))) - (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))) - (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))) - (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)))))) +(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))) + (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))) + (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))) + (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))) + (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))) + (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))) + (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))) + (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)))))