Python / Pygame FULLSCREEN Tag Creates A Game Screen That Is To Large For The Screen
Question: **UPDATED ISSUE**

I have discovered the issue appears to be with the fact that I am using the
FULLSCREEN tag to create the window. I added a rectangle to be drawn in the
top left of the scree (0, 0), but when I run the program, It is mostly off the
screen. Then, when I Alt-Tab away and back, the rectangle is appropriately
placed at 0,0 and the turret is off center.

So basically, when the program starts, the game screen is larger than my
actual screen, but centered. Then after Alt-Tab, the game screen is lined up
with 0,0 but since the game screen is larger than my screen, the turret looks
off center, but is actually centered relative to the game.

So the real question is why does using the FULLSCREEN tag make a screen larger
than my computer screen?

**ORIGINAL ISSUE**

I am building a simple demonstration of a turret in the center of the screen
which follows the location of the cursor as if to fire where it is. Everything
works perfectly until I Alt-Tab away from the screen, and then Alt-Tab back.
At this point to turret is now off center (down and to the right)

    
    
    import pygame, math
    pygame.init()
    
    image_library = {}
    
    screen_dimen = pygame.display.Info()
    print("Screen Dimensions ", screen_dimen)
    
    def get_image(name):
        if name not in image_library:
            image = pygame.image.load(name)
            image_library[name] = image
        else:
            image = image_library[name]
        return image
    
    robot_turret_image = get_image('robot_turret.png')
    
    screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
    
    done = False
    
    clock = pygame.time.Clock()
    
    while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True
            if event.type == pygame.MOUSEMOTION:
                print(event.pos)
            if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                done = True
    
        screen.fill((0, 0, 0))
        pos = pygame.mouse.get_pos()
        angle = 360 - math.atan2(pos[1] - (screen_dimen.current_h / 2),
                                 pos[0] - (screen_dimen.current_w / 2)) * 180 / math.pi
        rot_image = pygame.transform.rotate(robot_turret_image, angle)
        rect = rot_image.get_rect(center=(screen_dimen.current_w / 2, screen_dimen.current_h / 2))
    
        screen.blit(rot_image, rect)
    
        color = (0, 128, 255)
        pygame.draw.rect(screen, color, pygame.Rect(0, 0, 200, 200))
    
        pygame.display.update()
        clock.tick(60)
    

It seems that the center is now off. I have printed out the screen dimensions
before and after the Alt-Tab and they are the same, so I can't figure out why
the image moves. I believe I am missing something regarding state changes with
Pygame, but can't figure out what. If it is relevant, I am on Windows 10.


Answer: Alright, I discovered a solution from
[gamedev.stackexchange](http://gamedev.stackexchange.com/questions/105750/pygame-
fullsreen-display-issue)

And I will re-hash it here. The issue was that Using the fullscreen tag was
making a screen larger than my computer screen. The following code solves this

    
    
    import ctypes
    ctypes.windll.user32.SetProcessDPIAware()
    true_res = (ctypes.windll.user32.GetSystemMetrics(0), ctypes.windll.user32.GetSystemMetrics(1))
    pygame.display.set_mode(true_res,pygame.FULLSCREEN)
    

It is important to note that this is potentially just a windows fix, but I do
not have another system with which to test it on. But It works on Windows 10
with python 3.5.1 and pygame 1.9.2a0

