2016-09-01 6 views
1

업데이트] ISSUE 나는 문제가 나는 창을 만들 수 FULLSCREEN 표시 플래그를 사용하고 있다는 사실을 것으로 보인다 발견했다파이 게임 전체 화면 표시 플래그는 화면

에 비해 너무 큰 게임 화면을 작성합니다. 화면 왼쪽 상단에 그려지는 직사각형을 추가했는데, 프로그램을 실행하면 대부분 스크린 밖에 있습니다. 그런 다음 Alt-Tab을 사용하여 멀리 떨어 뜨리면 직사각형이 적절하게 0,0에 배치되고 포탑이 중앙에서 벗어납니다.

기본적으로 프로그램이 시작될 때 게임 화면은 실제 화면보다 크지 만 가운데에 배치됩니다. 그런 다음 Alt-Tab을 클릭하면 게임 화면이 0,0으로 정렬되지만 게임 화면이 내 화면보다 크기 때문에 포대는 중앙에서 보이지 않지만 실제로 게임 중심에 배치됩니다.

실제 질문은 FULLSCREEN 표시 플래그를 사용하면 내 컴퓨터 화면보다 큰 화면이 표시된다는 것입니다.

내가 어디 화재 것처럼 커서의 위치를 ​​다음 화면의 중심에 포탑의 간단한 데모를 구축하고

최초 발행. 모든 것은 Alt-Tab을 화면에서 멀리 떨어 뜨리고 Alt-Tab을 누르기 전까지는 완벽하게 작동합니다. 터렛이 시점에서 중심이 이제 꺼져있는 것 같습니다 떨어져 지금 센터 (아래 오른쪽)

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) 

입니다. Alt-Tab 전후의 화면 치수를 인쇄 했으므로 동일하므로 왜 이미지가 움직이는 지 알 수 없습니다. 나는 파이 게임 (Pygame)과 함께 국가 변화에 관한 어떤 것을 놓치고 있다고 생각하지만, 무엇을 알아 내지 못한다. 이 관련이 있다면, 내가 좋아

+0

Windows 7에서 pygame 1.9.2b1 (Python 3.4.2)을 사용하여 문제를 재현하려고했지만 시도 할 수 없었습니다. 파이썬과 파이 게임의 어떤 버전을 사용하고 있습니까? –

+0

파이썬 3.5.1 및 파이 게임 1.9.2a0을 사용하고 있습니다. – The4thIceman

답변

0

윈도우 10 일 오전, 나는 gamedev.stackexchange

에서 해결책을 발견 그리고 나는 다시 해시됩니다 여기. 문제는 전체 화면 태그를 사용하면 내 컴퓨터 화면보다 화면이 커지고 있다는 것입니다. 다음 코드는이

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) 

이 잠재적으로 그냥 창을 수정 프로그램입니다 것이 중요합니다 해결,하지만 난 그것을 테스트하는 또 다른 시스템이 없습니다. 그러나 Windows 10에서 python 3.5.1 및 pygame 1.9.2a0으로 작동합니다.