游戏制作指南(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 sysimport randomimport mathimport osimport getoptimport pygamefrom 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 '无法加载图片:', fullnameraise SystemExit, messagereturn 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.

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

  1. Pygame 官方文档 - Tutorials - 游戏制作指南(Making Games Tutorial)- 校订:基础(Revision: Pygame fundamentals)

    游戏制作指南(Making Games Tutorial) 点我回总目录 ☚ 2.校订:Pygame基础(Revision: Pygame fundamentals) 2.1.基本的Pygame游戏 ...

  2. Pygame 官方文档 - Tutorials - 逐行的黑猩猩教程(Line By Line Chimp)

    逐行的黑猩猩教程(Line By Line Chimp) 作者: Pete Shinners 联系方式: pete@shinners.org 介绍(Introduction)        在pyga ...

  3. Pygame 官方文档 - Tutorials - Surfarray模块介绍(Surfarray Introduction)

    Surfarray模块介绍(Surfarray Introduction) Author: Pete Shinners Contact: pete@shinners.org 介绍(Introducti ...

  4. Pygame 官方文档 - 中译版

    pygame 文档 Pygame之家[Pygame Home] 帮助内容[Help Contents] 指导索引[Reference Index] 最有用的东西 [Most useful stuff] ...

  5. Pygame 官方文档 - Documents - 读我(Readme)

    关于 - 维基(Wiki) 网络旅行者,你好: 欢迎来到我们万维网的简陋(有点奇怪)的小部分.让我快速介绍一下你在这里偶然发现的事情.         pygame(库)是一个免费的开放源码pytho ...

  6. Pygame 官方文档 - pygame.display

    Pygame.display Pygame中用于控制窗口和屏幕显示的模块 pygame.display.init - 初始化display模块 pygame.display.quit - 取消初始化d ...

  7. Pygame 官方文档 - pygame.cursors

    pygame.cursors Pygame 中使用光标资源的模块. pygame.cursors.compile -- 由纯字符串创建二进制光标数据 pygame.cursors.load_xbm - ...

  8. Pygame 官方文档 - pygame.key

    pygame.key 与键盘相关的 Pygame 模块. pygame.key.get_focused() - 当窗口获得键盘的输入焦点时返回 True pygame.key.get_pressed( ...

  9. Pygame 官方文档 - pygame.mouse

    pygame.mouse Pygame 中与鼠标工作相关的模块. pygame.mouse.get_pressed -- 获取鼠标按键的情况(是否被按下) pygame.mouse.get_pos - ...

最新文章

  1. 不能查看隐藏文件夹的对策
  2. Spring Cloud 学习笔记(四)-Spring Cloud Hystrix
  3. python中forward函数的引用_调用没有.forward()的forward函数
  4. Linux技巧:自动挂载UDF光盘的技巧
  5. 值得永久收藏的 C# 设计模式套路(一)
  6. 猪肉上的红章和蓝章有啥不同?| 今日趣图
  7. XP访问Linux共享错误提示
  8. State_状态模式_PHP语言描述
  9. 【SSM 整合项目】图书管理系统
  10. 基于极限学习机的自编码器(ELM-AE)
  11. cad2017插入电气符号_电气电气CAD图形符号大全.pdf
  12. Linux 内核下载地址
  13. 画虎画皮难画骨,编程编码难编译
  14. html ui组件,UI组件
  15. 利用Echarts制作地图(一)
  16. 数理化解题研究杂志社数理化解题研究编辑部2022年第30期目录
  17. Python 爬虫实战入门——爬取汽车之家网站促销优惠与经销商信息
  18. 初入职场的半导体工艺工程师的一点反思与教训
  19. form表单中的enctype属性什么意思?
  20. 豪华蔚来,困于销量?

热门文章

  1. FDTD_学习笔记2_纳米孔道阵列(nanoholes arry)/交互界面初始/结构设置/仿真区域设置/光源选取/监视器设置/check材料曲线拟合/plot场图
  2. 河南单招计算机应用技术专业面试,几个常见的河南单招面试问题及答案?
  3. Android-取得输入法或者系统标题栏、魅族下部smartbar等的高度
  4. m基于GA遗传优化算法的认知中继网络最优中继功率分配和最佳中继节点选择算法matlab仿真
  5. 学习笔记:EXT4文件系统特性
  6. 怎么使用大数据超级短信进行精准引流快速招商?
  7. DWZ 提交表单前验证
  8. js 遍历对象属性,赋值/添加进另一个对象中
  9. java中Unsafe使用讲解
  10. delete postman 传参_HTTP的DELETE方法Body传递参数问题解决