上接:
Python——pygame图像处理(一)
4. 一直移到最右边:
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
my_dog = pygame.image.load("timg.jpg")
x = 50
y = 50
screen.blit(my_dog,[x,y])
pygame.display.flip()
for looper in range(1,100):
pygame.draw.rect(screen,[255,255,255],[x,y,90,90],0)
x = x + 5
screen.blit(my_dog,[x,y])
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
如果增加x,也就是让小狗一直往右移,会怎么样呢?即换为:
for looper in range(1,200):
最后发现小狗消失了!因为我们打开的窗口x = 640就到头了。
5. 一维反弹
如果我们想让小狗在窗口的边界反弹,就要知道它什么时候“碰到”窗口边界,然后让它朝反方向移动。如果想让它一直来回移动,就要在窗口左右两边都做同样的处理。
在左边界很容易,只要检查小狗的位置是不是等于0(或者某个很小的数)。
在右边界,就要查看小狗是不是在窗口的右边界上。不过小狗的边界是按它的左边界,而不是右边界设置的,所以必须减去小狗的宽度。
程序如下:
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
my_dog = pygame.image.load("timg.jpg")
x = 50
y = 50
x_speed = 10
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.time.delay(20)
pygame.draw.rect(screen,[255,255,255],[x,y,150,100],0) #检查小狗是否在窗口边界
x = x + x_speed #方向反转
if x > screen.get_width() - 100 or x < 0:
x_speed = - x_speed
screen.blit(my_dog,[x,y])
pygame.display.flip()
pygame.quit()
6.在2-D空间中反弹
很简单,只需要在x的基础上加上y坐标:
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
my_dog = pygame.image.load("timg.jpg")
x = 50
y = 50
x_speed = 10
y_speed = 10
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.time.delay(20)
pygame.draw.rect(screen,[255,255,255],[x,y,100,80],0)
x = x + x_speed
y = y + y_speed
if x > screen.get_width() - 100 or x < 0:
x_speed = - x_speed
if y > screen.get_height() - 80 or y < 0:
y_speed = - y_speed
screen.blit(my_dog,[x,y])
pygame.display.flip()
pygame.quit()
7. 让图像翻转
不让小狗在屏幕边界反弹,而是让它翻转。这表示,小狗在右边界消失时,又会在左边界重新出现。先看水平方向的情况:
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
my_dog = pygame.image.load("timg.jpg")
x = 50
y = 50
x_speed = 5
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.time.delay(20)
pygame.draw.rect(screen,[255,255,255],[x,y,100,80],0)
x = x + x_speed
if x > screen.get_width():
x = 0
screen.blit(my_dog,[x,y])
pygame.display.flip()
pygame.quit()
但这是它是突然“闪入”到左边,强迫症看着特别不舒服,修改程序为“滑入”试试:
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
my_dog = pygame.image.load("timg.jpg")
x = 50
y = 50
x_speed = 5
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.time.delay(20)
pygame.draw.rect(screen,[255,255,255],[x,y,100,80],0)
x = x + x_speed
if x > screen.get_width():
x = -100
screen.blit(my_dog,[x,y])
pygame.display.flip()
pygame.quit()
。