《Python游戏编程入门》——导读

简介:


screenshot

前 言

本书沿着Python Programming for the Absolute Beginner, Third Edition(Michael Dawson著)的步伐,继续帮助初学者学习Python。如果你是初次接触Python的话,我强烈建议你先阅读那本书。你将会通过Dawson给出的易于掌握的示例,快速学会Python语言,这个过程方向清晰、步骤简洁,而且能够掌握重要的概念。Dawson的书会帮助你起步,因此,本书现在是将你的Python提升到更高一点的水平。我们将学习很不错的Pygame库,如果你愿意的话,还可以支持OpenGL以进行更高级的3D渲染!但是,现在我们先不要跑得太远。

本书主要关注的是使用Pygame进行2D图形开发,而这只是Dawson的书的最后一章所关注的内容。Dawson的书以此话题结尾,而本书从这个话题开始,这使得这两本书相得益彰。

本书教授用Python开发精彩游戏所需的最为重要的概念。本书不仅是一本“新手”指南,还深入到复杂的主题,将会使你付出数月的繁忙,在自己的游戏思路中使用这些概念。单单是目标瞄准以及速度这样的概念,不足以让一般的程序员繁忙到开发众多的街机式的射击游戏。这些概念只是在现实策略游戏(RTS)中才能找到,因为正是和用来向目标发射子弹完全相同的概念,也用来把人物向目标移动。

本书不只是介绍游戏编程概念的相关内容。我们首先学习了基础知识,从Python类开始,我们介绍了变量数据类型、文本输出、列表和元组,以及其他重要的Python语言基础知识。示例从简单的开始,并且当你学到最后几章的时候,将使用学到的所有概念来构建较为复杂的游戏,这意味着我们还将进行较为复杂的Python编程。

如果你还没有读过Dawson的书,并且也完全是编程新手,在理解本书中的所有代码的时候,你可能会遇到一些困难。那是因为本书是紧随Dawson的书之后,因此,两本书并非各自为战。如果你已经有一些编程经验,即便是C++、Java或C#等其他语言的编程经验,那么,还是应该能够很好地学习完本书。

本书是基于Python 3.2和Pygame 1.9的。使用较早的Python版本将无法编译源代码。
章节构成

本书中各章的内容的简单介绍如下。

第1章 使用类的Python

本章从强调面向对象编程的角度给出了Python语言的概览。本章介绍了如何创建带有构造函数、方法以及属性的类,还通过一个示例程序展示了和几何相关的几个类。

第2章 初识Pygame:PIE游戏

本章介绍了Pygame库,本书后续的各章都将使用它。Pygame使得我们能够用Python编写带有2D图形和位图的图形演示程序和游戏。

第3章 文件I/O、数据和字体:Trivia游戏

本章介绍如何使用文件输入/输出函数来读取和写数据。示例代码展示了如何打开一个文件,以读取和写入文本和二进制数据。文件访问代码随后将用来开发一个Trivia游戏,它带有图形化文本输出,使用Pygame的字体支持。

第4章 用户输入:Bomb Catcher游戏

本章介绍了使用Pygame实现用户输入,它既是事件驱动的,也是轮询的。这意味着,我们可以响应用户输入事件,或者可以询问Pygame是否有用户输入的数据。为了展示用户输入,我们创建了一个叫作Bomb Catcher的实时的游戏。

第5章 Math和Graphics:Analog Clock示例程序

本章深入到数学和图形的复杂主题,也就是说,使用数学来对图形生成有趣的特殊效果。示例程序展示了如何制作带有真正移动的指针的一个模拟钟表,使用数学方法来旋转指针。

第6章 位图图形:Orbiting Spaceship示例程序

本章初次进入位图图形的世界。可以在内存中创建位图,但是,通常要从一个位图文件加载它,并且在游戏中用作美工图。我们使用位图创建了本章的示例,这是一个太空飞船围绕行星轨道飞行的例子。

第7章 用精灵实现动画:Escape the Dragon游戏

本章进一步深入高级位图编程的话题,这是通过引入Pygame的精灵支持而实现的。我们使用这一惊人的功能来创建自己的精灵类以实现帧动画,并且通过带有精灵动画的示例游戏来展示它。

