【推荐语】
本书作者在国外发布英文版后,受到普遍欢迎和很好的评价。 本书通过详细分析11款示例游戏的源代码,介绍Pygame库的用法。寓教于乐,轻松有趣。 本书所涉及的11款示例游戏,是诸如Nibbles、Tetris、Simon、Bejeweled、Othello、Connect Four、Flood It等游戏的翻版。 本书的Web站点inventwithpython.com/pygame,提供源代码下载等更多资源。
【目录】
第1章安装Python和Pygame1
1.1预备知识1
1.2下载和安装Python1
1.3Windows下的安装说明1
1.4MacOSX上的安装说明2
1.5Ubuntu和Linux上的安装说明2
1.6启动Python2
1.7安装Pygame3
1.8如何阅读本书4
1.9的程序4
1.10下载图形文件和声音文件4
1.11行号和空格4
1.12图书中的文本折行5
1.13在线检查代码5
1.14配套网站上的更多信息6

第2章Pygame基础知识7
2.1GUIvs.CLI7
2.2使用Pygame的HelloWorld程序源代码7
2.3建立一个Pygame程序8
2.4游戏循环和游戏状态10
2.5pygame.event.Event对象11
2.6QUIT事件和pygame.quit()函数12
2.7像素坐标13
2.8关于函数、方法、构造函数和模块中的函数(及其差别)的一些提示13
2.9Surface对象和窗口14
2.10颜色15
2.11颜色的透明度16
2.12pygame.Color对象17
2.13Rect对象17
2.14基本的绘制函数19
2.15pygame.PixelArray对象22
2.16pygame.display.update()函数22
2.17动画22
2.18帧速率和pygame.time.Clock对象25
2.19用pygame.image.load()和blit()绘制图像26
2.字体26
2.21抗锯齿28
2.22播放声音28
2.23本章小结29

第3章MemoryPuzzle游戏31
3.1如何玩MemoryPuzzle游戏31
3.2嵌套的for循环31
3.3MemoryPuzzle的源代码33
3.4声明和导入40
3.5幻数很糟糕40
3.6使用assert语句检查41
3.7判断一个数字是偶数还是奇数42
3.8较早崩溃和经常崩溃42
3.9让源代码更好看一些43
3.10使用常量变量而不是字符串44
3.11确保有足够的图标44
3.12元组vs.列表,不可变vs.可变45
3.13单项元组需要一个结尾的逗号46
3.14在列表和元组之间转换46
3.15global语句以及为什么全局变量是罪恶的47
3.16数据结构和2D列表48
3.17“开始游戏”动画49
3.18游戏循环50
3.19事件处理循环50
3.检查鼠标光标在哪一个方块之上51
3.21处理次点击的方块52
3.22处理不一致的一对图标53
3.23处理玩家获胜53
3.24将游戏状态绘制到屏幕54
3.25创建“揭开的方块”数据结构55
3.26创建游戏板数据结构:第1步——获取所有可能的图标55
3.27第2步——打乱并截取所有图标的列表56
3.28第3步——将图标放置到游戏板上56
3.29将一个列表分割为列表的列表57
3.30不同的坐标系58
3.31从像素坐标转换为方块坐标59
3.32绘制图标以及语法糖59
3.33获取游戏板控件的图标的形状和颜色的语法糖61
3.34绘制盖住的方块61
3.35处理揭开和覆盖动画62
3.36绘制整个游戏板63
3.37绘制高亮边框63
3.38“开始游戏”动画64
3.39揭开和盖住成组的方块64
3.40“游戏获胜”动画65
3.41判断玩家是否已经获胜65
3.42为何要那么麻烦地使用main()函数66
3.43为什么要为可读操心67
3.44本章小结71

第4章SlidePuzzle72
4.1如何玩SlidePuzzle72
4.2SlidePuzzle的源代码72
4.3款游戏和款相同80
4.4设置按钮81
4.5使用愚笨的代码变聪明83
4.6主游戏循环83
4.7点击按钮84
4.8用鼠标滑动贴片85
4.9用键盘滑动贴片85
4.10使用in操作符实现“等于其中之一”的技巧86
4.11WASD和箭头按键86
4.12实际执行贴片滑动87
4.13IDLE和终止Pygame程序87
4.14检查特定的事件并且将事件添加到Pygame的事件队列88
4.15创建游戏板数据结构89
4.16不记录的位置89
4.17通过更新游戏板数据结构来移动90
4.18何时不使用断言90
4.19获取一次并不是那么的移动91
4.将贴片坐标转换为像素坐标92
4.21将像素坐标转换为游戏板坐标92
4.22绘制一个贴片93
4.23让文本显示在屏幕上93
4.24绘制游戏板94
4.25绘制游戏板的边框94
4.26绘制按钮95
4.27实现贴片滑动动画95
4.28Surface的copy()方法96
4.29创建新的谜题98
4.30实现游戏板重置动画99
4.31时间vs.内存的权衡100
4.32没人在乎几个字节101
4.33没人在乎几百万个纳秒101
4.34本章小结101

