2019-03-08 10:05:39 +03:00
|
|
|
// Copyright © 2018 Inanc Gumus
|
|
|
|
// Learn Go Programming Course
|
|
|
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
|
|
//
|
2019-10-30 19:34:44 +03:00
|
|
|
// For more tutorials : https://learngoprogramming.com
|
|
|
|
// In-person training : https://www.linkedin.com/in/inancgumus/
|
|
|
|
// Follow me on twitter: https://twitter.com/inancgumus
|
2019-03-08 10:05:39 +03:00
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
const (
|
|
|
|
width = 50
|
|
|
|
height = 10
|
|
|
|
|
|
|
|
cellEmpty = ' '
|
|
|
|
cellBall = '⚾'
|
|
|
|
)
|
|
|
|
|
|
|
|
var cell rune // current cell (for caching)
|
|
|
|
|
|
|
|
// create the board
|
|
|
|
board := make([][]bool, width)
|
2019-03-21 23:48:48 +03:00
|
|
|
for column := range board {
|
|
|
|
board[column] = make([]bool, height)
|
2019-03-08 10:05:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
// create a drawing buffer
|
|
|
|
buf := make([]rune, 0, width*height)
|
|
|
|
|
|
|
|
// draw a smiley
|
|
|
|
board[12][2] = true
|
|
|
|
board[16][2] = true
|
|
|
|
board[14][4] = true
|
|
|
|
board[10][6] = true
|
|
|
|
board[18][6] = true
|
|
|
|
board[12][7] = true
|
|
|
|
board[14][7] = true
|
|
|
|
board[16][7] = true
|
|
|
|
|
|
|
|
// use the loop for measuring the performance difference
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
|
|
// rewind the buffer so that the program reuses it
|
|
|
|
buf = buf[:0]
|
|
|
|
|
|
|
|
// draw the board into the buffer
|
|
|
|
for y := range board[0] {
|
|
|
|
for x := range board {
|
|
|
|
cell = cellEmpty
|
|
|
|
if board[x][y] {
|
|
|
|
cell = cellBall
|
|
|
|
}
|
|
|
|
// fmt.Print(string(cell), " ")
|
|
|
|
buf = append(buf, cell, ' ')
|
|
|
|
}
|
|
|
|
// fmt.Println()
|
|
|
|
buf = append(buf, '\n')
|
|
|
|
}
|
|
|
|
|
|
|
|
// print the buffer
|
|
|
|
fmt.Print(string(buf))
|
|
|
|
}
|
|
|
|
}
|