Python第三方库pygame学习笔记(一)

 

 

Pygame

Python最经典的2D游戏开发第三方库,也支持3D游戏开发
Pygame适合用于游戏逻辑验证、游戏入门及系统演示验证
Pygame是一种游戏开发引擎,基本逻辑具有参考价值

pygame库安装:在系统命令行运行pip install pygame即可 

Pygame的最小开发框架

先从一段代码开始

# 示例代码1
import pygame,sys

pygame.init()  #初始化init()
screen = pygame.display.set_mode((600, 400))  #初始化显示窗口
pygame.display.set_caption("Pygame游戏之旅") #设置窗口标题
icon = pygame.image.load("PYG03‐flower.png")
pygame.display.set_icon(icon)  #设置窗口图标

while True:
    for event in pygame.event.get(): #事件获取
        if event.type == pygame.QUIT: #事件判别及响应
            sys.exit()       #结束游戏并退出
    pygame.display.update()  #刷新屏幕

代码可以分为导入及初始化以及事件响应及刷新的无限循环部分,如下图所示

 

sys为Python内置的标准库,用于提供Python运行时环境变量的操控。在这段代码中,我们仅用到sys.exit()来实现退出结束游戏

pygame.init()实现对Pygame内部各功能模块进行初始化创建及变量设置,默认调用

屏幕控制函数

Pygame提供了一些重要的屏幕控制函数,在对屏幕进行操作时,以像素为单位。

 

1、screen=pygame.display.set_mode(size=(width,height),flags)

生成的screen为Pygame下的Surface对象

size需要为元组类型,flags用于指定屏幕显示方式(窗口大小可调、无边框以及全屏显示)

flags=pygame.RESIZABLE  #窗口大小可调

flags=pygame.NOFRAME #无边框

flags=pygame.FULLSCREEN #全屏

例:screen=pygame.diplay.set_mode((800,450),pygame.FULLSIZE)

注意:当我们设置size为给定大小(width,height)后,对于可变尺寸和全屏需要作出相应的变化

2、pygame.dispay.Info()  #得到当前窗口的相关信息,返回一个信息对象VideoInfo。其中有两个重要的参数

  • current_w :当前显示模式或窗口的像素宽度
  • current_h:高度

3、pygame.diaplay.set_caption("字符串")

4、pygame.display.get_caption()  #用的得到当前窗口的标题,可以与set_caption()搭配使用,实现窗体标题在不同情景下更替

5、pygame.display.set_icon(Surface对象) #设置窗口的图标效果

icon = pygame.image.load("PYG03‐flower.png")
pygame.display.set_icon(icon)

6、pygame.diaplay.update() #对当前显示窗口进行更新。与pygame.display,flip()区别是:.update()仅重新绘制窗口中有变化的区域,相比.flip()执行更快。而.flip()需要重新绘制整个窗口

7、pygame.display.get_active() #判断显示窗口是否处于最小化,当最小化时返回False,正常显示时返回True。通过返回值设定相应的响应机制,如游戏暂停等

色彩机制

pygame.Color类用来确定颜色。在pygame中,支持用色彩名字、RGB值(0-255)以及HTML色彩格式定义颜色。此外,pygame还支持RGBA模式,即增加了第四维度:alpha通道。用来表示透明度,通道值越大,不透明度程度越高。默认值为255(不透明)

  • pygame.Color(name)  #pygame.Color("red")
  • pygame.Color(r,g,b,a)
  • pygame.Color(rgbvalue)

事件响应机制

pygame提供了pygame.event.get()用于从事件队列中取出并删除该事件。我们可以针对不同的事件类型提供相应的相应策略。

例如:当pygame.QUIT:Pygame中定义的退出事件常量触发时,sys.exit()用于响应游戏结束退出,我们还可以在键盘上下左右按键事件触发的时候,设计不同的相应策略进而实现相应的功能。

在接下来的实例中,还要用到的事件常量及其含义如下:

pygame.RESIZABLE(窗口模式下尺寸变动)、pygame.FULLSCREEN(切换为全屏)、pygame.KEYDOWN(键盘输入有效)以及一些键位pygame.K_UP,pygame.K_DOWN等

 

壁球小游戏

这个小游戏实例,ikun们一定不要错过!!!

import pygame,sys

def RGBChannel(a): #计算bgcolor三原色rgb的数值(0-255)
    return 0 if a<0 else (255 if a>255 else int(a))
pygame.init()
size=width,height=600,400 #设定窗口指定规格
speed=[1,1]
screen=pygame.display.set_mode(size,pygame.RESIZABLE)
ball=pygame.image.load("caixukun.jpg") 
pygame.display.set_caption("Pygame壁球")
pygame.display.set_icon(ball)  #改变窗口图标

ballrect=ball.get_rect()
fps=300  #Frames
fclock=pygame.time.Clock()  #pygame内置的时钟
still=False
bgcolor=pygame.Color("black")

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                speed[1]+=1 if speed[1] >= 0 else speed[1]-1
            elif event.key == pygame.K_DOWN:
                speed[1]-=1 if speed[1] > 0 else speed[1]+1
            elif event.key == pygame.K_LEFT:
                speed[0] -=1 if speed[0] > 0 else speed[0]+1
            elif event.key == pygame.K_RIGHT:
                speed[0] +=1 if speed[0] >= 0 else speed[0]-1
        elif event.type == pygame.K_ESCAPE:
            sys.exit()
        elif event.type == pygame.RESIZABLE:
            size = width, height = event.size[0], event.size[1]  # 得到当前修改后的屏幕分辨率
            screen = pygame.display.set_mode(size, pygame.RESIZABLE)
        elif event.type == pygame.FULLSCREEN:
            size = width, height = event.size[0], event.size[1]  # 得到当前修改后的屏幕分辨率
            screen = pygame.display.set_mode(size, pygame.FULLSCREEN)

    ballrect=ballrect.move(speed)
    if pygame.display.get_active():
        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]
    bgcolor.r=RGBChannel(ballrect.left*255/width)
    bgcolor.g=RGBChannel(ballrect.top*255/height)
    bgcolor.b=RGBChannel(min(speed[0],speed[1])*255/max(speed[0],speed[1],1))

    screen.fill(bgcolor)
    screen.blit(ball,ballrect) #在每一次运动中,保证图像跟着矩形运动
    pygame.display.update()
    fclock.tick(fps)

代码实现功能:

1、可以通过键盘上下左右调控速度

2、在碰到窗口边界反弹

3、根据图片所在区域不同改变背景颜色

ikun们不要错过啊。。。。。。(匿...)

来源:慕课-Python游戏开发入门

更新:Python第三方库pygame学习笔记(二) 

慢慢爬。。

  • 22
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值