Назад к вопросам
Senior
4
Как добавить поддержку игр с ограничением времени (3 или 5 минут) помимо игры без ограничений?
Компании, где спрашивали
Hi Rockits
Ответ от нейросети
sobes.tech AI
Чтобы добавить поддержку игр с ограничением времени (например, 3 или 5 минут) в Go, можно использовать таймеры и контексты для контроля времени игры.
Основная идея:
- При старте игры запускать таймер на заданное время.
- По истечении времени автоматически завершать игру.
- Для игры без ограничений таймер не запускается.
Пример реализации с использованием time.Timer и канала для остановки игры:
package main
import (
"fmt"
"time"
)
type Game struct {
duration time.Duration // 0 для без ограничений
done chan bool
}
func NewGame(duration time.Duration) *Game {
return &Game{
duration: duration,
done: make(chan bool),
}
}
func (g *Game) Start() {
fmt.Println("Игра началась")
if g.duration > 0 {
timer := time.NewTimer(g.duration)
go func() {
<-timer.C
fmt.Println("Время вышло! Игра окончена.")
g.done <- true
}()
}
// Логика игры здесь
}
func (g *Game) Wait() {
if g.duration > 0 {
<-g.done
} else {
// Игра без ограничений, можно ждать пользовательского события
}
}
func main() {
gameWithLimit := NewGame(3 * time.Minute)
gameWithLimit.Start()
gameWithLimit.Wait()
gameWithoutLimit := NewGame(0)
gameWithoutLimit.Start()
// Для игры без ограничений можно реализовать другой механизм завершения
}
Таким образом, добавляя параметр времени, можно гибко управлять ограничениями по времени для разных типов игр.