Pygame

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

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

Pygame的最小开发框架

先从一段代码开始

# 示例代码1
import pygame,syspygame.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,sysdef 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]-1elif event.key == pygame.K_DOWN:speed[1]-=1 if speed[1] > 0 else speed[1]+1elif event.key == pygame.K_LEFT:speed[0] -=1 if speed[0] > 0 else speed[0]+1elif event.key == pygame.K_RIGHT:speed[0] +=1 if speed[0] >= 0 else speed[0]-1elif 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学习笔记(二)

慢慢爬。。

Python第三方库pygame学习笔记(一)相关推荐

  1. python的pygame库使用方法_python基础教程使用Python第三方库pygame写个贪吃蛇小游戏...

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame impo ...

  2. 《利用python进行数据分析》第二版 第13章-Python建模库介 学习笔记

    文章目录 一.pandas与建模代码结合 二.用patsy创建模型描述 Patsy公式中的数据转换 分类数据与Pastsy 三.statsmodels介绍 评估线性模型 评估时间序列处理 四.scik ...

  3. python第三方库之学习pyserial库--串口通信

    pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...

  4. python第三方库之学习flask-restful

    flask-restful 前言 一.安装 二.flask-restful初体验 前言 为什么要用Flask-restful? RESTful API返回的不是HTML,而是机器能直接解析的数据 随着 ...

  5. python turtle库seth_Python学习笔记_3 turtle库使用

    1 坐标命令 1.1建立绘图窗体--setup(width,height,startx,starty) 建立绘图窗体 #注意:后两个参数可以不指定,窗体将在屏幕中心 1.2 绝对坐标以及goto(x, ...

  6. python第三方库pygame的使用

    作用:pygame一般用来做游戏 注意:1.在使用pygame提供的功能之前,需要调用init方法 2.在游戏结束前需要调用 quit 方法 pygame中的各个函数: 1.pygame.init() ...

  7. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  8. python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  9. Python可视化物理随机过程---pygame学习笔记2

    Python可视化物理随机过程-pygame学习笔记2 文章目录 Python可视化物理随机过程---pygame学习笔记2 一.扩散现象的简单的介绍 二.代码实现 三.运行代码的效果展示 四.总结 ...

最新文章

  1. Visual C++ 2011-8-15
  2. 【EventBus】EventBus 源码解析 ( 注册订阅者总结 | 从封装的数据结构角度分析 EventBus )
  3. VS2012 颜色配置成黑色
  4. 52单片机iic读写c语言,如何52单片机的I2C读写24C08程序问题排查修改
  5. 关于 部署方面研究 Visual Studio 2013
  6. 如何用html构建ios应用,使用HTML5构建iOS原生APP(2)
  7. oracle 11g r2 安装过程与卸载详细图解
  8. python之常用的数据类型
  9. BP 神经网络的非线性系统建模——非线性函数拟合
  10. usb 驱动之usbip
  11. PR如何调整输出视频的分辨率?
  12. java代码实现Excel irr计算
  13. 水星路由器是linux系统,Mercury水星无线路由器设置教程(Windows XP系统)
  14. SAP 接口开发技术和工具
  15. C语言的部分杂碎知识
  16. 中国移动光宽带 光猫 超级用户管理员账号密码
  17. C#读写导入导出Excel表格模板(NPOI)
  18. 武汉纺织大学计算机科学校区在哪,武汉纺织大学是一本吗 重点专业是什么 有几个校区及校区地址...
  19. windows下nginx配置OpenSSL自签名证书
  20. PMBOK6 启动会和开工会的区别

热门文章

  1. 关于上海贝尔实习的感想
  2. 在2B和2C之间,还有一个2H
  3. 程序员看片神器抱回家
  4. 【深度分解】听趣拍云产品经理剖析视频基础知识(2)
  5. java首字母排序_Java-首字母排序汉字排序
  6. 智能网联汽车成兵家必争之地,恒驰智能网联汽车亮点何在?
  7. kali学习-被动信息收集-DNS相关
  8. connect的中文意思是什么_connect是什么意思?
  9. 攻防世界crypto高手题之best_rsa
  10. 互联网等三行业跻身VC投资前三甲