问题描述
我希望图像在向右行驶时朝右,在向左行驶时朝左。我不知道在这里做什么...这是一个作业,不需要翻转图像,但我仍然想学习如何做。
"""
Author: victor Xu
Date: January 21st,2021
Description: Animating 3 images with background music and 3 sound effects.
"""
import pygame
def main():
'''This function defines the 'mainline logic' for our game.'''
# I - INITIALIZE
pygame.init()
# disPLAY
screen = pygame.display.set_mode((640,480))
pygame.display.set_caption("Crazy Shapes Animation")
# ENTITIES
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((255,255,255)) # white background
pygame.mixer.music.load("music.ogg") # background music
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(-1)
cherry_wav = pygame.mixer.sound("cherry.wav")
cherry_wav.set_volume(0.5) # cherry sfx
pacman_wav = pygame.mixer.sound("pacman.wav")
pacman_wav.set_volume(0.5) # pacman sfx
ghost_wav = pygame.mixer.sound("ghost.wav")
ghost_wav.set_volume(0.5) # ghost sfx
pacman = pygame.image.load("PacMan.png")
pacman.set_colorkey((0,0))
cherry = pygame.image.load("Cherry.png")
cherry.set_colorkey((0,0))
ghost = pygame.image.load("Ghost.png")
ghost.set_colorkey((0,0))
# A - ACTION (broken into ALTER steps)
# ASSIGN
clock = pygame.time.Clock()
keepGoing = True
pacman_x = 0 # Assign starting (x,y)
pacman_y = 200 # for our red Box
move_pacman_x = 5
ghost_x = 300 # Assign starting (x,y)
ghost_y = 200 # for our green rectangle
move_ghost_y = 5
cherry_x = 640 # Assign starting (x,y)
cherry_y = 0 # for our blue circle
move_cherry_x = 5
move_cherry_y = 5
# LOOP
while keepGoing:
# TIMER
clock.tick(30)
# EVENT HANDLING
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
# change x coordinate of red Box
pacman_x += move_pacman_x
# check boundaries,to bounce off wall
if pacman_x >= screen.get_width():
pacman_wav.play()
pacman_x = screen.get_width()
move_pacman_x *= -1
if pacman_x <= 0:
pacman_wav.play()
pacman_x = 0
move_pacman_x *= -1
# change y coordinate of green rectangle
ghost_y += move_ghost_y
# check boundaries,to bounce off wall
if ghost_y >= screen.get_height():
ghost_wav.play()
ghost_y = screen.get_height()
move_ghost_y *= -1
if ghost_y <= 0:
ghost_wav.play()
ghost_y = 0
move_ghost_y *= -1
# change x coordinate of blue circle
cherry_x += move_cherry_x
# check boundaries,to bounce off wall
if cherry_x >= screen.get_width():
cherry_wav.play()
cherry_x = screen.get_width()
move_cherry_x *= -1
if cherry_x <= 0:
cherry_wav.play()
cherry_x = 0
move_cherry_x *= -1
# change y coordinate of blue circle
cherry_y += move_cherry_y
# check boundaries,to bounce off wall
if cherry_y >= screen.get_height():
cherry_wav.play()
cherry_y = screen.get_height()
move_cherry_y *= -1
if cherry_y <= 0:
cherry_wav.play()
cherry_y = 0
move_cherry_y *= -1
# REFRESH (update window)
screen.blit(background,(0,0))
screen.blit(ghost,(ghost_x,ghost_y)) # blit rectangle at new (x,y) location
screen.blit(pacman,(pacman_x,pacman_y)) # blit Box at new (x,y) location
screen.blit(cherry,(cherry_x,cherry_y)) # blit circle at new (x,y) location
pygame.display.flip()
# Close the game window
pygame.quit()
# Call the main function
main()
我做了一些研究,人们推荐使用 pygame.transform.flip(),我不知道如何使用。顺便说一下,我认为您不需要我导入的任何文件,但如果您需要,我很乐意提供资源。任何帮助将不胜感激!
解决方法
flip(Surface,xbool,ybool) -> Surface
这可以垂直、水平或同时翻转 Surface。
pygame.transform.flip()
翻转从翻转的源 Surface 创建一个新的 Surface。例如:
my_flipped_image = pygame.transform.flip(my_image,True,False);