예제 #1
0
def test_get_prev_workday_3():
    """Wednesday -> Tuesday"""
    test_day = dt.datetime(2020, 9, 9)  # Wednesday
    prev_workday_test = Time.get_prev_workday(test_day)
    prev_workday = dt.datetime(2020, 9, 8)  # Tuesday
    test = prev_workday == prev_workday_test
    assert test
예제 #2
0
def test_get_prev_workday_1():
    """Sunday -> Friday"""
    test_day = dt.datetime(2020, 9, 6)  # Sunday
    prev_workday_test = Time.get_prev_workday(test_day)
    prev_workday = dt.datetime(2020, 9, 4)  # Friday
    test = prev_workday == prev_workday_test
    assert test
예제 #3
0
def test_get_prev_workday_4():
    """Friday 5p+ -> Friday"""
    test_day = dt.datetime(2020, 9, 4, 17, 1)  # Friday 1min after 5
    prev_workday_test = Time.get_prev_workday(test_day)
    prev_workday = dt.datetime(2020, 9, 4)  # Friday (same)
    test = prev_workday == prev_workday_test
    assert test
예제 #4
0
def test_get_prev_workday_2():
    """Monday -> Friday"""
    test_day = dt.datetime(2020, 9, 7)  # Monday
    prev_workday_test = Time.get_prev_workday(test_day)
    prev_workday = dt.datetime(2020, 9, 4)  # Friday (same)
    test = prev_workday == prev_workday_test
    assert test
예제 #5
0
def test_get_prev_workweek_curr():
    """Current day's last workweek"""
    test_day = dt.datetime.now()
    prev_wk_m, prev_wk_f = Time.get_prev_workweek(test_day)
    print(
        f"\n[SS]-[TIME]-[TEST] Today's Date: wkDay({test_day.weekday()}) the {test_day.date()}, last wk: ({prev_wk_m.date()} - {prev_wk_f.date()})"
    )
    assert True
예제 #6
0
def test_get_prev_workweek_3():
    """Friday 5p+ -> M/F(same)"""
    test_day = dt.datetime(2020, 9, 4, 17, 1)  # Friday 1min after 5
    prev_wk_m, prev_wk_f = Time.get_prev_workweek(test_day)
    prev_wk_m_test = dt.datetime(2020, 8, 31)  # Monday
    prev_wk_f_test = dt.datetime(2020, 9, 4)  # Friday (same)
    test = (prev_wk_m == prev_wk_m_test) and (prev_wk_f == prev_wk_f_test)
    assert test
예제 #7
0
def test_get_prev_workweek_2():
    """Friday -> M/F(prev)"""
    test_day = dt.datetime(2020, 9, 4, 0, 0)  # Friday
    prev_wk_m, prev_wk_f = Time.get_prev_workweek(test_day)
    prev_wk_m_test = dt.datetime(2020, 8, 24)  # Monday
    prev_wk_f_test = dt.datetime(2020, 8, 28)  # Friday (prev)
    test = (prev_wk_m == prev_wk_m_test) and (prev_wk_f == prev_wk_f_test)
    assert test
예제 #8
0
def test_get_prev_workweek_1():
    """Sunday -> M/F"""
    test_day = dt.datetime(2020, 9, 6, 0, 0)  # Sunday
    prev_wk_m, prev_wk_f = Time.get_prev_workweek(test_day)
    prev_wk_m_test = dt.datetime(2020, 8, 31)  # Monday
    prev_wk_f_test = dt.datetime(2020, 9, 4)  # Friday
    test = (prev_wk_m == prev_wk_m_test) and (prev_wk_f == prev_wk_f_test)
    assert test
예제 #9
0
def set_performances(dic1, dic2):
    """
    fusionne les dictionnaires en utilisant la clé commune = numéro de brassard
    """
    for i in dic2:
        try:
            dic2[i]['performance'] = Time.to_string(dic1[i])
        except KeyError:
            resultat = None
    return dic2
