嵩天老师-python游戏入门-第二章小结2

壁球小游戏(展示型)要点

  1. 首先需要引入一个壁球图片
  2. 让壁球能够进行上下运动,使图片每次向右及向下移动1个像素,此处采用的坐标体系为左上角坐标系,即横轴正向向右,纵轴正向向下
  3. 让壁球在上下左右边缘处实现反弹操作,图片每次碰撞到边缘,速度进行取反操作

壁球小游戏(展示型)源代码

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()    #生成一个Surface对象,ballrect为返回的一个覆盖图像的矩形Rect对象

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
    ballrect=ballrect.move(speed[0],speed[1])  #矩阵移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy均为整数
    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)     #将ball绘制在ballrect上,通过Rect对象引导对壁球的绘制
    pygame.display.update()

Rect对象的属性

在这里插入图片描述

壁球小游戏(节奏型)的要点

  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()    #生成一个Surface对象,ballrect为返回的一个覆盖图像的矩形Rect对象
fps=300
fclock=pygame.time.Clock()   #创建一个Clock对象,用于操作时间

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
    ballrect=ballrect.move(speed[0],speed[1])  #矩阵移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy均为整数
    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)     #将ball绘制在ballrect上,通过Rect对象引导对壁球的绘制
    pygame.display.update()
    fclock.tick(fps)   #控制帧速度,即窗口刷新速度

壁球小游戏(操纵型)要点

  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()    #生成一个Surface对象,ballrect为返回的一个覆盖图像的矩形Rect对象
fps=300
fclock=pygame.time.Clock()   #创建一个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])  #矩阵移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy均为整数
   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)     #将ball绘制在ballrect上,通过Rect对象引导对壁球的绘制
   pygame.display.update()
   fclock.tick(fps)   #控制帧速度,即窗口刷新速度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值