Python程序开发之简单小程序实例 (11)小游戏跳动的小球 一、项目功能 用户控制挡板来阻挡跳动的小球。 二、项目分析 根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。 三、程序源代码 源码部分截图: 源码: !usrbinpython3。6 coding:GBK 导入相应模块 fromtkinterimport importrandom importtime 自定义小球的类Ball classBall: 初始化 definit(self,canvas,paddle,color): 传递画布值 self。canvascanvas 传递挡板值 self。paddlepaddle 画圆并且保存其ID self。idcanvas。createoval(10,10,25,25,fillcolor) self。canvas。move(self。id,245,100) 小球的水平位置起始列表 start〔3,2,1,1,2,3〕 随机化位置列表 random。shuffle(start) self。xstart〔0〕 self。y2 self。canvasheighself。canvas。winfoheight()获取窗口高度并保存 self。canvaswidthself。canvas。winfowidth() 根据参数值绘制小球 defdraw(self): self。canvas。move(self。id,self。x,self。y) posself。canvas。coords(self。id)返回相应ID代表的图形的当前坐标(左上角和右上角坐标) 使得小球不会超出窗口 padself。canvas。coords(self。paddle。id)获取小球挡板的坐标 ifpos〔1〕0: self。y2 ifpos〔3〕self。canvasheighor(pos〔3〕pad〔1〕andpos〔2〕pad〔0〕andpos〔2〕pad〔2〕): self。y2 ifpos〔0〕0: self。x2 ifpos〔2〕self。canvaswidth: self。x2 自定义小球挡板的类Paddle classPaddle: 初始化 definit(self,canvas,color): self。canvascanvas self。colorcolor self。idcanvas。createrectangle(0,0,100,20,fillcolor) self。canvas。move(self。id,200,300) self。canvaswidthself。canvas。winfowidth() self。l0 self。r0 根据参数值绘制挡板 defdraw(self): posself。canvas。coords(self。id) ifpos〔0〕0: self。l0 ifpos〔2〕self。canvaswidth: self。r0 向左 defturnleft(self,event): self。canvas。move(self。id,self。l,0) self。l20 向右 defturnright(self,event): self。canvas。move(self。id,self。r,0) self。r20 实例化窗体 tkTk() tk。title(跳动的小球) 设定窗口大小为不可调整 tk。resizable(0,0) 将包含画布的窗口放在最上面 tk。wmattributes(topmost,1) 将显示边框的两个参数设置为0,即不显示边框 canvasCanvas(tk,width500,height400,bd0,highlightthickness0) canvas。pack() tk。update() 实例化挡板 paddlePaddle(canvas,red) 实例化小球 ballBall(canvas,paddle,green) 下面两行为绑定左右两个方向键 canvas。bindall(,paddle。turnleft) canvas。bindall(,paddle。turnright) 设定无限循环,调用小球和挡板函数绘制小球和挡板,并快速重画屏幕 while1: ball。draw() paddle。draw() tk。updateidletasks() tk。update() time。sleep(0。01)使用时间控件设定每0。01秒循环一次 四、代码解释 第4至第6行为导入相应的模块。 第8至39行为一个自定义小球的类Ball,在类中定义了两个自定义函数init(第10至25行)和draw(第27至39行)。init函数用于小球的初始化,draw函数用于绘制小球在窗体中的运动。 第42至66行为自定义小球挡板的类Paddle。在类中定义四个自定义函数:挡板初化函数init(第44至51行)、挡板左右界限控制函数draw(第53至58行,当挡板向左达到小于等于0或大于等于窗体宽度时,即到达窗体左边框或右边框时,将挡板位置值重设为0。)、挡板向左移动控制函数turnleft(第60至62行,每按一次向左键,挡板水平位置值x减少20。)、挡板向右移动控制函数turnright(第64至66行,每按一次向右键,挡板水平位置值x增加20。) 第68至85行为程序主体实现部分,主要实现窗体、小球和挡板的实例化、各个参数的设置及类函数的调用。 第87至92行为设定一个无限循环,用于调用小球和挡板函数绘制小球和挡板,并快速重画屏幕,时间设定为0。01。 五、运行 图例1 图例2 下一篇:《Python程序开发之简单小程序实例(12)》 更多精彩内容将在以后的章节分享给朋友们,请添加好友至收藏,欢迎点赞并关注后期内容更新!