예제 #1
0
    def __init__(self, save):
        self.history = []
        self.clue_sets = config('clue-sets')
        if len(self.clue_sets) == 0:
            raise ValueError('At least one complete clue set is needed')
        self.next = 0

        self.state = []
        for i in range(6):
            self.state.append([ None, None, None, None, None ])
        self.sel = None
        self.scores = [ 0, 0, 0, 0 ]
        self.names = ['Nameless #'+str(i+1) for i in range(4)]
        self.choosing = 0
        self.responding = None
        self.responded = [ False, False, False, False ]

        if save:
            with open(save, 'r') as f:
                s = load(f, Loader)
                if len(s['board']) != 6:
                    raise ValueError('Serialized board state must have six columns')
                for r in s['board']:
                    if len(r) != 5:
                        raise ValueError('Serialized board state must have five rows')
                if len(s['scores']) != 4:
                    raise ValueError('There have to be exactly four score values')
                if len(s['names']) != 4:
                    raise ValueError('There have to be exactly four player names')
                self.state = s['board']
                self.scores = s['scores']
                self.names = s['names']
                self.choosing = s['choosing']
        self.append_history()
예제 #2
0
파일: mqtt.py 프로젝트: kannes/cluequiz
def publish_event(name, player, value):
    host = config('mqtt.host', None)
    if host:
        port = config('mqtt.port', 1883)
        topic = config('mqtt.topic', 'cluequiz')
        try:
            single(topic,
                   dumps({
                       'name': name,
                       'player': player,
                       'value': value
                   }),
                   hostname=host,
                   port=port)
        except:
            pass
예제 #3
0
    def set_responding(self, i):
        if config('ignore-responded', False) or not self.responded[i]:
            self.responding = i
            self.responded[i] = True

            publish_event('respond', i, (self.sel[1]+1) * 100)
            return True
        return False
예제 #4
0
    def __init__(self, instance):
        self.serial = Serial(config('serial.port', '/dev/ttyUSB0'),
                             config('serial.baud', 9600))

        screen_size = pygame.display.get_surface().get_size()
        if config.debug:
            screen_size = (800, 600)

        self.screen_w = screen_size[0] - (screen_size[0] % 12)
        cell_w = screen_size[0] // 12
        self.clue_w = cell_w * 2
        self.score_w = cell_w * 3
        half_cell_h = screen_size[1] // 14
        self.cell_h = half_cell_h * 2
        self.score_h = half_cell_h * 7
        self.padding = ((screen_size[0] % 12) // 2, (screen_size[1] % 14) // 2)

        self.font = pygame.font.Font(None, FONT_SIZE)
        self.bigfont = pygame.font.Font(None, BIGFONT_SIZE)

        self.music = config('music', None)
        if self.music:
            if isinstance(self.music, str):
                self.music = [self.music]
            self.load_next_music()

        self.values = []
        for i in range(1, 6):
            self.values.append(
                self.font.render(str(i * 100), True, TEXT_COLOR, CLUE_COLOR))
        self.scores = [None, None, None, None]
        self.render_score(None, instance)
        self.names = [None, None, None, None]
        self.render_name(None, instance)

        self.load_clue_set(instance.next_clue_set())

        self.prompt = TextPrompt(self.font,
                                 self.score_w,
                                 'Player name',
                                 max_width=self.score_w,
                                 placeholder='Hier könnte dein Name stehen')

        self.sound_triggered = False
        self.state = CHOOSING
예제 #5
0
 def all_responded(self):
     if config('ignore-responded', False):
         return False
     return not (False in self.responded)