32 lines
693 B
Racket
32 lines
693 B
Racket
#lang racket
|
|
|
|
; dots and boxes players!
|
|
|
|
(require "main.rkt" racket/random)
|
|
|
|
(provide player-random player-first player-last)
|
|
|
|
; a Player that plays random moves
|
|
(define player-random
|
|
(player
|
|
"Random"
|
|
(lambda (g n)
|
|
(let ([m (car (random-sample (valid-moves g) 1))])
|
|
(line (line-from m) (line-to m) n)))))
|
|
|
|
; plays the first valid move found
|
|
(define player-first
|
|
(player
|
|
"First Move"
|
|
(lambda (g n)
|
|
(let ([m (first (valid-moves g))])
|
|
(line (line-from m) (line-to m) n)))))
|
|
|
|
; plays the last valid move found
|
|
(define player-last
|
|
(player
|
|
"Last Move"
|
|
(lambda (g n)
|
|
(let ([m (last (valid-moves g))])
|
|
(line (line-from m) (line-to m) n)))))
|