Make Games with Python & Pygame (1)

空扰寡人 提交于 2020-12-25 20:05:03


看见这本书很有意思,利用Python和Pygame模块进行游戏开发,边学习边翻译边写心得。

 

http://download.csdn.net/detail/abclixu123/4582805 这是真本书的下载地址。


第二章介绍Pygame的一些基础知识。开始也是以经典的Hello World开始。所用的开发环境就是安装Python后自带的IDLE。

HelloWorld程序如下:

import pygame, sys
from pygame.locals import *

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400,300))
pygame.display.set_caption('Hello World')
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

 

这个程序运行后就是一个简单的黑色窗口。

对这个程序有几点说明

  • 需要包含Pygame模块,即import  pygame
  • 在进行任何具体的Pygame的操作之前,都要进行Pygame的初始化,即pygame.init()
  • DISPLAYSURF = pygame.display.set_mode((400,300)) 这句创建pygame显示的主窗口,400宽,300高,如上图显示所示。
    而且要注意的传递是个含有两个整数的元组变量,不是分开的两个整数。
  • pygame.display.set_caption('Hello World') 这句就是设置窗体的名字
  • 在一个循环中,我们处理事件消息,pygame.event.get()得到我们与之交互的事件
  • 最后更新窗口(根据事件处理)

其实这个循环就很能说明一个游戏的处理机制了,在这个循环里要做三件事情

  • 处理事件
  • 更新游戏状态
  • 将更新的游戏状态显示到屏幕上

文章接着简单介绍了像素坐标系,这个比较简单。(略)

接着提醒了下函数,方法,构造函数和模块中的函数的区别,牵涉到语言了(略)

Surface对象和窗口

Surface对象其实就代表了矩形的2D图像,Surface对象的像素可以通过调用Pygame的画图函数改变。窗口边框,标题栏,按钮这些都不是Surface对象的一部分。Surface对象是通过pygame.display.set_mode()函数返回的,被称作显示窗口。任何在这个对象里面画的东西都会被显示在窗口中当调用pygame.display.update()函数。

帧:通常游戏跑1秒30帧就足够了。

Colors

任何颜色都可以由颜色有红,绿,蓝三原色组合构成。在Pygame中,用含有三个整数的元组来代表颜色。如(R,G,B),比如这个元组的第一个值代表红色。0表示一点也没有红色,255表示这个颜色里面红色有最大值。通常称这个元组为RGB值。

可以这样定义一个颜色:

BLACK = (0,0,0)

下表是常见颜色值:

透明颜色

 在每个颜色的最后可以跟一个值,被称做a值。它代表这个颜色的不透明程度。一般当你啊把一个像素点画进surface对象中,新的颜色会完全的替代先前的颜色。但是如果颜色有a值的话,你就是把这个颜色添加到先前的那个颜色值。比如绿色(0,255,0)现在如果我们添加了第四个整数a值,我们可以让其绿色看起来一半透明(0,255,0,128)。a值为255时表示完全不透明。也就是(0,255,0)与(0,255,0,255)看起来是一样的。a值为0说明颜色完全透明,此时是没有意义的,因为这个颜色完全透明而不可见。

为了作画时能用到透明颜色你必须创建一个surface对象通过convert_alpha()方法。下面的例子代码就是创建了一个surface对象使其透明色可以被显示

anotherSurface = DISPLAYSURFconvert_alpha()

anotherSurface这个对象可以被复制到DISPLAYSURF。重要的一点是不能使用透明颜色到不是通过调用convert_apha方法返回的Surface对象上,包括来自pygame.display.set_mode()返回的显示窗口对象。

pygame.Color对象

表示颜色有两种方法,一个使用三个整数或四个整数的元组,另外一个就是使用pygame.Color对象。可以通过调用pygame.Color()构造函数和传递3个或4个整数值来创建一个Color对象,然后用一个变量储存这个对象。就像下面这样。

myColor = pygame.Color(255,0,255,128)

在pygame里面任何画图函数都会让传递一个颜色参数值,可以通过元组或者Color对象来传递。所以我们有两种方法来创建一个颜色。

 

Rect对象

Pygame有两种方法表示矩形,就像表示颜色一样。第一种方法是使用4个整数值的元组。

这四个整数分别是:

左上角X坐标值

左上角Y坐标值

矩形的宽度(以像素点为单位)

矩形的高度(以像素点为单位)

第二种方法就是使用pygame.Rect对象。下面就是创建一个Rect对象的例子

myRect = pygame.Rect(10,20,200,300)

很方便的是,当我们创建好Rect对象后,关于这个矩形的其它一些参数就自动被计算好了。比如我们现在一个矩形X左上角坐标为10,而且有200像素宽度,那么我们可以通过Rect对象的right属性来获取X右上角坐标值,如myRect.right

下图是pygame.Rect对象提供的所有属性,这里假如Rect对象由myRect变量储存。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!