Pygame 官方文档 - Tutorials - 游戏制作指南(Making Games Tutorial)- 正式开干(Kicking things off)

游戏制作指南(Making Games Tutorial)

点我回总目录

3.正式开干(Kicking things off)

        代码的第一部分相对简单,一旦编写,通常可以在您制作的每个游戏中重复使用。 它们将完成所有无聊的通用任务,如加载模块,加载图像,打开网络连接,播放音乐等等。 它们还将包括一些简单但有效的错误处理,以及您希望在sys和pygame等模块提供的函数之上提供的任何自定义。

3.1.前面几行,加载模块(The first lines, and loading modules)

        首先,您需要开始游戏并加载模块。 在主源文件(source file)的顶部直接设置一些内容总是一个好主意,例如文件名,包含内容,许可证以及你可能想给他们的任何其他有用的信息 然后你可以加载模块,并进行一些错误检查,这样Python就不会打印出令人讨厌的回溯错误,而且非程序员也无法理解。 代码非常简单,所以我不打算解释任何代码:

#!/usr/bin/env python
#
# Tom's Pong
# 一个简单的乒乓球游戏,具有逼真的物理和AI
# http://www.tomchance.uklinux.net/projects/pong.shtml
#
# 根据GNU通用公共许可证发布

VERSION = "0.4"

try:
    import sys
    import random
    import math
    import os
    import getopt
    import pygame
    from socket import *
    from pygame.locals import *
except ImportError, err:
    print "无法加载模块. %s" % (err)
    sys.exit(2)

3.2.资源处理函数(Resource handling functions)

        在Line By Line Chimp示例中,要编写的第一个代码是用于加载图像和声音。由于这些完全独立于任何游戏逻辑或游戏对象,因此它们被编写为单独的函数,并且首先编写,以便以后的代码可以使用它们。我通常把我所有这种性质的代码放在第一位,放在它们自己的、没有类的函数中;一般来说,这些将是资源处理功能。您当然可以为这些创建类,以便您可以将它们组合在一起,并且可以拥有一个可以控制所有资源的对象。与任何良好的编程环境一样,您可以自行开发最佳实践和风格。
        编写自己的资源处理函数总是一个好主意,因为虽然Pygame有打开图像和声音的方法,而其他模块将有打开其他资源的方法,这些方法可能占用多行,它们可能需要一致自己修改,他们往往不提供令人满意的错误处理。编写资源处理函数可为您提供复杂,可重用的代码,并使您可以更好地控制资源。以此图像加载功能为例:

def load_png(name):
    """加载图像并返回图像对象"""
    fullname = os.path.join('data', name)
    try:
        image = pygame.image.load(fullname)
        if image.get_alpha() is None:
            image = image.convert()
        else:
            image = image.convert_alpha()
    except pygame.error, message:
        print '无法加载图片:', fullname
        raise SystemExit, message
    return image, image.get_rect()

        在这里,我们创建了一个比pygame.image.load()提供的更复杂的图像加载功能,从文件中加载新图像。请注意,函数的第一行是一个文档字符串,描述函数的作用以及它返回的对象。该函数假定您的所有图像都在一个名为data的目录中,因此它采用文件名并使用os模块创建完整路径名,例如data / ball.png,以确保跨平台兼容性。然后它尝试加载图像,并转换任何alpha区域,以便您可以实现透明度,如果出现问题,它会返回更易读的错误。最后它返回图像对象及其rect。
        您可以使用类似的功能来加载任何其他资源,例如加载声音。您还可以创建资源处理类,以便在更复杂的资源上为您提供更大的灵活性。例如,您可以创建一个音乐类,其中__init__函数可以加载声音(可能是从load_sound()函数借用),一个暂停音乐的函数,以及一个重启函数。另一个方便的资源处理类用于网络连接。打开套接字(sockets),通过适当的安全性和错误检查传递数据,关闭套接字,手指地址(finger addresses)和其他网络任务的功能可以使编写具有网络功能的游戏相对轻松。
        请记住,这些函数/类的主要任务是确保在您编写游戏对象类和主循环时,几乎没有什么其它琐碎的事情可做。类继承可以使这些基本类特别方便。但是,不要过火;只能由一个类使用的函数应该作为该类的一部分来编写,而不是作为全局函数来编写。
 
上一篇:Tutorials - 游戏制作指南(Making Games Tutorial)- 校订:基础(Revision: Pygame fundamentals)
下一篇:Tutorials - 游戏制作指南(Making Games Tutorial)- 游戏对象的类(Game object classes)
以上内容,自己翻译,可能有误,可参考:Tutorials - 游戏制作指南(Making Games Tutorial)- 正式开干(Kicking things off)

点我回顶部

 
 
 
 
 
 
 
Fin.

猜你喜欢

转载自blog.csdn.net/Enderman_xiaohei/article/details/88886833