53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
// An amateurs approach to the game of Snake
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
// main function
|
|
func main() {
|
|
|
|
// Create channles to manage keypresses and the gamestate
|
|
keypresses := make(chan int)
|
|
gamestate := make(chan int)
|
|
|
|
// Score tracker
|
|
score := Score{
|
|
score: 0,
|
|
scoreCounter: 1,
|
|
reason: 0,
|
|
}
|
|
|
|
// Initialize tcell and clean up when needed.
|
|
screen, style, err := initilize()
|
|
if err != nil {
|
|
log.Fatalln("Initlization error: ", err)
|
|
}
|
|
//defer quit(screen)
|
|
|
|
// Spawn the Game Director in its own go routine
|
|
// We give it channels to control...
|
|
go gameDirector(screen, style, keypresses, gamestate, &score)
|
|
|
|
// A simple function that captures keyboard presses...
|
|
// ...and sends it to the GameDirector.
|
|
keyboardProcessor(screen, keypresses, gamestate, &score)
|
|
|
|
// Quit the screen
|
|
quit(screen)
|
|
|
|
// Print the score
|
|
fmt.Println("Score: ", score.score)
|
|
switch score.reason {
|
|
case 1:
|
|
fmt.Println("Reason: You quit")
|
|
case 2:
|
|
fmt.Println("Reason: You hit a wall")
|
|
case 3:
|
|
fmt.Println("Reason: You ate your tail")
|
|
}
|
|
|
|
}
|