2017-11-01 14 views
1

창에있을 때 및 전체 화면에서도 마우스 위치를 클릭하는 간단한 코드 비트를 만들려고합니다.파이 게임이 전체 화면 모드에서 마우스 위치를 반환하지 않습니다.

현재 커서 모드가 윈도우 위에있을 때 올바른 값이 반환되지만 마우스 위치에 관계없이 전체 화면에서는 800,480 (화면 해상도) 값이 반환됩니다. 여기 내 코드입니다 :

import pygame 

windowwidth = 800 
windowheight = 480 
pygame.init() 
pygame.display.init() 
screen = pygame.display.set_mode((windowwidth, windowheight)) 
pygame.display.flip() 

running = 1 
while running: 
    LEFT = 1 
    event1 = pygame.event.get() 
    for event in event1: 
     if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT: 
       print(event.pos) 
     if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_f: 
        pygame.display.set_mode((800,480), pygame.FULLSCREEN) 
       if event.key == pygame.K_g: 
        pygame.display.set_mode((800, 480)) 
       else: 
        break 

    pygame.display.flip() 

답변

0

문제는 파이 게임은 마우스 클릭의지고 있다는 점이다 pygame.display.set_mode() 전달 된 해상도에 연결되어 픽셀 단위로 조정합니다. 따라서 전체 화면으로 전환 할 때 해상도를 (800, 480)로 설정하기 때문에 정확한 픽셀 좌표가 제공되지 않습니다.

해결책?

전체 화면으로 이동할 때 실제 모니터 해상도로 전달하십시오. 파이 게임에서 해상도로 (0, 0)을 입력하면 파이 게임이 전체 화면 해상도를 생성합니다.

그래서이 특별한 화면 크기와 전체 화면 플래그를 전달하면됩니다. 이제 코드가 작동합니다!

이 답변으로 도움이 되었기를 바랍니다. 더 이상의 질문이 있으면 아래에 의견을 게시하십시오!

@Michael O'Dwyer의 대답은 파이 게임 윈도우의 사전 결정 캔버스 크기의 그의 설명에 더하여, 충분하지만
import pygame 

windowwidth = 0 
windowheight = 0 
pygame.init() 
pygame.display.init() 
screen = pygame.display.set_mode((windowwidth, windowheight)) 
pygame.display.flip() 

running = 1 
while running: 
    LEFT = 1 
    event1 = pygame.event.get() 
    for event in event1: 
     if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT: 
       print(event.pos) 
     if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_f: 
        pygame.display.set_mode((0,0), pygame.FULLSCREEN) 
       if event.key == pygame.K_g: 
        pygame.display.set_mode((800, 480)) 
       else: 
        break  

    pygame.display.flip() 
+0

불행히도이 수정 후에도 변경된 사항이 없습니다. – Jkind9

+0

배경 이미지를 atall로 표시하여 문제가 발생할 수 있습니까? – Jkind9

+0

답변에 제공된 정확한 코드를 실행하면 마우스 위치가 올바르게 등록됩니까? 방금 다시 시도했는데 제대로 작동하는지 확인할 수 있습니다. –

1

, 당신은 또한 자동으로보다 선명한에 대한 pygame.display.Info() 방법을 사용하여 시스템의 너비와 높이를 감지 할 수 . 여기에 자동으로 감지 폭과 높이와 코드가 될 것이다 :

import pygame 

# Initialize Pygame 
pygame.init() 

# Get system display information 
displayInfo = pygame.display.Info() 
windowwidth = displayInfo.current_w 
windowheight = displayInfo.current_h 

# Commented out - No need to reinitialize other Pygame modules 
# after pygame.init() is called 
# pygame.display.init() 

screen = pygame.display.set_mode((windowwidth, windowheight)) 
pygame.display.flip() 

running = 1 
while running: 
    LEFT = 1 
    for event in pygame.event.get(): 
     if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT: 
       print(event.pos) 
     if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_f: 
        pygame.display.set_mode((windowwidth, windowheight), pygame.FULLSCREEN) 
       if event.key == pygame.K_g: 
        pygame.display.set_mode((800, 480)) 
       else: 
        break 

    pygame.display.flip() 

Herepygame.display.Info() 방법에 대한 파이 게임 문서입니다.

희망이 도움이되었습니다!

+0

멋진 속임수, 고마워요! – Jkind9

+0

불행히도 여전히 마우스 위치를 등록하는 데 많은 행운이 없습니다. – Jkind9

+0

@ Jkind9 코드가 의도 한대로 작동하고 있습니다. 어떤 방식으로 마우스 위치를 등록합니까? – Jerrybibo