code: func drawBlocks(p *image.Paletted, size int, c, b1, b2 blockFunc, angle int) {
  	// 每个格子的长宽。先转换成 float，再计算！
  	blockSize := float64(size) / 3
  	twoBlockSize := 2 * blockSize
  
  	incr := func() { // 增加 angle 的值，但不会大于 3
  		angle++
  		if angle > 3 {
  			angle = 0
  		}
  	}
  
  	c(p, blockSize, blockSize, blockSize, 0)
  
  	b1(p, 0, 0, blockSize, angle)
  	b2(p, blockSize, 0, blockSize, angle)
  
  	incr()
  	b1(p, twoBlockSize, 0, blockSize, angle)
  	b2(p, twoBlockSize, blockSize, blockSize, angle)
  
  	incr()
  	b1(p, twoBlockSize, twoBlockSize, blockSize, angle)
  	b2(p, blockSize, twoBlockSize, blockSize, angle)
  
  	incr()
  	b1(p, 0, twoBlockSize, blockSize, angle)
  	b2(p, 0, blockSize, blockSize, angle)
  }
docs: // 将九个方格都填上内容。
  // p 为画板；
  // c 为中间方格的填充函数；
  // b1、b2 为边上 8 格的填充函数；
  // angle 为 b1、b2 的起始旋转角度。