def victoire(blocks_list, bar_coord, time_spend, score): """Cette fonction affiche Victoire si toutes les briques ont été déruites. Avec blocks_list, la liste contenant les coordonnées et résistance des briques Bar_coord les coordonnées de la raquette score , le nombre total de point du joueur en fonction du nombre de briques qu'il a détruite et time_spend, le temps s'étant écoulé depuis le debut. """ if blocks_list == []: draw_variable(["balle", "raquette", "temps", "score"], balle=(-10,-10,0,0), raquette=bar_coord, temps=time_spend, score=score) #On affiche la balle en dehors de l'écran car l'arg est nécessaire tk.texte(C.WIDTH/2, ((C.HEIGHT/2)+C.EXTRA_TOP), "GAGNE !", "orange red", ancrage="center", police="fixedsys", taille=72) tk.attente_clic_ou_touche() return True #Si True est retourné, un break est levé dans la boucle principale return False
def defaite(ball_coord, blocks_list, bar_coord, time_spend, score): #A voir avec style """Cette fonction affiche Defaite si la balle est partie en dessous. Avec blocks_list, la liste contenant les coordonnées et résistance des briques Bar_coord les coordonnées de la raquette ball_coord les coordonnées de la balle score , le nombre total de point du joueur en fonction du nombre de briques qu'il a détruite et time_spend, le temps s'étant écoulé depuis le debut. """ if not ball_coord: draw_variable(["balle", "raquette", "temps", "score"], balle=(-10,-10,0,0), raquette=bar_coord, temps=time_spend, score=score) tk.texte(C.WIDTH/2, ((C.HEIGHT/2)+C.EXTRA_TOP), "PERDU !", "orange red", ancrage="center", police="fixedsys",taille=72) tk.attente_clic_ou_touche() return True #Meme fonctionnement que pour victoire() return False
def draw_variable(change_list, **kwargs): """Affiche certains objets du jeu en fonction de si ils ont ete modifies depuis la boucle d'avant. change_list de la forme ["balle", "score",], on utilisera ensuite les str pour acceder au kwargs.""" if change_list == []: return for argument in change_list: if argument == "balle": tk.cercle(kwargs["balle"][0], kwargs["balle"][1], C.BALL_RADIUS, "red", "red", tag="balle") elif argument == "raquette": tk.rectangle(kwargs["raquette"][0], kwargs["raquette"][1], kwargs["raquette"][2], kwargs["raquette"][3], "green2", "green2", tag="raquette") elif argument == "blocs": for block in kwargs["blocs"]: color = C.COLOR_TUP[block[4]] efface_obj = tk.rectangle(block[0], block[1], block[2], block[3], "black", color) block[5] = efface_obj elif argument == "temps": tk.texte(C.WIDTH//5*4.6, 80, str(int(kwargs["temps"][0])), "green2", police="fixedsys", ancrage="center", taille=23, tag="inter_temps") elif argument == "score": tk.texte(C.WIDTH//7*1.8, 80, str(kwargs["score"]), "green2", police="fixedsys", ancrage="center", taille=23, tag="inter_score") return
def draw_init(): """Affiche au début les éléments qui ne seront jamais effaces.""" tk.rectangle(0, C.EXTRA_TOP, C.WIDTH, C.HEIGHT_TOTAL, "black", "black") tk.rectangle(0, 0, 0 + C.WIDTH, 0 + C.EXTRA_TOP, "black", "blue2", epaisseur=2) #Le fond de la fenêtre tk.texte(C.WIDTH/2, 70/2, "Casse Brique", "firebrick1", police="fixedsys", ancrage="center", taille=42) tk.texte(C.WIDTH//7, 80, "Score: ", "green2", police="fixedsys", ancrage="center", taille=23) tk.texte(C.WIDTH//5*4, 80, "Temps: ", "green2", police="fixedsys", ancrage="center", taille=23)
def draw_init(): """Affichage de la fenetre de menu(formes, images, texte).""" sixieme = C.HEIGHT_TOTAL // 6 tk.rectangle(0, 0, C.WIDTH, sixieme * 2, "black", "blue2", epaisseur=2) tk.rectangle(0, sixieme * 2, C.WIDTH, sixieme * 3, "black", "yellow", epaisseur=2) tk.rectangle(0, sixieme * 3, C.WIDTH, sixieme * 4, "black", "yellow", epaisseur=2) tk.rectangle(0, sixieme * 4, C.WIDTH, sixieme * 5, "black", "yellow", epaisseur=2) tk.rectangle(0, sixieme * 5, C.WIDTH, C.HEIGHT_TOTAL, "black", "yellow", epaisseur=2) tk.texte(C.WIDTH / 2, sixieme // 2, "Casse-Brique", "red2", police="fixedsys", ancrage="center", taille=54) tk.texte(C.WIDTH / 2, sixieme // 2 * 3, "--SW--", "red2", police="fixedsys", ancrage="center", taille=60) #Image gif 100x84 tk.image(C.WIDTH // 16 * 2, sixieme // 2 * 3, C.IMAGE1_PATH) tk.image(C.WIDTH // 16 * 14.25, sixieme // 2 * 3, C.IMAGE2_PATH) tk.texte(C.WIDTH / 2, sixieme // 2 * 5, "Normal", "black", police="fixedsys", ancrage="center", taille=20) tk.texte(C.WIDTH / 2, sixieme // 2 * 7, "Automatique", "black", police="fixedsys", ancrage="center", taille=20) tk.texte(C.WIDTH / 2, sixieme // 2 * 9, "Charger un fichier", "black", police="fixedsys", ancrage="center", taille=20) tk.texte(C.WIDTH / 2, sixieme // 2 * 11, "High-scores", "black", police="fixedsys", ancrage="center", taille=20)
def draw_scores(): """Affichage de la fentre des high_scores.""" dixieme = C.HEIGHT_TOTAL // 10 tk.rectangle(0, 0, C.WIDTH, dixieme * 3, "black", "blue2", epaisseur=2) tk.rectangle(0, dixieme * 3, C.WIDTH, dixieme * 4, "black", "yellow", epaisseur=2) tk.rectangle(0, dixieme * 4, C.WIDTH, dixieme * 5, "black", "yellow", epaisseur=2) tk.rectangle(0, dixieme * 5, C.WIDTH, dixieme * 6, "black", "yellow", epaisseur=2) tk.rectangle(0, dixieme * 6, C.WIDTH, dixieme * 7, "black", "yellow", epaisseur=2) tk.rectangle(0, dixieme * 7, C.WIDTH, dixieme * 8, "black", "yellow", epaisseur=2) tk.rectangle(0, dixieme * 8, C.WIDTH, dixieme * 9, "black", "yellow", epaisseur=2) tk.rectangle(0, dixieme * 9, C.WIDTH, C.HEIGHT_TOTAL, "black", "yellow", epaisseur=2) tk.texte(C.WIDTH / 2, dixieme // 1.5, "Casse-Brique", "red2", police="fixedsys", ancrage="center", taille=54) tk.texte(C.WIDTH / 2, dixieme // 2 * 4.5, "SCORES", "black", police="fixedsys", ancrage="center", taille=60) #Image gif 100x84 tk.image(C.WIDTH // 16 * 2, dixieme // 2 * 4.5, C.IMAGE1_PATH) tk.image(C.WIDTH // 16 * 14.25, dixieme // 2 * 4.5, C.IMAGE2_PATH) tk.texte(C.WIDTH / 2, dixieme // 2 * 7, "JOUEUR / DATE / TEMPS / SCORE", "black", police="fixedsys", ancrage="center", taille=18) score_list = FI.read_score() score_list = sorted(score_list, key=lambda x: x[3], reverse=True) score_list = score_list[:10] if score_list != []: i = 9 for s in score_list: chaine_score = " / ".join(s) taille = 17 if tk.longueur_texte(chaine_score) > C.WIDTH - 10: taille = 16 tk.texte(C.WIDTH / 2, dixieme // 1.9 * i, chaine_score, "blue", police="fixedsys", ancrage="center", taille=taille) i += 2