Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2014 23:11:50

in
Зарегистрирован: 2013-09-11
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Шахматные часы на python

Собственно нужно сделать часы для двух игроков, каждому дать по пять минут и поочереди ставить на паузу каждому игроку, по окончании указананного периода нужно вызвать колбек

Вот это кажется подходящим кодом, но непонятно можно ли ставить на паузу, по моему у него только cancel() который тупо прибивает таймер и все.

from threading import Timer
import time

def timeout():
print "Game over"

t = Timer(20 * 60, timeout)
t.start()

Отредактировано in (Сен. 28, 2014 01:56:27)

Офлайн

#2 Сен. 27, 2014 23:40:16

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Шахматные часы на python

in

Тебе в раздел новичков, это раз.
Научись оформлять сообщение и формулировать вопрос, это два.



Офлайн

#3 Сен. 28, 2014 00:36:33

in
Зарегистрирован: 2013-09-11
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Шахматные часы на python

Хорошо, учту

Офлайн

#4 Сен. 28, 2014 01:24:33

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Шахматные часы на python

in
Отнимай от переменной нужное значение.

Офлайн

#5 Сен. 28, 2014 02:02:15

in
Зарегистрирован: 2013-09-11
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Шахматные часы на python

http://odiszapc.ru/2012/03/10/python-waitable-timer/

нашел такой вариант, буду импортировать из-за возможности pause/resume

Отредактировано in (Сен. 28, 2014 02:02:31)

Офлайн

#6 Сен. 30, 2014 21:06:30

in
Зарегистрирован: 2013-09-11
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Шахматные часы на python

from threading import Timer
import time
class RenewableTimer():
    def __init__(self, timeout, callback):
        self.timeout = timeout
        self.callback = callback
        self.timer = Timer(timeout, callback)
    def cancel(self):
        self.timer.cancel()
    def start(self):
        self.start_time = time.time()
        self.timer.start()
    def pause(self):
        self.cancel_time = time.time()
        self.timer.cancel()
        return self.get_actual_time()
    def resume(self):
        self.timeout = self.get_actual_time()
        self.timer = Timer(self.timeout, self.callback)
        self.start_time = time.time()
        self.timer.start()
        return self.timeout
    def get_actual_time (self):
        return self.timeout - (self.cancel_time - self.start_time)

Итоговый код

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version