问题描述
我希望图像在向右行驶时朝右,在向左行驶时朝左.我不知道在这里做什么...这是一个作业,不需要翻转图像,但我仍然想学习如何做.
I want the image to face right when travelling right and face left when travelling left. I'm not sure what to do here... This is for an assignment and flipping the image isn't necessary, but I'd still like to learn how to do it.
"""
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, 0))
cherry = pygame.image.load("Cherry.png")
cherry.set_colorkey((0, 0, 0))
ghost = pygame.image.load("Ghost.png")
ghost.set_colorkey((0, 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(),我不知道如何使用.顺便说一下,我认为您不需要我导入的任何文件,但如果您需要,我很乐意提供资源.任何帮助将不胜感激!
I did some research and people recommended using pygame.transform.flip(), which I have no idea how to use. By the way, I don't think you'll need any of the files that I imported, but I'll be glad to provide the resources if you need it. Any help would be greatly appreciated!
推荐答案
flip(Surface, xbool, ybool) ->表面
这可以垂直、水平或同时翻转 Surface.
This can flip a Surface either vertically, horizontally, or both.
pygame.transform.flip()
flips 从被翻转的源 Surface 创建一个新的 Surface.例如:
pygame.transform.flip()
flips creates a new Surface from the source Surface which is flipped. e.g:
my_flipped_image = pygame.transform.flip(my_image, True, False);
这篇关于如何在撞墙后翻转图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!