def render_name(i,names,screen): font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos)
def render_long(longs, names, location, width=1280, height=720): """ Render waarschijnlijk al je vrienden zodat bij hover-over er iets getekend kan worden: Teken alle mensen op een ellips die mooi aansluit Steek alle posities in een lib Bij mouseover teken dan andere dingen """ #plan: eerst rekenen en dan tekenen! rs = {} hoeken = {} hoek = 0 r_v = 450 r_h = 1920/2-90 step_hoek = math.pi*2/len(longs.keys()) for i in longs.keys(): rs[i] = (r_h*r_v)/(math.sqrt((r_v*math.cos(hoek))**2+(r_h*math.sin(hoek))**2)) hoeken[i] = hoek hoek+=step_hoek #Vanaf hier is het rekenwerk gedaan en kunnen we beginnen tekenen pygame.init() #Stel een scherm op met gegeven groottes screen = pygame.display.set_mode((1920, 1080))#, pygame.FULLSCREEN #Zet de juiste titel aan pygame.display.set_caption('Facebook Drawer') #Creer een witte achtergrond background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((250, 250, 250)) #Voer de achtergrond door in het scherm screen.blit(background, (0, 0)) #Voer de update door naar het scherm van de user pygame.display.flip() #initieer een klok, zodat we de pc niet smelten clock = pygame.time.Clock() images = [Image(center=(1920/2,1080/2),\ r = rs[x], hoek=hoeken[x]\ ,name = x)\ for x in longs.keys()] #Bouw een library op met daarin de locaties van de verschillende dingens positions = {} for i in images: positions[i.name] = i.coords() allsprites = pygame.sprite.RenderPlain(images) pointer = Pointer() #Begin een oneindige loop van tekenen tegen (hopelijk) 60fps go= True o = time.clock() fps = 0 armed = False while go: clock.tick(30) for event in pygame.event.get(): if event.type == QUIT: go = False elif event.type == KEYDOWN and event.key == K_ESCAPE: go = False allsprites.update() screen.blit(background, (0, 0)) pointer.update() allsprites.draw(screen) for i in images: if pointer.check(i): font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) rs2 = {} hoeken2 = {} hoek = 0 r_v = 450 r_h = 1920/2-90 duidelijk = [] duidelijk2 = [] for j in longs[i.name]: if not j[1] in duidelijk: duidelijk.append(j[1]) duidelijk2.append(j) step_hoek = math.pi*2/len(duidelijk) for i in duidelijk: hoeken2[i] = hoek rs2[i] = (r_h*r_v)/(math.sqrt((r_v*math.cos(hoek))**2+(r_h*math.sin(hoek))**2))-100 hoek += step_hoek images2 = [Image(center=(1920/2,1080/2),r = rs2[x], hoek=hoeken2[x],name = x) for x in duidelijk] s2 = pygame.sprite.RenderPlain(images2) s2.update() positions2 = {} for i in images2: positions2[i.name] = i.coords() for i in duidelijk2: pygame.draw.line(screen, RED, positions2[i[1]], positions[i[0]], 5) s2.draw(screen) pygame.display.flip() #FPS module if time.clock()>o + 1: print fps fps = 0 o = time.clock() fps+=1 pygame.quit()
def main(longs, names, location, full_screen = False, spread = False): """ Render heel het spul """ pygame.init() if full_screen: screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN) else: screen = pygame.display.set_mode((1920, 1080)) rs = {} hoeken = {} hoek = 0 r_v = 450 r_h = 1920/2 - 90 step_hoek = math.pi * 2 / len(longs.keys()) if spread: ticker = 0 for i in longs.keys(): if ticker: ticker = 0 a = 0 else: ticker = 1 a = 60 rs[i] = (r_h*r_v)/(math.sqrt((r_v*math.cos(hoek))**2+(r_h*math.sin(hoek))**2))+a hoeken[i] = hoek hoek += step_hoek else: for i in longs.keys(): rs[i] = (r_h*r_v)/(math.sqrt((r_v*math.cos(hoek))**2+(r_h*math.sin(hoek))**2)) hoeken[i] = hoek hoek += step_hoek pygame.display.set_caption('Facebook Drawer') background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((250, 250, 250)) screen.blit(background, (0, 0)) pygame.display.flip() clock = pygame.time.Clock() images = [Image(center = (1920/2,1080/2), r = rs[x], hoek = hoeken[x],\ name = x) for x in longs.keys()] positions = {} for i in images: positions[i.name] = i.coords() allsprites = pygame.sprite.RenderPlain(images) pointer = Pointer() locationspi = {} loop = True update_needed = True armed = False done = False #fps fps = 0 start = time.clock() pygame.draw.ellipse(background, (0, 127, 0), (180-25, 1080/2-450+35, 1920-180*2+50, 1080-250), 0) allsprites.draw(background) while loop: for event in pygame.event.get(): if event.type == QUIT: loop = False elif event.type == KEYDOWN and event.key == K_ESCAPE: loop = False elif event.type == KEYDOWN and event.key == K_n: for i in images: if pointer.check(i): font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) pygame.display.flip() elif event.type == KEYDOWN and event.key == K_b: for i in images2: if pointer.check(i): font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) pygame.display.flip() elif event.type == KEYDOWN and event.key == K_v: for i in images2: font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) pygame.display.flip() elif event.type == MOUSEBUTTONDOWN: armed = True elif event.type ==MOUSEBUTTONUP: if armed: for i in images: if not done: if pointer.check(i): done = True if i.clicked: update_needed = True i.clicked = False else: images2 = i.click(longs[i.name],spread) font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) locationspi[i.name] = {} for j in images2: locationspi[i.name][j.name] = j.coords() counts = {} for couple in longs[i.name]: if not couple[1] == '100001655056379': pygame.draw.line(screen, GREEN, positions[couple[0]], locationspi[i.name][couple[1]] , 5) relations = pygame.sprite.RenderPlain(images2) relations.draw(screen) pygame.display.flip() done = False pointer.update() if update_needed: update_needed = False screen.blit(background, (0,0)) pygame.display.flip() #fps if time.clock()>start + 1: print fps fps = 0 start = time.clock() fps+=1 pygame.quit()
def render_doubles(doubles,names,location,width=1280,height=720): """Render een image waarin de verschillende mutual friends naar voren komen""" #plan: eerst rekenen en dan tekenen! locations = set(location.values()) people = flatten_list(doubles) perlocation = {} for i in locations: perlocation[i] = [x for x in people if location[x]==i] centerloc = {} hoek = 0 r = height/2 for i in locations: centerloc[i] = toCartSimple(r,hoek,width,height) hoek+=math.pi*2/len(locations) hoeken = {} for i in people: aantal = len(perlocation[location[i]]) voorgangers = len([x for x in hoeken.keys() if location[x]==location[i]]) hoeken[i] = math.pi*2/aantal*voorgangers rs = {} for i in locations: aantal = len(perlocation[i]) rs[i] = 80+10*aantal #Vanaf hier is het rekenwerk gedaan en kunnen we beginnen tekenen pygame.init() #Stel een scherm op met gegeven groottes screen = pygame.display.set_mode((1920, 1080),pygame.FULLSCREEN) #Zet de juiste titel aan pygame.display.set_caption('Facebook Drawer') #Creer een witte achtergrond background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((250, 250, 250)) #Voer de achtergrond door in het scherm screen.blit(background, (0, 0)) #Voer de update door naar het scherm van de user pygame.display.flip() #initieer een klok, zodat we de pc niet smelten clock = pygame.time.Clock() images = [Image(center=centerloc[location[x]],\ r = rs[location[x]], hoek=hoeken[x],\ name = x)\ for x in people] #Bouw een library op met daarin de locaties van de verschillende dingens positions = {} for i in images: positions[i.name] = i.coords() allsprites = pygame.sprite.RenderPlain(images) pointer = Pointer() #Begin een oneindige loop van tekenen tegen (hopelijk) 60fps go= True o = time.clock() fps = 0 while go: clock.tick(60) for event in pygame.event.get(): if event.type == QUIT: go = False elif event.type == KEYDOWN and event.key == K_ESCAPE: go = False allsprites.update() screen.blit(background, (0, 0)) #Doe het een beetje oneff: for item in doubles: pygame.draw.line(screen, GREEN, positions[item[0]], positions[item[1]], 5) pointer.update() allsprites.draw(screen) for i in images: if pointer.check(i): i.glow() font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) for item in doubles: if item[1] == i.name or item[0] == i.name: pygame.draw.line(screen, RED, positions[item[0]], positions[item[1]], 5) if item[1]==i.name: other = item[0] else: other = item[1] text = font.render(names[other], 1, (10, 10, 10)) textpos = text.get_rect(centerx=positions[other][0], centery=positions[other][1]+40) screen.blit(text, textpos) pygame.display.flip() #FPS module if time.clock()>o + 1: print fps fps = 0 o = time.clock() fps+=1 pygame.quit()
def main(doubles, names, location, full_screen = False): """ Render heel het spul """ pygame.init() if full_screen: screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN) else: screen = pygame.display.set_mode((1920, 1080)) locations = set(location.values()) people = flatten_list(doubles) perlocation = {} rl = {} hoekenl = {} hoek = 0 r_v = 450 - 150 r_h = 1920/2 - 90 - 150 step_hoek = math.pi *2 /len(locations) hoeken = {} rs = {} hoekje = {} step_hoekje = {} for i in locations: perlocation[i] = [x for x in people if location[x] == i] rl[i] = (r_h*r_v)/(math.sqrt((r_v*math.cos(hoek))**2+(r_h*math.sin(hoek))**2)) hoekenl[i] = hoek hoek+= step_hoek hoekje[i] = 0 step_hoekje[i] = math.pi *2 /len(perlocation[i]) rje = 50 + 10* len(perlocation[i]) for j in perlocation[i]: hoeken[j] = hoekje[i] rs[j] = rje hoekje[i] += step_hoekje[i] pygame.display.set_caption('Facebook Drawer') background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((250, 250, 250)) screen.blit(background, (0, 0)) pygame.display.flip() clock = pygame.time.Clock() images = [Image(center = toCart(rl[location[x]],hoekenl[location[x]]), r = rs[x], hoek = hoeken[x],\ name = x) for x in people] positions = {} for i in images: positions[i.name] = i.coords() allsprites = pygame.sprite.RenderPlain(images) pointer = Pointer() location_names = {'fam' : 'Famillie', 'kot': 'Kot', 'lk': 'Lentekind', 'balen': 'Balen', 'leuven': 'Leuven', 'mol': 'Mol'} for i in locations: center = toCart(rl[i], hoekenl[i]) font = pygame.font.Font(None, 24) try: text = font.render(location_names[i], 1, (10, 10, 10)) except Exception: text = font.render(i, 1, (10, 10, 10)) textpos = text.get_rect(centerx=center[0], centery=center[1]) background.blit(text, textpos) allsprites.draw(background) screen.blit(background, (0, 0)) pygame.display.flip() loop = True update_needed = True armed = False pressed = False n_pressed = False old_name = False old_pos = False #fps fps = 0 start = time.clock() while loop: clock.tick(90) pointer.update() for event in pygame.event.get(): if event.type == QUIT: loop = False elif event.type == KEYDOWN and event.key == K_n: n_pressed = True for i in doubles: pygame.draw.line(screen, GREEN, positions[i[0]], positions[i[1]], 5) allsprites.draw(screen) pygame.display.flip() armed = True elif event.type == KEYUP and event.key == K_n: n_pressed = False update_needed = True elif event.type == MOUSEBUTTONDOWN: pressed = True elif event.type == MOUSEBUTTONUP: if pressed: for i in images: if pointer.check(i): if not i.clicked: font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) i.clicked = True for j in doubles: if j[0] == i.name or j[1] == i.name: pygame.draw.line(screen, RED, positions[j[0]], positions[j[1]], 5) pygame.display.flip() else: i.clicked = False update_needed = True for i in images: if pointer.check(i): if not old_name == i.name: if old_pos != False: for image in [x for x in images if x.name == old_name]: if not image.clicked: screen.blit(background, (0,0)) pygame.display.update(old_pos) font = pygame.font.Font(None, 24) text = font.render(names[i.name], 1, (10, 10, 10)) textpos = text.get_rect(centerx=i.coords()[0], centery=i.coords()[1]+40) screen.blit(text, textpos) pygame.display.update(textpos) old_name = i.name old_pos = textpos if update_needed: update_needed = False screen.blit(background, (0,0)) if n_pressed: for i in doubles: pygame.draw.line(screen, GREEN, positions[i[0]], positions[i[1]], 5) allsprites.draw(screen) pygame.display.flip() #fps if time.clock()>start + 1: print fps fps = 0 start = time.clock() fps+=1 pygame.quit()