2017-08-03 9 views
-1

私はバックグラウンドで世界地図を持つゲームを作ろうとしていました。このゲームでは、ユーザーはマウスをクリックして移動することで画像をズームしたりドラッグしたりすることができました。まず、ズーム機能を追加しようとしましたが、ユーザーがマウスをクリックして画像をズームすると奇妙なことが起こります。画像は四角形に分割されます。ここに写真と私のコードです。 これは絵である:[1]:https://i.stack.imgur.com/dQhfX.jpg [1]:PyGameの問題背景画像をズームすることによって

これは何が起こるかです:https://i.stack.imgur.com/qdlqt.jpg

import pygame 
import time 
from pygame.locals import * 
clock = pygame.time.Clock() 
pygame.init() 
WHITE = (255, 255, 255) 
WIDTH = 1280 
HEIGHT = 800 
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32) 
img = pygame.image.load("/Users/Esat/Desktop/map.jpg") 
img = pygame.transform.scale(img,(WIDTH,HEIGHT)) 

while True: 
     events = pygame.event.get() 
     button_down = pygame.mouse.get_pressed() 
     if button_down == (1,0,0): 
      print("Clicked") 
      WIDTH = WIDTH+10 
      HEIGHT = HEIGHT+10 
      img = pygame.transform.scale(img, (WIDTH, HEIGHT)) 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 

     windowSurface.fill(WHITE) 
     windowSurface.blit(img, (0, 0)) 
     clock.tick(60) 
     pygame.display.flip() 

答えて

1

あなたは物事がファンキーかなり速い得ることができ、繰り返し画像を変更続けると。私はオリジナルのコピーを保持し、そのスケールに基づいてすべての縮尺を変更するのが最善の方法です。あなたのコードは固定されています:

import pygame 
import time 
from pygame.locals import * 
clock = pygame.time.Clock() 
pygame.init() 
WHITE = (255, 255, 255) 
WIDTH = 1280 
HEIGHT = 800 
windowSurface = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32) 
originalImg = pygame.image.load("map.jpg") 
img = pygame.transform.scale(originalImg,(WIDTH,HEIGHT)) 

while True: 
     events = pygame.event.get() 
     button_down = pygame.mouse.get_pressed() 
     if button_down == (1,0,0): 
      #print("Clicked") 
      WIDTH = WIDTH+10 
      HEIGHT = HEIGHT+10 
      img = pygame.transform.scale(originalImg, (WIDTH, HEIGHT)) 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 

     windowSurface.fill(WHITE) 
     windowSurface.blit(img, (0, 0)) 
     clock.tick(60) 
     pygame.display.flip() 
+0

それは動作します!ありがとうございました。 – antisycop

関連する問題