Quarto Set

Quarto board.
Quarto board.

One of the more interesting projects of the last year was the wooden Quarto set I made for our middle schoolers to use during their study hall.

The game is quite an interesting one, as was the build. The pieces (rectangular and cylindrical prisms capped with solid or hollow tops) were fairly simple to make using the table-saw for the bodies and laser cutter for the tops. However, I wanted to make a box for the pieces and have the board with its 4×4 grid of circle serve as the top.

Cutting out the top and bottom of the box out of plywood (on the CNC machine) was easy enough, as was lasering on the grid, but the most fascinating part was making the sides of the box. The rounded corners on the top required rounded sides, so I used the laser to cut a living hinge on a piece of plywood and glued it to the base. Then I used some spacer pieces for the inside to hold up an inset that would hold the pieces.

Quarto set box opened up.
Quarto set box opened up.

Go Board

Students playing Go.
Students playing Go.

I recently discovered that, although they may look it, Go boards are not necessarily square. They’re slightly longer in one dimension so that the board looks more square to the players on both sides.

A student asked me to make one for him–he’d ordered a set recently and didn’t like the board it came with–so, I wrote a small python program to generate the Go grid, then lasered it onto a nice piece of sanded plywood.

It worked out quite well. Apparently the plywood makes just the right “thunk” sound when you put down the pieces.

Go board in use.
Go board in use.

The script to generate the grid.
go_board_2.py

from visual import *
from svgInator_3 import *

length = 424.2  #mm
width = 454.5   #mm
nLines = 19
dx = length/(nLines-1)
dy = width/(nLines-1)

print "Lenght = ", length
print "dx = ", dx

f = svgInator("go_board.svg")

lineStyle = {"stroke": "#000", "stroke-width": "2pt",}

#lines
for i in range(nLines):
    x = i * dx
    y = i * dy
    #vertical
    f.line(pos=[vector(x,0), vector(x,width)], style=lineStyle)
    #horizontal
    f.line(pos=[vector(0,y), vector(length,y)], style=lineStyle)

#circles
grid_pos = [(3,3), (3,9), (3,15),
            (9,3), (9,9), (9,15),
            (15,3), (15,9), (15,15)]

for i in grid_pos:
    (x, y) = (i[0]*dx, i[1]*dy)
    f.circle(pos=vector(x,y), radius=2.0,
             style={"stroke": "#000", "fill":"#000"})

#bounding box
f.rect(dim=vector(length,width), style=lineStyle)

f.close()

Now I just have to learn to play.