// Snake game package main import ( "fmt" "math/rand" "time" "github.com/eiannone/keyboard" "strconv" ) type Snake struct { head [2]int body []([2]int) direction rune live bool } func (snake *Snake) turn(d rune) { switch d { case 'u': switch snake.direction { case 'l': snake.direction = 'u' case 'r': snake.direction = 'u' } case 'l': switch snake.direction { case 'u': snake.direction = 'l' case 'd': snake.direction = 'l' } case 'r': switch snake.direction { case 'u': snake.direction = 'r' case 'd': snake.direction = 'r' } case 'd': switch snake.direction { case 'r': snake.direction = 'd' case 'l': snake.direction = 'd' } } } func (snake *Snake) update() { old_pos := [...]int{snake.head[0], snake.head[1]} switch snake.direction { case 'u': snake.head[0] -= 1 case 'l': snake.head[1] -= 1 case 'd': snake.head[0] += 1 case 'r': snake.head[1] += 1 } for i,_ := range snake.body { snake.body[i][0], old_pos[0] = old_pos[0], snake.body[i][0] snake.body[i][1], old_pos[1] = old_pos[1], snake.body[i][1] } if snake.head[0] == food_i && snake.head[1] == food_j { snake.body = append(snake.body, old_pos) } if snake.head[0] == 0 || snake.head[1] == 0 || snake.head[0] == board_h - 1 || snake.head[1] == board_w - 1 { snake.die() } } func (snake *Snake) die() { snake.live = false } func (snake Snake) draw(board [][]rune) { // clearnig board for i:=0;i