资源简介 (共19张PPT)第15课 Pygame基础什么是PygamePygame是Python的一个模块,它提供了用图形化用户界面(Graphical User Interface,GUI)来创建游戏的功能。Pygame的安装安装Pygame 需要用到pip 工具。pip 是一个安装和管理Python 包的工具。如果Python 安装在了C:\Users\用户名\AppData\Local\Programs\Python 目录,那么pip 工具就安装在了C:\Users\用户\AppData\Local\Programs\Python\Python37-32\Scripts目录下。在命令行输入“python –m pip install –U pygame --user”,按下回车键后,就可以进行安装Pygame。要确保环境变量Path的之中,添加了“C:\Users\用户名AppData\Local\Programs\Python\Python37-32\Scripts”,否则会找不到pip命令。Pygame 窗口使用Pygame绘图,需要建立一个窗口。import pygamepygame.init()windowSurface=pygame.display.set_mode([500,400])Running=Truewhile Running:for event in pygame.event.get():if event.type == pygame.QUIT:Running =Falsepygame.quit()Surface对象是表示一个矩形2D图像的对象。我们可以通过调用Pygame 绘制函数,来改变Surface 对象的像素,然后再显示到屏幕上。注意,pygame.display.set_mode()返回的Surface对象叫作显示Surface(display Surface)。当调用pygame.display.update()函数的时候,之前绘制到显示Surface 对象上的任何内容,都会显示到窗口上。Pygame 的坐标系和颜色在海龟绘图中,原点位于屏幕的中心,越向屏幕右方,x坐标越大,越向屏幕上方,y坐标越大。Pygame则使用一种新的坐标系。Pygame窗口的左上角是原点(0, 0)。随着我们向右移动,x坐标还是变得越来越大,但是,x坐标没有负值。随着向下移动,y 坐标的值逐渐增加,y 坐标也没有负值。颜色用元组表示,并且用常量保存。BLACK=(0,0,0)WHITE=(255,255,255)GREEN=(0,255,0)BLUE=(0,0,255)RED=(255,0,0)绘图函数pygame.draw.line()函数该函数绘制线段,有5个参数:待显示的Surface 对象;画笔的颜色起始位置坐标;结束位置坐标;线条粗细。可以用它绘制一个字母H。参见程序清单15.3.py。绘图函数pygame.draw.rect()函数该函数绘制矩形,有4个参数:待显示的Surface 对象;画笔的颜色;4 个整数的一个元组(分别表示左上角的X坐标和Y坐标,以及宽度和高度);线条粗细,如果是0,表示矩形是填充的。可以用它绘制一个红色的矩形。参见程序清单15.4.py。绘图函数pygame.draw.circle()函数该函数绘制圆形,有5个参数:待显示的Surface 对象;画笔的颜色;要绘制的圆的圆心坐标;要绘制的圆的半径;线条粗细,如果是0,表示圆形是填充的。可以用它绘制一个红色的矩形。参见程序清单15.5.py。绘图函数pygame.draw.polygon()函数该函数绘制多边形,有4个参数:待显示的Surface 对象;画笔的颜色;坐标列表。多边形的多条边是通过在每个坐标点以及其后续的坐标点之间依次绘制线条,然后,从最后的点到第一个点绘制线条而形成的。线条粗细,如果是0 或者不填写,表示多边形是填充的。可以用它绘制一个红色的矩形。参见程序清单15.6.py。绘图函数pygame.draw.ellipse()函数该函数绘制椭圆形,有4个参数:待显示的Surface 对象;画笔的颜色;边界矩形(bounding rectangle),就是围绕这一个形状所能绘制的最小的矩形。参数可以是一个pygame.Rect 对象或者是4个整数的一个元组;线条粗细。可以用它绘制一个红色的矩形。参见程序清单15.7.py。动画加载图片在Pygame中,可以通过调用image()函数操作图片。要把要加载的照片复制到和保存Python程序相同的位置。这样,程序运行时Python就能很方便地找到这个文件,而不需要指定图片存储的路径。参见程序清单15.9.py。动画移动起来在游戏循环中,更新图片的坐标位置,然后每次执行循环的时候在新的位置绘制图片,这样一来,看上去就好像小狗在移动一样。参见程序清单15.10.py。去掉轨迹在每次复制图像之前,都调用一次screen.fi ll()函数,来填充要绘制的屏幕。参见程序清单15.11.py。动画碰撞检测碰撞检测(collision detection)负责检查并处理计算屏幕上的两个物体发生彼此接触(也就是发生碰撞)的情况。当检测到小狗碰到了这个边界,就改变它的移动方向,让它掉头往回跑。参见程序清单15.12.py。动画设置帧速率帧速率(frame rate)是指程序每秒钟绘制的图像的数目,用每秒多少帧(Frames Per Second,FPS)来度量。Pygame.time模块中的Clock对象可以帮助避免程序运行得过快。Clock对象有一个tick()方法,它接收的参数表示想要游戏运行速度是多少FPS。参见程序清单15.13.py。字体字体(font)是字体类型的一种描述,表示按照统一风格绘制的一整套的字母、数字、符号和字符,例如SimHei和Times New Roman都是字体。调用pygame.font.SysFont函数来创建一个Font对象,这个函数有两个参数,第1个参数是字体名称,第2个参数是字体大小(以点为单位)。参见程序清单15.14.py。事件当用户做了诸如按下一个按键或者移动鼠标等动作,Pygame库都会创建一个Pygame.event.Event 对象来记录这个动作,这就是“事件”键盘事件按下某个键盘的事件就是KEYDOWN,释放某个键盘的事件就是KEYUP。对前面的示例稍作修改,以便可以通过方向键来移动文本“HelloWorld !”,还可以通过Esc 键来关闭窗口。参见程序清单15.15.py。事件鼠标事件Pygame中,当在窗口中按下鼠标时会触发MOUSEBUTTONDOWN事件,当释放鼠标时会触发MOUSEBUTTONUP事件,当鼠标移动经过窗口时会触发MOUSEMOTION事件。一个示例——如果用户点击鼠标左键,就会在点击的地方画一个黄色的小圆点,如果点击鼠标右键,就会清空屏幕。参见程序清单15.16.py。声音在游戏中,我们常常需要通过背景音乐来烘托一种氛围,或者通过某种音效来表达一种游戏状态。通过调用pygame.mixer.Sound()构造函数,来创建一个pygame.mixer.Sound 对象。它接受一个字符串参数,这个字符串就是声音文件的文件名。Pygame可以加载WAV、MP3或OGG等类型的声音文件。要播放声音,调用Sound对象的play()方法。如果想要立即停止Sound对象的播放,调用stop() 方法。stop() 方法没有参数。参见程序清单15.17.py。弹球游戏综合前面介绍的Pygame基础编程功能,开发一个简单的弹球游戏。鼠标事件——移动鼠标来控制挡板,从而反弹弹球得分。键盘事件——当一次游戏结束,如果还想玩游戏,可以点击F1按键,重新开始游戏。图像和字体——生命数和得分都会显示在窗口的顶部。音乐——这款游戏有背景音乐。参见程序清单15.18.py。练习1.使用Pygame,创建一个新的窗口,以白色作为窗体背景,并且在窗口中绘制一个粉色(RGB值为255,192,203)的椭圆形。2.使用Pygame,创建一个新的窗口,以黑色作为窗体背景,将你的名字以白色显示在窗口,并且当点击鼠标的时候,名字可以随着鼠标移动。 展开更多...... 收起↑ 资源预览