Pygame - 移动图像


物体的移动是任何计算机游戏的一个重要方面。计算机游戏通过在增量位置绘制和擦除对象来创建运动错觉。以下代码通过在事件循环中增加 x 坐标位置并用背景颜色擦除它来绘制图像。

例子

image_filename = 'pygame.png'
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
screen = pygame.display.set_mode((400,300), 0, 32)
pygame.display.set_caption("Moving Image")
img = pygame.image.load(image_filename)
x = 0
while True:
   screen.fill((255,255,255))
   for event in pygame.event.get():
      if event.type == QUIT:
         exit()
   screen.blit(img, (x, 100))
   x= x+0.5

   if x > 400:
      x = x-400
   pygame.display.update()

输出

Pygame 徽标图像开始显示在左边框并反复向右移动。如果到达右边界,则其位置重置为左边界。

增量位置

在下面的程序中,图像首先显示在 (0,150) 位置。当用户按下箭头键(左、右、上、下)时,图像的位置会改变 5 个像素。如果发生 KEYDOWN 事件,程序将检查键值是否为 K_LEFT、K_RIGHT、K_UP 或 K_DOWN。如果 x 坐标为 K_LEFT 或 K_RIGHT,则 x 坐标将更改 +5 或 -5。如果键值为 K_UP 或 K_DOWN,则 y 坐标的值会更改 -5 或 +5。

image_filename = 'pygame.png'
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
screen = pygame.display.set_mode((400,300))
pygame.display.set_caption("Moving with arrows")
img = pygame.image.load(image_filename)
x = 0
y= 150
while True:
   screen.fill((255,255,255))
   screen.blit(img, (x, y))
   for event in pygame.event.get():
      if event.type == QUIT:
         exit()

      if event.type == KEYDOWN:
         if event.key == K_RIGHT:
            x= x+5
         if event.key == K_LEFT:
            x=x-5
         if event.key == K_UP:
            y=y-5
         if event.key == K_DOWN:
            y=y+5
         pygame.display.update()