예제 #10
0
def read_performances(text):
    """
    lit un fichier csv et retourne un dictionnaire dont les clés sont les numéros de brassard
    et les valeurs les tuples contenant les performances des compétiteurs
    """
    try:
        f = open(text, "r")
        champs = f.readline().rstrip('\n').split(";")
        lignes = f.readlines()
        dictionnaire = {}
        for ligne in lignes:
            liste = ligne.rstrip().split(';')
            dictionnaire[int(liste[0])] = Time.create(int(liste[1]),
                                                      int(liste[2]),
                                                      int(liste[3]))
        f.close()
        return (dictionnaire)
    except FileNotFoundError:
        print("Votre fichier n'est pas un csv lisible")
예제 #11
0
    def gameloop(self):
        """
        Game loop. Actual gameplay happens here. Intro music stops, game music begins.
        Notes start to fall from the top. By clicking the respective keys on the notes, the note will be destroyed and the player score will increase.
        args: None
        return: self.tracker (int) increase score
        return: Exits game
        """
        ExitButton = Button.Button(75, 52, "assets/PianoExitButton.png")
        self.music.stopMusic()
        self.tracker = ScoreTracker.ScoreTracker(self.notes)

        #times the game. Once it reachers 87 seconds, the game automatically goes to the end screen
        CurrentTime = 0
        self.time = pygame.time.Clock()
        self.clock = Time.Time()
        SWITCH_STATE = pygame.USEREVENT + 1
        pygame.time.set_timer(SWITCH_STATE, 87000)

        self.music.gameMusic("assets/rachmaninoff.ogg")
        self.background = pygame.image.load(
            "assets/PianoGameScreen.png").convert_alpha()

        while self.state == "Game":
            for event in pygame.event.get():
                #this event quits the game
                if event.type == pygame.QUIT:
                    pygame.quit()
                #this event goes to the End screen
                if event.type == pygame.MOUSEBUTTONDOWN:
                    if (95 >= pygame.mouse.get_pos()[0] >= 20
                            and 680 >= pygame.mouse.get_pos()[1] >= 628):
                        self.state = "End"
                if event.type == SWITCH_STATE:
                    self.state = "End"
                #these events destroys the notes
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_s:
                        if pygame.sprite.spritecollide(self.KeyC, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyC, self.notes,
                                                       True):
                            self.notes.kill()

                    elif event.key == pygame.K_d:
                        if pygame.sprite.spritecollide(self.KeyD, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyD, self.notes,
                                                       True):
                            self.notes.kill()

                    elif event.key == pygame.K_f:
                        if pygame.sprite.spritecollide(self.KeyE, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyE, self.notes,
                                                       True):
                            self.notes.kill()

                    elif event.key == pygame.K_j:
                        if pygame.sprite.spritecollide(self.KeyF, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyF, self.notes,
                                                       True):
                            self.notes.kill()

                    elif event.key == pygame.K_k:
                        if pygame.sprite.spritecollide(self.KeyG, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyG, self.notes,
                                                       True):
                            self.notes.kill()

                    elif event.key == pygame.K_l:
                        if pygame.sprite.spritecollide(self.KeyA, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyA, self.notes,
                                                       True):
                            self.notes.kill()
                            self.tracker.scoreUpdate()

                    elif event.key == pygame.K_SEMICOLON:
                        if pygame.sprite.spritecollide(self.KeyB, self.notes,
                                                       True):
                            self.tracker.scoreUpdate()
                        else:
                            self.tracker.scoreLoss()
                        if pygame.sprite.spritecollide(self.KeyB, self.notes,
                                                       True):
                            self.notes.kill()

            #draws the key images
            self.screen.blit(self.background, (0, 0))
            self.screen.blit(ExitButton.image, (20, 628))
            self.keys.draw(self.screen)

            #makes all the notes in the sprite class move
            for i in self.notes:
                i.move()

            self.notes.draw(self.screen)
            pygame.display.update()
            self.clock.frames()
예제 #12
0
def set_performances(dict_competiteurs, dict_performances):
    for brassard in dict_performances:
        if dict_performances.get(brassard):
            dict_competiteurs[brassard]["performance"] = Time.to_string(
                dict_performances[brassard])
    return dict_competiteurs