第8章 精灵冲突:Zombie Mob游戏

本章还是与精灵编程相关,展示了如何检测游戏对象与屏幕何时发生冲突,以及如何响应这些冲突。这是大多数游戏逻辑的基础。为了展示这点,我们创建了一个Zombie Mob游戏。

第9章 数组、列表和元组:Block Breaker游戏

本章介绍了非常重要的主题,即数组、列表和元组,它们都具有类似的行为。它们的目的是为了包含其他的对象(如精灵),或者只是像数字或名称这样的简单对象。我们使用这些信息,通过在一个列表中定义游戏的关卡,来创建一款支持关卡设计的游戏。

第10章 计时和声音:Oil Spill游戏

本章介绍了如何使用Pygame的定时和音频功能。这些主题不一定相关,但是通常会在一起使用,因为游戏中的声音效果,通常是通过需要某种定时的事件来触发的。我们创建了一个名为Oil Spill的示例游戏,以展示这些概念。

第11章 编程逻辑:Snake游戏

本章展示了如何创建经典的Snake游戏,以作为学习如何为游戏逻辑编写源代码的工具。这一主题是人工智能的一种简单形式。我们教示例游戏中的贪吃蛇如何自己找到食物而不依靠用户输入。

第12章 三角函数:Tank Battle游戏

本章回到了数学这一整体性的话题,并且介绍三角学如何成为游戏编程的强大工具。我们使用几种三角函数来制作Tank Battle游戏,其中坦克的炮塔跟随屏幕上的鼠标光标而旋转,并且这用来瞄准敌人的坦克。

第13章 随机地形:Artillery Gunner游戏

本章介绍了一个相当复杂的主题,为本章的项目Artillery Gunner游戏生成随机地形。我们使用矢量图而不是位图来生成随机地形,在其上放置两个相互对峙的大炮,然后,允许玩家和计算机对战,尝试击中对方。这用到了我们学习过的所有数学功能,并且这款游戏真的很有趣。

第14章 更多内容:Dungeon角色扮演游戏

本书最后一章是一个不朽的项目,系统地展示了如何开发一款完整的角色扮演游戏。

附录A 安装Python和Pygame

这个附录说明了如何安装Python和Pygame。

附录B Pygame按键代码

这个附录包含了Pygame中使用的按键编码的列表。

目 录

[第1章 使用类的Python
1.1 了解Geometry程序](https://yq.aliyun.com/articles/95195/)
1.2 初识Python
1.2.1 Python工具
1.2.2 Python语言
1.3 Python中的对象
1.3.1 在面向对象之前是什么
1.3.2 接下来是什么
1.3.3 OOP:Python的方式
1.3.4 单继承
1.3.5 多继承
1.4 小结
第2章 初识Pygame:Pie游戏
第3章 I/O、数据和字体:Trivia游戏
第4章 用户输入:Bomb Catcher游戏
第5章 Math和Graphics:Analog Clock示例程序
第6章 位图图形:Orbiting Spaceship示例程序
第7章 用精灵实现动画:Escape the Dragon游戏
第8章 精灵冲突:Zombie Mob游戏
第9章 数组、列表和元组:Block Breaker游戏
第10章 计时和声音:Oil Spill游戏
第11章 编程逻辑:Snake游戏
第12章 三角函数:Tank Battle游戏
第13章 随机地形:Artillery Gunner游戏
第14章 更多内容:Dungeon角色扮演游戏
附录A 安装Python和Pygame
附录B Pygame按键代码

相关文章
|
16天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
1天前
|
数据采集 机器学习/深度学习 前端开发
【好书推荐3】Python网络爬虫入门到实战
【好书推荐3】Python网络爬虫入门到实战
9 0
|
2天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
13 5
|
5天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
|
5天前
|
机器学习/深度学习 数据采集 数据可视化
利用Python进行历史数据预测:从入门到实践的两个案例分析
利用Python进行历史数据预测:从入门到实践的两个案例分析
19 1
|
6天前
|
测试技术 Python
Python模块化方式编程实践
Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
27 2
|
11天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
11天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。
|
11天前
|
测试技术 调度 索引
python编程中常见的问题
【4月更文挑战第23天】
32 2
|
12天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver