(PNG) ackage main
mport (
(???)
(???) onst WIDTH = 10
(???) onst HEIGHT = 24
(???) ype Tetris struct {
(???)
(???) unc NewTetris(renderer Renderer) *Tetris {
(???)
(???) unc (t *Tetris) NewGame() {
(???)
(???) unc (t *Tetris) newBlock() {
(???)
(???) unc (t *Tetris) move(deltaColumn, deltaRow, newRotation int) bool {
(???)
(???) unc indexOf(blocks *[]Block, block *Block) int {
(???)
(???) unc (t *Tetris) fall() bool {
(???)
(???) unc (t *Tetris) drop() {
(???)
(???) unc (t *Tetris) draw(column, row int, block *Block, rotation int, color string) {
(???)
(???) unc initBucket() [][]int {
(???)
(???) unc (t *Tetris) setBuffer(set, column, row int, block *Block, rotation int) {
(???)
(???) / testBlocks tests if a block can be placed and returns true if so, false otherwise
(???) unc (t *Tetris) testBlock(deltaColumn, deltaRow int, block *Block, rotation int) bool {
(???)
(???) unc (t *Tetris) coords(block *Block, rotation, column, row int) []Coord {
(???)
(???) unc (t *Tetris) randomBlock() *Block {
(???)
(???) unc (t *Tetris) sweepBucket() int {
(???)
(???) unc (t *Tetris) redrawBucket() {
(???)
(???) unc (t *Tetris) gameOver() {
(???)
(???) unc main() {
(???)