1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-29 05:36:55 +02:00
Files
go_basics/part_8/tic_tac_toe_v7/main.go

51 lines
1.5 KiB
Go
Raw Normal View History

2025-06-21 13:28:09 +03:00
package main
import (
"flag"
"log"
"tic-tac-toe/client"
"tic-tac-toe/database"
"tic-tac-toe/server"
)
func main() {
2025-06-23 23:01:10 +03:00
// Флаг для выбора режима работы
2025-06-21 13:28:09 +03:00
mode := flag.String(
"mode", "server",
"start in 'server' or 'client' mode",
)
2025-06-23 23:01:10 +03:00
// Флаг для указания адреса
// :8088 = 127.0.0.1:8088 или localhost:8088
2025-06-21 13:28:09 +03:00
addr := flag.String("addr", ":8088", "address to run on")
2025-06-23 23:01:10 +03:00
flag.Parse() // Парсим флаги
2025-06-21 13:28:09 +03:00
2025-06-23 23:01:10 +03:00
switch *mode { // Переключение режима работы
case "server": // Режим сервера
// Создаем репозиторий
2025-06-21 13:28:09 +03:00
repository, err := database.NewSQLiteRepository()
if err != nil {
log.Fatalf("Failed to create repository: %v", err)
}
2025-06-23 23:01:10 +03:00
// Создаем сервер и запускаем его, передав
// ему адрес в формате "ip:port" и репозиторий
2025-06-21 13:28:09 +03:00
srv, err := server.NewServer(*addr, repository)
if err != nil {
log.Fatalf("Failed to create server: %v", err)
}
srv.Start()
2025-06-23 23:01:10 +03:00
case "client": // Режим клиента
// Создаем клиента и запускаем его, передав
// ему адрес сервера в формате "ip:port"
2025-06-21 13:28:09 +03:00
cli, err := client.NewClient(*addr)
if err != nil {
log.Fatalf("Failed to connect to server: %v", err)
}
cli.Start()
2025-06-23 23:01:10 +03:00
default: // Неизвестный режим
2025-06-21 13:28:09 +03:00
log.Fatalf(
"Unknown mode: %s. Use 'server' or 'client'.", *mode,
)
}
}