// Copyright © 2018 Inanc Gumus
// Learn Go Programming Course
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
//
// For more tutorials  : https://learngoprogramming.com
// In-person training  : https://www.linkedin.com/in/inancgumus/
// Follow me on twitter: https://twitter.com/inancgumus

package main

import (
	"fmt"
	"time"
)

/*
~ TICTACTOE GAME IN GO ~
+ This example uses the very basics of the Go language.
+ The goal is learning all the basics.
*/

const (
	maxTurns         = 9
	defaultGameSpeed = time.Second * 2 // time between plays
)

var (
	won, tie bool // is there any winner or a tie?
	turn     int  // total valid turns played

	cells     [maxTurns]cell // used to draw the board: contains the players' moves
	lastPos   int            // last played position
	wrongMove bool           // was the last move wrong?

	player    = player1          // current player
	gameSpeed = defaultGameSpeed // sets the default game speed
)

// main is only responsible for the game loop, that's it.
func main() {
	setGameSpeed()
	printBoard()
	wait()

	for nextTurn() {
		wait()
	}
}

func wait() {
	fmt.Println()
	time.Sleep(gameSpeed) // player thinks...
}
