final commit(?)
This commit is contained in:
parent
b3c576b140
commit
87abc848b4
29
arena.rkt
29
arena.rkt
|
@ -4,12 +4,29 @@
|
|||
|
||||
(require "main.rkt" "players.rkt")
|
||||
|
||||
(define all-players (list player-random player-first player-last player-greedy player-nico player-generous))
|
||||
(define GAMES-PER-MATCH 100)
|
||||
|
||||
(define results (make-hash))
|
||||
|
||||
(define all-players (list player-random player-first player-last player-greedy player-nico player-generous player-horizontal player-vertical))
|
||||
|
||||
(define matchups (append (combinations all-players 2) (map reverse (combinations all-players 2)) (for/list ([p all-players]) (list p p))))
|
||||
|
||||
(define (arena)
|
||||
(define matches (for/list ([m matchups])
|
||||
(start-game (first m) (second m) 6 6)))
|
||||
(for ([m matches])
|
||||
(save-game! m (format "/tmp/games/~a Vs ~a.dbn" (player-name (first (GameState-players m))) (player-name (second (GameState-players m)))))))
|
||||
(for ([m matchups])
|
||||
(hash-set! results m 0)
|
||||
(for ([i (in-range GAMES-PER-MATCH)])
|
||||
(define g (start-game (first m) (second m) 6 6))
|
||||
(define current (hash-ref results m))
|
||||
(hash-set! results m (if (> (first (GameState-scores g)) (second (GameState-scores g))) (+ current 1) current)) ; if p1 wins, increment the counter
|
||||
(save-game! g (format "/tmp/games/~a vs ~a ~a.dbn" (player-name (first (GameState-players g))) (player-name (second (GameState-players g))) i))))
|
||||
|
||||
(print results)
|
||||
|
||||
(define csv (open-output-file "/tmp/games/results.csv"))
|
||||
|
||||
(display "Player 1,Player 2,P1 wins,P2 wins\n" csv)
|
||||
|
||||
(for ([(k v) (in-hash results)])
|
||||
(display (format "~a,~a,~a,~a\n" (player-name (first k)) (player-name (last k)) v (- GAMES-PER-MATCH v)) csv))
|
||||
|
||||
(close-output-port csv)
|
32
players.rkt
32
players.rkt
|
@ -4,7 +4,7 @@
|
|||
|
||||
(require "main.rkt" racket/random)
|
||||
|
||||
(provide player-random player-first player-last player-greedy player-generous player-nico)
|
||||
(provide player-random player-first player-last player-greedy player-generous player-nico player-horizontal player-vertical)
|
||||
|
||||
; a Player that plays random moves
|
||||
(define player-random
|
||||
|
@ -87,6 +87,36 @@
|
|||
[(not (empty? non-box-finishing-moves))
|
||||
(let ([m (car (random-sample non-box-finishing-moves 1))])
|
||||
(line (line-from m) (line-to m) n))]
|
||||
[else
|
||||
(let ([m (car (random-sample (valid-moves g) 1))])
|
||||
(line (line-from m) (line-to m) n))])))))
|
||||
|
||||
; prefers vertical moves.
|
||||
(define player-vertical
|
||||
(player
|
||||
"Vertical"
|
||||
(lambda (g n)
|
||||
(let* ([moves (valid-moves g)]
|
||||
[vertical-moves (filter (curry vertical?) moves)])
|
||||
(cond
|
||||
[(not (empty? vertical-moves))
|
||||
(let ([m (car (random-sample vertical-moves 1))])
|
||||
(line (line-from m) (line-to m) n))]
|
||||
[else
|
||||
(let ([m (car (random-sample (valid-moves g) 1))])
|
||||
(line (line-from m) (line-to m) n))])))))
|
||||
|
||||
; prefers horizontal moves.
|
||||
(define player-horizontal
|
||||
(player
|
||||
"Horizontal"
|
||||
(lambda (g n)
|
||||
(let* ([moves (valid-moves g)]
|
||||
[horizontal-moves (filter (curry horizontal?) moves)])
|
||||
(cond
|
||||
[(not (empty? horizontal-moves))
|
||||
(let ([m (car (random-sample horizontal-moves 1))])
|
||||
(line (line-from m) (line-to m) n))]
|
||||
[else
|
||||
(let ([m (car (random-sample (valid-moves g) 1))])
|
||||
(line (line-from m) (line-to m) n))])))))
|
Loading…
Reference in New Issue