# Cracker Barrel Peg Game, Part 3

If you were paying attention when I posted part 2 to GitHub (pegs.rkt), you might have noticed a function I hadn’t talked about: play

With everything we’ve done over the past two posts, we have everything we need to actually play the peg game:

(define (play p)
(cond
[(= 1 (count p))         (displayln "YOU WIN!")]
[(= 0 (length (next p))) (display "You lose. :(")]
[else
(render-text p)
(displayln "Enter the peg to use and the peg to jump")
(cond
[(jump p from over) => play]
[else
(displayln "Invalid move.")
(play p)])]))


Let’s play!

> (play (invert (make-puzzle 1)))

2   3
4   5   6
7   8   9   10
11  12  13  14  15

Enter the peg to use and the peg to jump
4 2
1
3
5   6
7   8   9   10
11  12  13  14  15

Enter the peg to use and the peg to jump
9 5
1
2   3
6
7   8       10
11  12  13  14  15

Enter the peg to use and the peg to jump
12 8
1
2   3
5   6
7           10
11      13  14  15

Enter the peg to use and the peg to jump
11 7
1
2   3
4   5   6
10
13  14  15

Enter the peg to use and the peg to jump
14 13
1
2   3
4   5   6
10
12          15

Enter the peg to use and the peg to jump
3 5
1
2
4       6
8       10
12          15

Enter the peg to use and the peg to jump
12 8
1
2
4   5   6
10
15

Enter the peg to use and the peg to jump
2 4
1

5   6
7           10
15

Enter the peg to use and the peg to jump
6 5
1

4
7           10
15

Enter the peg to use and the peg to jump
7 4
1
2

10
15

Enter the peg to use and the peg to jump
1 2

4
10
15

Enter the peg to use and the peg to jump
15 10
You lose. :(


Oops.

Can you do any better? (Without using part 1?)