基于tkinter模块的GUI
GUI是图形化界面的缩写。python默认的GUI开发模块时tkinter(python3以前的版本中名为Tkinter),从名字中可以看到它是基于Tk,其中Tk是一个工具包。事实上,开发GUI应用不是python最擅长的工作,如果真的需要使用python开发GUI应用,wxpython、pyqt、pygtk等模块都是不错的选择。
基本上使用tkinter开发GUI应用需要以下5个步骤:
1、导入tkinter模块中我们需要的东西
2、创建一个顶层窗口对象并用它来承载整个GUI应用
3、在顶层窗口对象上添加GUI组件
4、通过代码将这些GUI组件的功能组织起来
5、进入主事假循环(main loop)
通常来说,GUI应用通常是时间驱动式的,之所以进入主时间循环就是要监听鼠标、键盘等各种事件的发生并执行对应的代码对事件进行处理,因为事件会持续的发生,所以需要这样的一个循环一直运行着等待下一个事件的发生。另一方面,Tk为控件的摆放提供了三种布局管理器,通过布局管理器可以对控件进行定位,三种布局管理器分别是Placer(开发者提供控件的大小和摆放位置)、Packer(自动将控件填充到合适的位置)和Grid(基于网格坐标来摆放控件)。
使用pygame进行游戏开发
pygame是一个开源的python模块,专门用于多媒体应用(如电子游戏)的开发,其中包含对图像、声音、视频、事件和碰撞等的支持。Pygame建立在SDL的基础上,SDL是一套跨平台的多媒体开发库,用C语言实现,被广泛的应用于游戏、模拟器、播放器等的开发。而Pygame让游戏开发者不再被底层语言束缚,可以更多的关注游戏的功能和逻辑。
在窗口中绘图
可通过pygame中draw模块的函数在窗口上绘图,屏幕坐标系是将屏幕左上角设置为坐标原点(0,0),向右是x轴的正向,向下是y轴的正向,在表示位置或者设置尺寸的时候,默认单位都是相似。所谓像素就是屏幕上的一个点,可以用浏览图片的软件试着将一张图放大若干倍,就可以看到这些点。pygame表示颜色用的是色光三原色表示法,即通过一个元组或者列表来指定颜色的RGB值,每个值都在0~255之间,因为每种原色都用一个8位(bit)的值来表示,三种颜色相当于一共由24位构成,这就是常说的“24位颜色表示法”。
加载图像
可以使用pygame中image模块的函数来加载图像,再通过之前获得的窗口对象的blit方法渲染图像。
实现动画效果
要实现动画效果,就是将不连续的图片连续的播放,只要每秒钟达到了一定的帧数,就可以做出比较流畅的动画效果。例如想让图片中的小球动起来,可以将小球的位置用向量来表示,并在循环中修改小球的位置再刷新整个窗口即可。
碰撞检测
游戏中碰撞在所难免,可以通过pygame的sprite(动画精灵)摸