コード例 #1
0
def main():
    pygame.init()
    screen = pygame.display.set_mode((800,600))
    bgd = pygame.Surface((800,600)).convert()
    bgd.fill((0,0,0))
    
    evtsys = EventSystem()
    evtsys.signals['quit'].register(quitting)
    
    ball = Ball(20, (100, 115))
    evtsys.signals['mousemotion'].register(ball.mousemotion)
    evtsys.signals['mousebuttondown'].register(ball.mousedown)
    evtsys.signals['mousebuttonup'].register(ball.mouseup)
    
    tiles = []
    tiles.append(Square((300, 100), (550, 300)))
    
    tiles.append(Square((900, 100), (400, 550)))
    # wrong, concave not possible
##    tiles.append(Poly([(0,0), (300,0), (300,-100), (200,-50), (100, -50), (0,-100) ], (200, 300)))
    
    tiles.append(Poly([(0,0), (100,0), (100, -400)], (720, 450)))
    tiles.append(Poly([(0,0), (100,0), (100, -400)], (200, 250)))
    tiles.append(Poly([(0,0), (100,0), (0, -400)], (70, 450)))
    tiles.append(Poly([(0,0), (0,400), (100, 0)], (70, 150)))
    tiles.append(Poly([(0,0), (100,400), (100, 0)], (720, 150) ))
    tiles.append(Poly([(0,0), (40,-40), (40, -80), (0,-160), (-40, -160), (-80, -120), (-80, -60), (-40, 0)], (350, 150) ))
    
    ball.tiles = tiles
    ball.screen = screen
    fps = []
    clock = pygame.time.Clock()
    global running
    while running:
        clock.tick(100)
        fps.append(clock.get_fps())
        print fps[-1]
        evtsys.update(0,0,0)
        screen.blit(bgd, (0,0))
        # dawing tiles
        for tile in tiles:
            screen.blit(tile.image, tile.rect)
            tile.crect.center = tile.rect.center
            # drawing normals
            cx, cy = tile.rect.center
            for nx, ny in tile.normals:
                pygame.draw.line(screen, (0,(ny*nx*255)%255,255), (cx, cy), (cx+50*nx, cy+50*ny))
        # update ball
        ball.update()
        screen.blit(ball.image, ball.rect)
        # update screen
        pygame.display.flip()

    print "average fps:", sum(fps)/len(fps)
    print "max fps", max(fps)
    print "mmin fps", min(fps)
def main():
    pygame.init()
    screen = pygame.display.set_mode((800,600))
    # set up world
    world = TileMap((10, 10), (32,32))
    # adding tiles
    name1 = 'test_tile1.PNG'
    name2 = 'test_tile2.PNG'
    for x in range(-64, 1280, 32):
        for y in range(0, 1280, 32):
            world.tiles.append(Tile(name1, (x,y)))
            name1, name2 = name2, name1
        name1, name2 = name2, name1
    # setting up eventsytem
    evtsys = EventSystem()
##    evtsys._blocking = True
    # setting up viewport
    view = ViewPort(screen, pygame.Rect(0,0,800,600), world, pygame.Rect(0,0,800,600))
    evtsys.signals['mousemotion'].register(view.handle_mousemotion)
    evtsys.signals['mousebuttondown'].register(view.handle_mousedown)
    evtsys.signals['mousebuttonup'].register(view.handle_mouseup)
    evtsys.signals['keydown'].register(view.handle_keydown)
    # connecting quit event
    evtsys.signals['quit'].register(quitting)
    
##    for tile in world.tiles:
##        screen.blit(tile.images[0][0], tile.rect)
##    pygame.display.flip()
    # main loop
    global running
    clock = pygame.time.Clock()
    fps = []
    while running:
        clock.tick()
        evtsys.update(0,0,0)
        view.drawrot()
        fps.append(clock.get_fps())
    print "average fps:", sum(fps)/len(fps)
    print "min fps:", min(fps)
    print "max fps:", max(fps)