pygame安装_pygame教程(一):基础知识
安装
关于PyGame
的安装,如同python
的第三方包一样,利用pip
进行安装最为方便快捷:
pip install pygame
在安装完成后,在idle
中或是ipython
等交互命令窗口利用以下代码可验证是成功:
import pygame
如果上述代码没有报错,说明这个包已经成功安装,通常会打印出如下信息:
pygame 1.9.6Hello from the pygame community. https://www.pygame.org/contribute.html
动画基本框架
在介绍基本框架时,按照惯例,我们同样可用hello world
来进行演示,代码如下:
import pygame, sysfrom pygame.locals import *pygame.init()curSurface= pygame.display.set_mode((400, 300))pygame.display.set_caption('hello world!')while True: # main game loop for event in pygame.event.get(): if event.type== QUIT: pygame.quit() sys.exit() pygame.display.update()
上述代码一共分为五部分:
- 第一部分:导入
import pygame, sysfrom pygame.locals import *
上述导入的第二行代码是因为
pygame.locals
中含有一些常量,比如上述代码中的QUIT
,以这种方式导入后,在使用时比较方便。 - 第二部分:初始化
pygame.init()
这一句代码是所有采用
pygame
包开发的游戏都必须包含的。 - 第三部分:设定舞台大小及标题等元素
pygame.display.set_mode((400, 300))pygame.display.set_caption('hello world!')
这里是对游戏主窗口一些元素的设定,要注意的是
set_mode
函数接收的是一个tuple
数据类型,并不是两个孤立的数,这一数对指定了要创建窗口的宽和高。当然set_caption
顾名思意就是设置窗口的标题了。 - 第四部分:事件循环
while True: for event in pygame.event.get(): ...
这是游戏的主循环,如果有同学仔细研究了上次的
PySimpleGUI
教程的话,会发现这种处理方式与那个创建窗体后响应事件的方式非常类似,不同的是这里用pygame.event.get()
获取用户对窗口的所有响应。这里要注意,由于用户在同一时间有可能会对窗体进行多种操作,所以pygame.event.get()
将返回一个列表,该列表中每一个元素均为pygame.event.Event
类型,当然,如果用户不曾操作窗体,该列表将为空。 - 第五部分:在事件循环中对相应的事件进行处理
if event.type == QUIT: pygame.quit() sys.exit()
在窗体检测到“退出”指令的时候,程序将首先退出
pygame
,这里的pygame.quit()
是和pygame.init()
完全相反的一种状态,即对其内部创建的东西进行销毁,但程序本身仍然运行,所以还需要调用sys.exit()
才能退出整个程序,当然在整个主循环过程中,为了保证窗体能实时刷新,需要显式调用以下代码:pygame.display.update()
如果将窗体主循环以图形来表示的话,下面这个简图可以很好地说明整个程序是如何执行的:
坐标系统
对于创建动画来说,研究其坐标系统当然是必须的,下面以一个8X8的界面来说明其坐标方向的规定:
从上图可以看出,pygame
的坐标系统与电脑屏幕的坐标系统相同,与小海龟turtle
的坐标是不一样的,有兴趣的同学可以查看前面的教程。
颜色设定
在pygame
中,颜色也是采用RGB方式来设定,从(0,0,0)到(255,255,255)一共有16,777,216种不同的颜色,下表简单列出一些常用的颜色,这些颜色可以用左边相应的字符串名称来表示:
在颜色设定中,还可以设置透明度,此时颜色与透明度组成四元数组,用tuple
表示为:(R, G, B, T)
,透明度T
也是从0到255;为了用透明度来绘制界面,在代码中必须用convert_alpha()
创建一个Surface
对象,比如:
anotherSurface = curSurface.convert_alpha()
然后再用blit
或pygame.image.load()
进行绘制时即可出现透明效果,关于这部分在后续章节将会详细介绍。创建一种颜色对象有两种方式,以下代码展示了这两种情况:
>>> import pygame >>> mycolor = pygame.Color(255,128,0) >>> mycolor == (255,128,0,255) True>>>
创建区域
创建一个绘图区域,同样有两种方式:第一种是以(X, Y, Width, Height)
来创建,其中 X和Y分别是所创建区域的左上角顶点的横纵坐标,按pygame
的坐标系统,这两者均为正值,后两项分别规定了所创建区域的宽和高。第二种是用pygame.Rect
来创建,以下代码演示了两者相同:
>>> import pygame>>> myrect = (10, 20, 100,300)
>>> myrect2 = pygame.Rect(10, 20, 100, 300) >>> myrect == myrect2
True>>>
对于创建的区域rect
,其有以下属性,列表以备查询:
pygame安装_pygame教程(一):基础知识相关推荐
- 视频教程-快速入门Python基础教程_Python基础知识大全-Python
快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...
- python独立网站教程_python从零到独立建设网站系列教程之基础知识篇(二)
python从零到独立建设网站系列教程之基础知识篇(二)python的安装在Windows上安装python点击Download链接 然后就是按导航走点击确认,需要注意的是要把python加入到系统变 ...
- python向量计算库教程_NumPy库入门教程:基础知识总结
原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...
- 计算机键盘输入法基础知识,教程计算机基础知识-:认识输入法
教程计算机基础知识-:认识输入法 认识输入法 在任务栏的右边有一个小键盘图标,这就是输入法,默认输入的是英文字母,点击可以选择汉字输入法: 1.切换输入法 1)瞄准任务栏上的小键盘点左键,在出来的菜单 ...
- After Effects CC 2019 Essential Training: The Basics After Effects CC 2019基础教程:基础知识 Lynda课程中文字幕
After Effects CC 2019 Essential Training: The Basics 中文字幕 After Effects CC 2019基础教程:基础知识 中文字幕After E ...
- 2022 IDEA (学生邮箱认证)安装使用教程以及基础配置教程
2022 IDEA (学生邮箱认证)安装使用教程以及基础配置教程 1. IDEA 下载安装 a. IDEA 下载 b. 安装 IDEA c. 打开软件 2. 利用教育邮箱进行学生认证 a. 进行学生认 ...
- Adobe Dimension Essential Training: The Basics Adobe Dimension 基础教程:基础知识 Lynda课程中文字幕
Adobe Dimension Essential Training: The Basics 中文字幕 Adobe Dimension 基础教程:基础知识 中文字幕Adobe Dimension Es ...
- [数据与分析可视化] D3入门教程1-d3基础知识
d3.js入门教程1-d3基础知识 文章目录 d3.js入门教程1-d3基础知识 1 HTML介绍 1.1 什么是HTML? 1.2 自定义文档样式CSS 1.3 构建svg图形 2 d3绘图入门 2 ...
- matlab中if语句多个_MATLAB入门教程 | 003基础知识
一.认识MATLAB 1. MATLAB概述 (1)在欧美各高等学校, Matlab成为线性代数.自动控制理论.数字信号处理.时间序列分析.动态系统仿真.图像处理等诸多课程的基本教学工具,成为本科生. ...
最新文章
- 启动Tomcat的时候遇到错误
- Uniapp学习笔记(数据展示、数据循环、条件编译、计算属性、组件的使用、组件插槽、生命周期)
- C实现web service
- 延时函数、数码管显示头文件(单片机)
- 中如何构造有参和无惨_混凝土二次构造柱输送泵可提升施工效率
- android 是什么编码格式,在Android的JPG图像编码和解码
- android-常用部件
- 基于python和酷Q的QQ机器人开发实践(1)
- 为什么要学习现代控制理论(机器人方向)?
- jsBarCode生成条码并且打印的问题
- 关于二进制转换为十六进制
- 微信支付委托代扣的服务商模式和直连模式
- 坚持#第17天~回忆重装系统
- Marshmallow 实现序列化和反序列化
- linux与信息安全,网络与信息安全系统安全Linux系统安全.ppt
- android 记录美剧观看进度,[推荐]i看美剧应用:美剧播出、新闻发生提醒直接推送到手机...
- Erlang公历转农历
- 联发科发布MT7986方案支持Wi-Fi 6/6E
- OpenGL 与显卡
- 使用ES6,Pt更好JavaScript。 III:酷收藏和闪烁的弦
热门文章
- android开机启动shell脚本
- Android - Binder机制 - Binder框架总结
- linux修改文件系统属性,实用技巧:修改Linux操作系统的文件属性
- inno setup 环境变量 立即生效_CentOS7设置环境变量
- 编译原理-LR分析技术(自己看)
- java兵临城下_再谈java事件监听机制
- python网络通信中cs架构_python3基于TCP实现CS架构文件传输
- 一道经典面试题 你是是否理解 if()没有大括号与有大括号区别吗?
- python中tkinter模块_使用Python中的tkinter模块作图的方法
- python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...