2016-10-07 20 views
0

自分のプログラムのためのゲームを作っています。左キーまたは右キーを押したときにイメージを左右に反転しようとしています。関数について知りましたPygame:水平方向に反転する

pygame.transform.flip 

ただし、私のコードに挿入する場所は不明です。誰かが私を助けることができれば幸いです。ここに私のコードです。また、画像がスクリーンから外れるのを防ぐ方法を教えてもらえますか?

import pygame 
import os 

img_path = os.path.join('C:\Python27', 'player.png') 

class Player(object): 
    def __init__(self): 
     self.image = pygame.image.load("player1.png") 

     self.x = 0 
     self.y = 0 

    def handle_keys(self): 
     """ Handles Keys """ 
     key = pygame.key.get_pressed() 
     dist = 5 
     if key[pygame.K_DOWN]: 
      self.y += dist 
     elif key[pygame.K_UP]: 
      self.y -= dist 
     if key[pygame.K_RIGHT]: 
      self.x += dist 
     elif key[pygame.K_LEFT]: 
      self.x -= dist 
) 

    def draw(self, surface): 
     surface.blit(self.image, (self.x, self.y)) 


pygame.init() 
screen = pygame.display.set_mode((640, 400)) 

player = Player() 
clock = pygame.time.Clock() 

running = True 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit()  # quit the screen 
      running = False 

    player.handle_keys()  # movement keys 

    screen.fill((255,255,255)) # fill the screen with white 
    player.draw(screen)  # draw the player to the screen 
    pygame.display.update() # update the screen 

    clock.tick(60)    # Limits Frames Per Second to 60 or less 
+0

左または右のキーが押されたときに何かしています...そして、左または右のキーが押されたときに反転したいと思います...それを置くのは意味がありますか?画像が画面外に出ます。エッジ検出と呼ばれています。 – MooingRawr

+0

画面に画像を保存することは別の質問であるべきです。 – intrepidhero

答えて

2

プレイヤーがインスタンス化されるときにように私は、画像処理のものにします:

class Player(object): 
    def __init__(self): 
     self.image = pygame.image.load("player1.png") 
     self.image2 = pygame.transform.flip(self.image, True, False) 
     self.flipped = False 
     self.x = 0 
     self.y = 0 

ハンドルキーはself.flippedの状態を変更します。

if key[pygame.K_RIGHT]: 
     self.x += dist 
     self.flipped = False 
    elif key[pygame.K_LEFT]: 
     self.x -= dist 
     self.flipped = True 

次に、self.drawは表示する画像を決定します。

def draw(self, surface): 
    if self.flipped: 
     image = self.image2 
    else: 
     image = self.image 
    surface.blit(image, (self.x, self.y)) 

これは、すべてのアニメーションゲームオブジェクトで取るアプローチです。

+0

素晴らしいアイデア!私はそれを実装し、それは完璧に動作します! – meowmar

関連する問題