Saurez-vous atteindre le 💕 de votre élu.e avant le 14 février ?? Découvrez mon programme hautement scientifique (et complètement inutile 😂) qui vous donnera le nombre de jours 📅 nécessaires pour y arriver.
ᴹᵃ ᶜʰᵃⁱⁿᵉ ʸᵒᵘᵗᵘᵇᵉ‧ᶜᵒᵐ/ˢᶜʰʳᵃᶠ
from math import * from kandinsky import draw_string,fill_rect from random import randint, random from time import sleep, monotonic # couleurs et dessin du coeur BLA, ROS, ROU, NOI = (255,255,255),(210,130,180),(210,30,60),(0,0,0) coul = [BLA, ROS, ROU, NOI] cases = [[0,0,1,1,1,1,0,0,0,1,1,1,1,0,0],[0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,3,3,1,3,3,1,1,1,1,1],[1,1,1,1,3,2,2,3,2,0,3,1,1,1,1],[0,1,1,1,3,2,2,2,2,2,3,1,1,1,0],[0,1,1,1,1,3,2,2,2,3,1,1,1,1,0],[0,0,1,1,1,1,3,2,3,1,1,1,1,0,0],[0,0,0,1,1,1,1,3,1,1,1,1,0,0,0],[0,0,0,0,1,1,1,1,1,1,1,0,0,0,0],[0,0,0,0,0,1,1,1,1,1,0,0,0,0,0],[0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]] # dimensions et position du coeur largeur, hauteur = len(cases[0]), len(cases) gauche, haut = 8, 4 class balle(): def __init__(self): # position initiale self.x = randint(1,20) self.y = randint(15,20) # direction deplacement self.vx = 1 if random() < .5 else -1 self.vy = 1 def aff(self,x1,y1,x2,y2): # si deplacement, on efface case precedente et affiche suivante fill_rect(10 * x1, 10 * y1, 10, 10, BLA) fill_rect(10 * x2, 10 * y2, 10, 10, NOI) self.x = x2 self.y = y2 def bouge(self): # position suivante avec effet aleatoire xx = max(0, min(31,self.x + self.vx + randint(-1,1))) yy = max(0, min(21,self.y + self.vy)) # bords ? Si oui rebond if xx == 0 or xx == 31: self.vx *= -1 if yy == 0 or yy == 21: self.vy *= -1 # On est dans le cadre du dessin ? try: # La case n'est pas vide ? if cases[yy - haut][xx - gauche] > 0: # rebond self.vx *= -1 self.vy *= -1 # si c'est du rose, on efface if cases[yy - haut][xx - gauche] == 1: cases[yy - haut][xx - gauche] = 0 else: # la case est vide, on deplace la balle self.aff(self.x, self.y, xx, yy) # on est a l'exterieur du cadre donc deplacement except: self.aff(self.x, self.y, xx, yy) def plateau(cases): for l, t in enumerate(cases): for c, v in enumerate(t): # la couleur depend de la valeur de la case 0 = BLA, 1 = ROS... fill_rect(10 * gauche + 10 * c, 10 * haut + 10 * l, 10, 10, coul[v]) plateau(cases) # creation de 5 balles balles = [] for k in range(5): balles.append(balle()) # depart chrono depart = monotonic() while True: # on bouge toutes les balles for b in balles: b.bouge() sleep(.03) # on compre le nb de 0 s = sum([r.count(0) for r in cases]) # fin du jeu if s == 169: fill_rect(0,0,320,222,BLA) plateau(cases) break # calcul du nb de jours et affichage jours = int((monotonic() - depart) / 3) draw_string(str(jours)+" jours",120,180,ROS)