コード例 #1
0
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)
コード例 #2
0
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()
コード例 #3
0
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()
コード例 #4
0
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()
コード例 #5
0
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()