第5章Simulate102
5.1如何玩Simulate游戏102
5.2Simulate的源代码102
5.3常用初始内容108
5.4设置按钮109
5.5main()函数110
5.6程序中用到的一些局部变量110
5.7绘制游戏板并处理输入111
5.8检查鼠标点击112
5.9检查键盘按下112
5.10游戏循环的两种状态113
5.11搞清楚玩家是否按下了正确的按钮113
5.12新纪元时间115
5.13将游戏板绘制到屏幕116
5.14相同的旧的terminate()函数116
5.15复用常量变量117
5.16实现按钮闪烁动画117
5.17绘制按钮1
5.18实现背景颜色改变的动画1
5.19游戏结束动画121
5.将像素坐标转换为按钮122
5.21显式比隐式好123

第6章Wormy125
6.1Wormy游戏的玩法125
6.2Wormy的源代码125
6.3栅格131
6.4设置代码131
6.5main()函数132
6.6单独的runGame()函数133
6.7事件处理循环134
6.8碰撞检测134
6.9检测和苹果的碰撞135
6.10移动虫子136
6.1ert()列表方法136
6.12绘制屏幕137
6.13在屏幕上绘制“Pressakey”文本137
6.14checkForKeyPress()函数137
6.15初始屏幕138
6.16旋转初始屏幕文本139
6.17旋转并不140
6.18决定苹果出现在哪里141
6.19游戏结束屏幕141
6.绘制函数142
6.21不要复用变量名144

第7章Tetromi46
7.1一些Tetromino术语146
7.2Tetromino的源代码147
7.3常用设置代码159
7.4设置按下键的定时常量159
7.5更多的设置代码160
7.6设置砖块模式161
7.7将“一行代码”分隔到多行164
7.8main()函数165
7.9开始新的游戏166
7.10游戏循环167
7.11事件处理循环167
7.12暂停游戏167
7.13使用移动变量来处理用户输入168
7.14检查移动或旋转是否有效168
7.15找到底部171
7.16通过按下按键来移动172
7.17让砖块“自然”落下174
7.18将所有内容绘制到屏幕上175
7.19制作文本的快捷函数makeTextObjs()176
7.相同的旧的terminate()函数176
7.21使用checkForKeyPress()函数等待按键事件176
7.22通用文本屏幕函数showTextScreen()177
7.23checkForQuit()函数178
7.24calculateLevelAndFallFreq()函数178
7.25用函数getNewPiece()产生新的砖块180
7.26给游戏板数据结构添加砖块181
7.27创建一个新的游戏板数据结构181
7.28isOnBoard()和isValidPosition()函数182
7.29检查、删除和填满一行184
7.30将游戏板坐标转换为像素坐标186
7.31在游戏板上或屏幕上的其他位置绘制方块187
7.32将所有内容绘制到屏幕上187
7.33绘制得分和关卡文本188
7.34在游戏板上或屏幕的其他位置绘制一个砖块188
7.35绘制“Next”砖块189
7.36本章小结189

第8章SquirrelEatSquirrel191
8.1如何玩SquirrelEatSquirrel191
8.2SquirrelEatSquirrel的设计191
8.3SquirrelEatSquirrel的源代码192
8.4常用设置代码2
8.5描述数据结构3
8.6main()函数4
8.7pygame.transform.flip()函数5
8.8更为详细的游戏状态5
8.9常用的文本创建代码6
8.10相机6
8.11“活动区域”8
8.12记录游戏世界中的物体的位置8
8.13从一些开始9
8.14游戏循环9
8.15检查去掉保护状态9
8.16移动敌人松鼠210
8.17删除较远的对象和松鼠对象211
8.18当从列表中删除项的时候,反向遍历列表211
8.19添加新的对象和松鼠对象213
8.相机延迟以及移动相机视图213
8.21绘制背景、、松鼠和生命值指示214
8.22事件处理循环216
8.23移动玩家并考虑跳动218
8.24碰撞检测:吃或被吃219
8.25游戏结束屏幕221
8.26获胜221
8.27绘制图形化的生命值指标221
8.28相同的旧的terminate()函数222
8.29正弦函数222
8.30对Python2的向后兼容225
8.31getRandomVelocity()函数226
8.32找到一个地方添加新的松鼠和226
8.33创建敌人松鼠数据结构228
8.34翻转松鼠图像228
8.35创建数据结构229
8.36检查是否在活动区域之外229
8.37本章小结230

第9章StarPusher231
9.1如何玩StarPusher231
9.2StarPusher的源代码232
9.3初始化设置245
9.4StarPusher中的数据结构259
9.5读取和写入文本文件260
9.6递归函数268
9.7栈溢出269
9.8使用基本条件防止栈溢出271
9.9漫水填充算法271
9.10绘制地图273
9.11检查关卡是否完成275
9.12本章小结276

第10章4款其他游戏277
10.1Flippy,Othello的翻版277
10.2Flippy的源代码279
10.3InkSpill,FloodIt游戏的翻版291
10.4InkSpill的源代码292
10.5Four-In-A-Row,ConnectFour的翻版303
10.6Four-In-A-Row的源代码304
10.7Gemgem,Bejeweled的翻版312
10.8Gemgem的源代码313
10.9本章小结326

术语表328
返回顶部