簡體   English   中英

用python翻轉圖像(pygame)

[英]Flipping an image with python (pygame)

我正在嘗試學習python,所以我在搞混pygame。 我是一個完整的初學者。

到目前為止,我已經完成了它,以便可以控制圖像,並使用箭頭鍵將其移動2d。

但是,我畫的圖像是朝左的,它總是朝左,所以我想使其朝着移動的方向。 當我按向右時,我設法使其旋轉了180度,但這是每次我按向右時,所以我一直以錯誤的方式翻轉。

我需要它在向右移動時朝右,在向左移動時朝左。

圖片已附上。

謝謝

import pygame
import time
pygame.init()
display_width = 1000
display_height = 800
black=(0,0,0)
white=(255,255,255)
gamedisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('metal gear python')
clock = pygame.time.Clock()

snakeimg= pygame.image.load('snake.png')

snake_width = 96
snake_height= 79
def snake(x,y):
    gamedisplay.blit(snakeimg, (x,y))


discovered = False
while not discovered:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            discovered = TRUE
        print (event)




    x = (display_width * 0.45)
    y = (display_height * 0.8)
    x_change=0
    y_change=0
    snake_speed=0


    gameExit= False
    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True
            print(event)    
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -3
                elif event.key == pygame.K_RIGHT:
                    x_change = 3



                elif event.key == pygame.K_RIGHT:
                    x_change = 3


            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:  
                    x_change = 0
                elif event.key == pygame.K_RIGHT:
                    x_change = 0
        x += x_change     

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                    y_change = -3
            elif event.key == pygame.K_DOWN:
                    y_change = 3
        if event.type == pygame.KEYUP:
                if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                    y_change = 0

        y += y_change

        gamedisplay.fill(white)
        snake(x,y)


        if x > display_width-snake_width or x < 0:
            gameExit=True

        if y > display_height-snake_height or y < 0:
            True


        pygame.display.update()
        clock.tick(60)

pygame.quit()
quit()

我主要是更改蛇功能,以便它計算正確的旋轉,然后旋轉圖像。 另外,我更改了一些邏輯,尤其是在事件處理方面,因此更易於閱讀

import pygame
import time

pygame.init()
display_width = 1000
display_height = 800
black = (0, 0, 0)
white = (255, 255, 255)
gamedisplay = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('metal gear python')
clock = pygame.time.Clock()

snakeimg = pygame.image.load('snake.png')

snake_width = 96
snake_height = 79


def snake(x, y):
    if x_change == 0 and y_change == 0:
        rotation = -90
    elif x_change > 0 and y_change == 0:
        rotation = 180
    elif x_change < 0 and y_change == 0:
        rotation = 0
    elif x_change == 0 and y_change > 0:
        rotation = 90
    elif x_change == 0 and y_change < 0:
        rotation = -90
    elif x_change < 0 and y_change < 0:
        rotation = -45
    elif x_change < 0 and y_change > 0:
        rotation = 45
    elif x_change > 0 and y_change < 0:
        rotation = -135
    elif x_change > 0 and y_change > 0:
        rotation = 135
    gamedisplay.blit(pygame.transform.rotate(snakeimg, rotation), (x, y))


discovered = False
while not discovered:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            discovered = True
        print(event)

    x = (display_width * 0.45)
    y = (display_height * 0.8)
    x_change = 0
    y_change = 0
    snake_speed = 0

    gameExit = False
    while not gameExit:
        for event in pygame.event.get():
            print(event)
            if event.type == pygame.QUIT:
                gameExit = True
                discovered = True # so you can actually quit the game
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -3
                elif event.key == pygame.K_RIGHT:
                    x_change = 3
                elif event.key == pygame.K_UP:
                    y_change = -3
                elif event.key == pygame.K_DOWN:
                    y_change = 3
            elif event.type == pygame.KEYUP:
                if event.key in (pygame.K_LEFT, pygame.K_RIGHT):
                    x_change = 0
                elif event.key in (pygame.K_UP, pygame.K_DOWN):
                    y_change = 0

        x += x_change
        y += y_change

        gamedisplay.fill(white)
        snake(x, y)

        if x > display_width - snake_width or x < 0:
            gameExit = True

        if y > display_height - snake_height or y < 0:
            gameExit = True

        pygame.display.update()
        clock.tick(60)

pygame.quit()
quit()

但我仍然有一個問題:為什么2個游戲相互循環?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM