Young87

当前位置:首页 >个人收藏

pygame安装_pygame教程(一):基础知识

65576224cb06d03227a10c1a3392a9d2.png

安装

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

    如果将窗体主循环以图形来表示的话,下面这个简图可以很好地说明整个程序是如何执行的:654c6ed660706b8fcd0f49582cecd6e6.png

坐标系统

对于创建动画来说,研究其坐标系统当然是必须的,下面以一个8X8的界面来说明其坐标方向的规定:

52f83ecdb0d9e63309ccc21042839cd4.png

从上图可以看出,pygame的坐标系统与电脑屏幕的坐标系统相同,与小海龟turtle的坐标是不一样的,有兴趣的同学可以查看前面的教程。

颜色设定

pygame中,颜色也是采用RGB方式来设定,从(0,0,0)到(255,255,255)一共有16,777,216种不同的颜色,下表简单列出一些常用的颜色,这些颜色可以用左边相应的字符串名称来表示:

8deb27e930ca25b49aabcd844b4ad8ea.png

在颜色设定中,还可以设置透明度,此时颜色与透明度组成四元数组,用 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,其有以下属性,列表以备查询:

fb2f3cb611ca4ff2765244cd3e96ae99.png

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 从美团外卖的数据仓库建设中,我学到了什么?

下一篇: [转载] python学习笔记

精华推荐