壁球小游戏(展示型)要点
- 首先需要引入一个壁球图片
- 让壁球能够进行上下运动,使图片每次向右及向下移动1个像素,此处采用的坐标体系为左上角坐标系,即横轴正向向右,纵轴正向向下
- 让壁球在上下左右边缘处实现反弹操作,图片每次碰撞到边缘,速度进行取反操作
壁球小游戏(展示型)源代码
import pygame,sys
pygame.init()
size=width,height=600,400
speed=[1,1]
BLACK=0,0,0
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Pygame壁球小游戏")
ball=pygame.image.load("PYG02-ball.gif")
ballrect=ball.get_rect()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
ballrect=ballrect.move(speed[0],speed[1])
if ballrect.left<0 or ballrect.right>width:
speed[0]=-speed[0]
if ballrect.top<0 or ballrect.bottom>height:
speed[1]=-speed[1]
screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame.display.update()
Rect对象的属性
壁球小游戏(节奏型)的要点
- 壁球可以按照一定速度运动,通过控制循环的间隔即可控制速度
壁球小游戏(节奏型)源代码
import pygame,sys
pygame.init()
size=width,height=600,400
speed=[1,1]
BLACK=0,0,0
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Pygame壁球小游戏")
ball=pygame.image.load("PYG02-ball.gif")
ballrect=ball.get_rect()
fps=300
fclock=pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
ballrect=ballrect.move(speed[0],speed[1])
if ballrect.left<0 or ballrect.right>width:
speed[0]=-speed[0]
if ballrect.top<0 or ballrect.bottom>height:
speed[1]=-speed[1]
screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame.display.update()
fclock.tick(fps)
壁球小游戏(操纵型)要点
- 通过键盘的上下左右控制壁球运动速度,规则为:上键纵向绝对速度增加一个像素,下键纵向绝对速度减少一个像素,左键横向绝对速度减少一个像素,右键横向绝对速度增加一个像素
壁球小游戏(操纵型)源代码
import pygame,sys
pygame.init()
size=width,height=600,400
speed=[1,1]
BLACK=0,0,0
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Pygame壁球小游戏")
ball=pygame.image.load("PYG02-ball.gif")
ballrect=ball.get_rect()
fps=300
fclock=pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
elif event.type==pygame.KEYDOWN:
if event.hey==pygame.K_LEFT:
speed[0]=speed[0] if speed[0]=0 else (abs(speed[0]-1)*int(speed[0]/abs(speed[0]))
elif event.key==pygame.K_RIGHT:
speed[0]=speed[0]+1 if speed[0]>0 else speed[0]-1
elif event.key==pygame.K_UP:
speed[1]=speed[1]+1 if speed[0]>0 else speed[1]-1
elif event.key==pygame.K_DOWN:
speed[1]=speed[1] if speed[1]=0 else (abs(speed[1]-1)*int(speed[1]/abs(speed[1]))
ballrect=ballrect.move(speed[0],speed[1])
if ballrect.left<0 or ballrect.right>width:
speed[0]=-speed[0]
if ballrect.top<0 or ballrect.bottom>height:
speed[1]=-speed[1]
screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame.display.update()
fclock.tick(fps)