Draw tic-tac-toe squares
This commit is contained in:
parent
0544429d07
commit
918f3ec873
2 changed files with 89 additions and 25 deletions
|
|
@ -258,13 +258,19 @@
|
||||||
(assert ((conjoin integer? positive?) thickness))
|
(assert ((conjoin integer? positive?) thickness))
|
||||||
(assert (boolean? filled))
|
(assert (boolean? filled))
|
||||||
(assert (color? color))
|
(assert (color? color))
|
||||||
(when filled
|
(if filled
|
||||||
(draw-rectangle
|
(draw-rectangle
|
||||||
(number->integer (v-x pos-vec))
|
(number->integer (v-x pos-vec))
|
||||||
(number->integer (v-y pos-vec))
|
(number->integer (v-y pos-vec))
|
||||||
width
|
width
|
||||||
height
|
height
|
||||||
(use-color color))))
|
(use-color color))
|
||||||
|
(draw-rectangle-lines
|
||||||
|
(number->integer (v-x pos-vec))
|
||||||
|
(number->integer (v-y pos-vec))
|
||||||
|
width
|
||||||
|
height
|
||||||
|
(use-color color))))
|
||||||
|
|
||||||
(define (draw-text-2d pos-vec text size tint)
|
(define (draw-text-2d pos-vec text size tint)
|
||||||
(assert (vec2? pos-vec))
|
(assert (vec2? pos-vec))
|
||||||
|
|
@ -276,4 +282,4 @@
|
||||||
(number->integer (v-y pos-vec))
|
(number->integer (v-y pos-vec))
|
||||||
size
|
size
|
||||||
(use-color tint)))
|
(use-color tint)))
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -85,25 +85,83 @@
|
||||||
((button-on-click btn)))))
|
((button-on-click btn)))))
|
||||||
buttons)))))
|
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)
|
(define (game)
|
||||||
(scene
|
(scene
|
||||||
draw-text-entities
|
draw-rectangles
|
||||||
|
draw-grid-squares
|
||||||
(entity
|
click-buttons
|
||||||
(make-screen-transform
|
push-actions
|
||||||
(vec 350 250)
|
|
||||||
(vec 0 0)
|
(make-grid-square 0 0)
|
||||||
0
|
(make-grid-square 1 0)
|
||||||
(vec 1 1)
|
(make-grid-square 2 0)
|
||||||
'center
|
(make-grid-square 0 1)
|
||||||
'())
|
(make-grid-square 1 1)
|
||||||
(make-visual-2d
|
(make-grid-square 2 1)
|
||||||
(make-text-2d
|
(make-grid-square 0 2)
|
||||||
(vec 0 0)
|
(make-grid-square 1 2)
|
||||||
"You lost the game!"
|
(make-grid-square 2 2)))
|
||||||
12)
|
|
||||||
(make-color 0 0 0 1)
|
|
||||||
0))))
|
|
||||||
|
|
||||||
(define (main-menu)
|
(define (main-menu)
|
||||||
(scene
|
(scene
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue