内容简介
本书是一本以实践为导向的Python游戏编程入门教程,专为对游戏开发感兴趣的初学者设计。全书通过一系列完整的游戏项目,循序渐进地讲解如何使用Python语言和Pygame库创建2D游戏。
作者Al Sweigart以其清晰易懂的教学风格著称,书中从最简单的游戏框架入手,逐步引入图形绘制、动画、碰撞检测、音效处理、游戏循环等核心概念。每个章节都围绕一个完整的游戏案例展开,例如“猜数字”、“贪吃蛇”、“太空入侵者”等经典游戏,读者可以在动手实践中掌握编程技巧。
书中不仅涵盖了Pygame的基本用法,还涉及面向对象编程、事件处理、精灵管理、音效集成等进阶主题。每一章末尾都提供练习题和扩展思路,鼓励读者自主创新,修改游戏规则或添加新功能。此外,作者还分享了游戏设计中的常见陷阱和优化建议,帮助读者写出高效、可维护的代码。
无论你是完全没有编程经验的游戏爱好者,还是希望拓展Python应用领域的开发者,本书都能为你提供一条清晰的学习路径。通过完成书中的所有项目,你将具备独立开发小型2D游戏的能力,并为进一步学习更复杂的游戏引擎(如PyGame Zero、Pyglet或Unity)打下坚实基础。
目录
作者简介
内容提要
本书内容安排
本书的目标读者
第1章 安装Python和Pygame
1.1 预备知识
1.2 下载和安装Python
1.3 Windows下的安装说明
1.4 Mac OS X上的安装说明
1.5 Ubuntu和Linux上的安装说明
1.6 启动Python
1.7 安装Pygame
1.8 如何阅读本书
1.9 特色的程序
1.10 下载图形文件和声音文件
1.11 行号和空格
1.12 图书中的文本折行
1.13 在线检查代码
1.14 配套网站上的更多信息
第2章 Pygame基础知识
2.1 GUI vs. CLI
2.2 使用Pygame的Hello World程序源代码
2.3 建立一个Pygame程序
2.4 游戏循环和游戏状态
2.5 pygame.event.Event对象
2.6 QUIT事件和pygame.quit()函数
2.7 像素坐标
2.8 关于函数、方法、构造函数和模块中的函数(及其差别)的一些提示
2.9 Surface对象和窗口
2.10 颜色
2.11 颜色的透明度
2.12 pygame.Color对象
2.13 Rect对象
2.14 基本的绘制函数
2.15 pygame.PixelArray对象
2.16 pygame.display.update()函数
2.17 动画
2.18 帧速率和pygame.time.Clock对象
2.20 字体
2.21 抗锯齿
2.22 播放声音
2.23 本章小结
第3章 Memory Puzzle游戏
3.1 如何玩Memory Puzzle游戏
3.2 嵌套的for循环
3.3 Memory Puzzle的源代码
3.4 声明和导入
3.5 幻数很糟糕
3.6 使用assert语句全面检查
3.7 判断一个数字是偶数还是奇数
3.8 较早崩溃和经常崩溃
3.9 让源代码更好看一些
3.10 使用常量变量而不是字符串
3.11 确保有足够的图标
3.12 元组vs.列表,不可变vs.可变
3.13 单项元组需要一个结尾的逗号
3.14 在列表和元组之间转换
3.15 global语句以及为什么全局变量是罪恶的
3.16 数据结构和2D列表
3.17 “开始游戏”动画
3.18 游戏循环
3.19 事件处理循环
3.20 检查鼠标光标在哪一个方块之上
3.21 处理第一次点击的方块
3.22 处理不一致的一对图标
3.23 处理玩家获胜
3.24 将游戏状态绘制到屏幕
3.25 创建“揭开的方块”数据结构
3.26 创建游戏板数据结构:第1步——获取所有可能的图标
3.27 第2步——打乱并截取所有图标的列表
3.28 第3步——将图标放置到游戏板上
3.29 将一个列表分割为列表的列表
3.30 不同的坐标系
3.31 从像素坐标转换为方块坐标
3.32 绘制图标及语法糖
3.33 获取游戏板控件的图标的形状和颜色的语法糖
3.34 绘制盖住的方块
3.35 处理揭开和覆盖动画
3.36 绘制整个游戏板
3.37 绘制高亮边框
3.38 “开始游戏”动画
3.39 揭开和盖住成组的方块
3.40 “游戏获胜”动画
3.41 判断玩家是否已经获胜
3.42 为何要那么麻烦地使用main()函数
3.43 为什么要为可读性操心
3.44 本章小结
第4章 Slide Puzzle
4.1 如何玩Slide Puzzle
4.2 Slide Puzzle的源代码
4.3 第二款游戏和第一款相同
4.4 设置按钮
4.5 使用愚笨的代码变聪明
4.6 主游戏循环
4.7 点击按钮
4.8 用鼠标滑动贴片
4.9 用键盘滑动贴片
4.10 使用in操作符实现“等于其中之一”的技巧
4.11 WASD和箭头按键
4.12 实际执行贴片滑动
4.13 IDLE和终止Pygame程序
4.14 检查特定的事件并且将事件添加到Pygame的事件队列
4.15 创建游戏板数据结构
4.16 不记录空白的位置
4.17 通过更新游戏板数据结构来移动
4.18 何时不使用断言
4.19 获取一次并不是那么随机的移动
4.20 将贴片坐标转换为像素坐标
4.21 将像素坐标转换为游戏板坐标
4.22 绘制一个贴片
4.23 让文本显示在屏幕上
4.24 绘制游戏板
4.25 绘制游戏板的边框
4.26 绘制按钮
4.27 实现贴片滑动动画
4.28 Surface的copy()方法
4.29 创建新的谜题
4.30 实现游戏板重置动画
4.31 时间vs.内存的权衡
4.32 没人在乎几个字节
4.33 没人在乎几百万个纳秒
4.34 本章小结
第5章 Simulate
5.1 如何玩Simulate游戏
5.2 Simulate的源代码
5.3 常用初始内容
5.4 设置按钮
5.5 main()函数
5.6 程序中用到的一些局部变量
5.7 绘制游戏板并处理输入
5.8 检查鼠标点击
5.9 检查键盘按下
5.10 游戏循环的两种状态
5.11 搞清楚玩家是否按下了正确的按钮
5.12 新纪元时间
5.13 将游戏板绘制到屏幕
5.14 相同的旧的terminate()函数
5.15 复用常量变量
5.16 实现按钮闪烁动画
5.17 绘制按钮
5.18 实现背景颜色改变的动画
5.19 游戏结束动画
5.20 将像素坐标转换为按钮
5.21 显式比隐式好
第6章 Wormy
6.1 Wormy游戏的玩法
6.2 Wormy的源代码
6.3 栅格
6.4 设置代码
6.5 main()函数
6.6 单独的runGame()函数
6.7 事件处理循环
6.8 碰撞检测
6.9 检测和苹果的碰撞
6.10 移动虫子
6.11 insert()列表方法
6.12 绘制屏幕
6.13 在屏幕上绘制“Press a key”文本
6.14 checkForKeyPress()函数
6.15 初始屏幕
6.16 旋转初始屏幕文本
6.17 旋转并不完美
6.18 决定苹果出现在哪里
6.19 游戏结束屏幕
6.20 绘制函数
6.21 不要复用变量名
第7章 Tetromino
7.1 一些Tetromino术语
7.2 Tetromino的源代码
7.3 常用设置代码
7.4 设置按下键的定时常量
7.5 更多的设置代码
7.6 设置砖块模式
7.7 将“一行代码”分隔到多行
7.8 main()函数
7.9 开始新的游戏
7.10 游戏循环
7.11 事件处理循环
7.12 暂停游戏
7.13 使用移动变量来处理用户输入
7.14 检查移动或旋转是否有效
7.15 找到底部
7.16 通过按下按键来移动
7.17 让砖块“自然”落下
7.18 将所有内容绘制到屏幕上
7.19 制作文本的快捷函数makeTextObjs()
7.20 相同的旧的terminate()函数
7.21 使用checkForKeyPress()函数等待按键事件
7.22 通用文本屏幕函数showTextScreen()
7.23 checkForQuit()函数
7.24 calculateLevelAndFallFreq()函数
7.25 用函数getNewPiece()产生新的砖块
7.26 给游戏板数据结构添加砖块
7.27 创建一个新的游戏板数据结构
7.28 isOnBoard()和isValidPosition()函数
7.29 检查、删除和填满一行
7.30 将游戏板坐标转换为像素坐标
7.31 在游戏板上或屏幕上的其他位置绘制方块
7.32 将所有内容绘制到屏幕上
7.33 绘制得分和关卡文本
7.34 在游戏板上或屏幕的其他位置绘制一个砖块
7.35 绘制“Next”砖块
7.36 本章小结
第8章 Squirrel Eat Squirrel
8.1 如何玩Squirrel Eat Squirrel
8.2 Squirrel Eat Squirrel的设计
8.3 Squirrel Eat Squirrel的源代码
8.4 常用设置代码
8.5 描述数据结构
8.6 main()函数
8.7 pygame.transform.flip()函数
8.8 更为详细的游戏状态
8.9 常用的文本创建代码
8.10 相机
8.11 “活动区域”
8.12 记录游戏世界中的物体的位置
8.13 从一些草开始
8.14 游戏循环
8.15 检查去掉保护状态
8.16 移动敌人松鼠
8.17 删除较远的草对象和松鼠对象
8.18 当从列表中删除项的时候,反向遍历列表
8.19 添加新的草对象和松鼠对象
8.20 相机延迟以及移动相机视图
8.21 绘制背景、草、松鼠和生命值指示
8.22 事件处理循环
8.23 移动玩家并考虑跳动
8.24 碰撞检测:吃或被吃
8.25 游戏结束屏幕
8.26 获胜
8.27 绘制图形化的生命值指标
8.28 相同的旧的terminate()函数
8.29 正弦函数
8.30 对Python 2的向后兼容
8.31 getRandomVelocity()函数
8.32 找到一个地方添加新的松鼠和草
8.33 创建敌人松鼠数据结构
8.34 翻转松鼠图像
8.35 创建草数据结构
8.36 检查是否在活动区域之外
8.37 本章小结
第9章 Star Pusher
9.1 如何玩Star Pusher
9.2 Star Pusher的源代码
9.3 初始化设置
9.4 Star Pusher中的数据结构
9.5 读取和写入文本文件
9.6 递归函数
9.7 栈溢出
9.8 使用基本条件防止栈溢出
9.9 漫水填充算法
9.10 绘制地图
9.11 检查关卡是否完成
9.12 本章小结
第10章 4款其他游戏
10.1 Flippy,Othello的翻版
10.2 Flippy的源代码
10.3 Ink Spill,Flood It游戏的翻版
10.4 Ink Spill的源代码
10.5 Four-In-A-Row,Connect Four的翻版
10.6 Four-In-A-Row的源代码
10.7 Gemgem,Bejeweled的翻版
10.8 Gemgem的源代码
10.9 本章小结
术语表
看完了
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。