安装

关于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()

上述代码一共分为五部分:

  1. 第一部分:导入

    import pygame, sysfrom  pygame.locals  import *

    上述导入的第二行代码是因为pygame.locals中含有一些常量,比如上述代码中的QUIT,以这种方式导入后,在使用时比较方便。

  2. 第二部分:初始化

    pygame.init()

    这一句代码是所有采用pygame包开发的游戏都必须包含的。

  3. 第三部分:设定舞台大小及标题等元素

    pygame.display.set_mode((400, 300))pygame.display.set_caption('hello world!')

    这里是对游戏主窗口一些元素的设定,要注意的是set_mode函数接收的是一个tuple数据类型,并不是两个孤立的数,这一数对指定了要创建窗口的宽和高。当然set_caption顾名思意就是设置窗口的标题了。

  4. 第四部分:事件循环

    while True:    for event in pygame.event.get():       ...

    这是游戏的主循环,如果有同学仔细研究了上次的PySimpleGUI教程的话,会发现这种处理方式与那个创建窗体后响应事件的方式非常类似,不同的是这里用pygame.event.get()获取用户对窗口的所有响应。这里要注意,由于用户在同一时间有可能会对窗体进行多种操作,所以pygame.event.get()将返回一个列表,该列表中每一个元素均为pygame.event.Event类型,当然,如果用户不曾操作窗体,该列表将为空。

  5. 第五部分:在事件循环中对相应的事件进行处理

    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()

然后再用blitpygame.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教程(一):基础知识相关推荐

  1. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  2. python独立网站教程_python从零到独立建设网站系列教程之基础知识篇(二)

    python从零到独立建设网站系列教程之基础知识篇(二)python的安装在Windows上安装python点击Download链接 然后就是按导航走点击确认,需要注意的是要把python加入到系统变 ...

  3. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  4. 计算机键盘输入法基础知识,教程计算机基础知识-:认识输入法

    教程计算机基础知识-:认识输入法 认识输入法 在任务栏的右边有一个小键盘图标,这就是输入法,默认输入的是英文字母,点击可以选择汉字输入法: 1.切换输入法 1)瞄准任务栏上的小键盘点左键,在出来的菜单 ...

  5. 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 ...

  6. 2022 IDEA (学生邮箱认证)安装使用教程以及基础配置教程

    2022 IDEA (学生邮箱认证)安装使用教程以及基础配置教程 1. IDEA 下载安装 a. IDEA 下载 b. 安装 IDEA c. 打开软件 2. 利用教育邮箱进行学生认证 a. 进行学生认 ...

  7. Adobe Dimension Essential Training: The Basics Adobe Dimension 基础教程:基础知识 Lynda课程中文字幕

    Adobe Dimension Essential Training: The Basics 中文字幕 Adobe Dimension 基础教程:基础知识 中文字幕Adobe Dimension Es ...

  8. [数据与分析可视化] 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 ...

  9. matlab中if语句多个_MATLAB入门教程 | 003基础知识

    一.认识MATLAB 1. MATLAB概述 (1)在欧美各高等学校, Matlab成为线性代数.自动控制理论.数字信号处理.时间序列分析.动态系统仿真.图像处理等诸多课程的基本教学工具,成为本科生. ...

最新文章

  1. 启动Tomcat的时候遇到错误
  2. Uniapp学习笔记(数据展示、数据循环、条件编译、计算属性、组件的使用、组件插槽、生命周期)
  3. C实现web service
  4. 延时函数、数码管显示头文件(单片机)
  5. 中如何构造有参和无惨_混凝土二次构造柱输送泵可提升施工效率
  6. android 是什么编码格式,在Android的JPG图像编码和解码
  7. android-常用部件
  8. 基于python和酷Q的QQ机器人开发实践(1)
  9. 为什么要学习现代控制理论(机器人方向)?
  10. jsBarCode生成条码并且打印的问题
  11. 关于二进制转换为十六进制
  12. 微信支付委托代扣的服务商模式和直连模式
  13. 坚持#第17天~回忆重装系统
  14. Marshmallow 实现序列化和反序列化
  15. linux与信息安全,网络与信息安全系统安全Linux系统安全.ppt
  16. android 记录美剧观看进度,[推荐]i看美剧应用:美剧播出、新闻发生提醒直接推送到手机...
  17. Erlang公历转农历
  18. 联发科发布MT7986方案支持Wi-Fi 6/6E
  19. OpenGL 与显卡
  20. 使用ES6,Pt更好JavaScript。 III:酷收藏和闪烁的弦

热门文章

  1. android开机启动shell脚本
  2. Android - Binder机制 - Binder框架总结
  3. linux修改文件系统属性,实用技巧:修改Linux操作系统的文件属性
  4. inno setup 环境变量 立即生效_CentOS7设置环境变量
  5. 编译原理-LR分析技术(自己看)
  6. java兵临城下_再谈java事件监听机制
  7. python网络通信中cs架构_python3基于TCP实现CS架构文件传输
  8. 一道经典面试题 你是是否理解 if()没有大括号与有大括号区别吗?
  9. python中tkinter模块_使用Python中的tkinter模块作图的方法
  10. python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...