Draw tic-tac-toe squares
This commit is contained in:
parent
0544429d07
commit
918f3ec873
2 changed files with 89 additions and 25 deletions
|
|
@ -85,25 +85,83 @@
|
|||
((button-on-click btn)))))
|
||||
buttons)))))
|
||||
|
||||
(define grid '((0 0 0)
|
||||
(0 0 0)
|
||||
(0 0 0)))
|
||||
|
||||
(define turn 'player) ;; Either 'player or 'bot
|
||||
|
||||
(define grid-square-size (vec 150 150))
|
||||
|
||||
(define padding (vec 50 50))
|
||||
|
||||
(define draw-grid-squares
|
||||
(make-system
|
||||
'draw-grid-squares
|
||||
0
|
||||
'entity
|
||||
'(<screen-transform> <grid-square>)
|
||||
(lambda (_ transform sq)
|
||||
(let ((check (list-ref (list-ref grid (g-y sq)) (g-x sq))))
|
||||
(push-render-object 'screen
|
||||
0
|
||||
(lambda ()
|
||||
(draw-text-2d
|
||||
(v+ (v/ grid-square-size 4) (position transform))
|
||||
(cond
|
||||
((= check 1) "X")
|
||||
((= check 2) "O")
|
||||
(else ""))
|
||||
64
|
||||
(make-color 0 0 0 1))))))))
|
||||
|
||||
(define-record-type <grid-square>
|
||||
(make-g-s x y)
|
||||
grid-square?
|
||||
(x g-x)
|
||||
(y g-y))
|
||||
|
||||
(define (make-grid-square x y)
|
||||
(entity
|
||||
(make-g-s x y)
|
||||
(make-screen-transform
|
||||
(v+ padding (v* (vec x y) grid-square-size))
|
||||
(vec 0 0)
|
||||
0
|
||||
(vec 1 1)
|
||||
'center
|
||||
'())
|
||||
(make-visual-2d
|
||||
(make-rectangle-2d
|
||||
(vec 0 0)
|
||||
(v-x grid-square-size)
|
||||
(v-y grid-square-size)
|
||||
#f
|
||||
10)
|
||||
(make-color 0 0 0 1)
|
||||
0)
|
||||
(make-button-region
|
||||
(vec 0 0)
|
||||
grid-square-size
|
||||
(lambda ()
|
||||
(set! (list-ref (list-ref grid y) x) (+ 1 (list-ref (list-ref grid y) x)))))))
|
||||
|
||||
(define (game)
|
||||
(scene
|
||||
draw-text-entities
|
||||
|
||||
(entity
|
||||
(make-screen-transform
|
||||
(vec 350 250)
|
||||
(vec 0 0)
|
||||
0
|
||||
(vec 1 1)
|
||||
'center
|
||||
'())
|
||||
(make-visual-2d
|
||||
(make-text-2d
|
||||
(vec 0 0)
|
||||
"You lost the game!"
|
||||
12)
|
||||
(make-color 0 0 0 1)
|
||||
0))))
|
||||
draw-rectangles
|
||||
draw-grid-squares
|
||||
click-buttons
|
||||
push-actions
|
||||
|
||||
(make-grid-square 0 0)
|
||||
(make-grid-square 1 0)
|
||||
(make-grid-square 2 0)
|
||||
(make-grid-square 0 1)
|
||||
(make-grid-square 1 1)
|
||||
(make-grid-square 2 1)
|
||||
(make-grid-square 0 2)
|
||||
(make-grid-square 1 2)
|
||||
(make-grid-square 2 2)))
|
||||
|
||||
(define (main-menu)
|
||||
(scene
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue