博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记--趣学Python编程第十三章的例子
阅读量:6306 次
发布时间:2019-06-22

本文共 1570 字,大约阅读时间需要 5 分钟。

弹球

由反弹球和球拍构成的游戏。球会在屏幕上飞过来,玩家要用球拍把它弹回去

画布和画弹球

  • 引入模块
    #Tkinter -- Python的标准GUI库,Tk 接口,是python 内置的安装包from tkinter import *import randomimport time
  • 创建窗体
    #创建tk对象tk = Tk()#设置窗体标题tk.title("Game")#设置窗口不能调整,0,0 水平垂直方面都不能改变tk.resizable(0, 0)#窗口置顶tk.wm_attributes("-topmost",1)# Canvas提供可以用来进行绘图的Container,支持基本的几何元素,使用Canvas进行绘图时,#所有的操作都是通过Canvas,不是通过它的元素canvas = Canvas(tk,width=500, height=400, bd=0, highlightthickness=0)#根据上面定的属性来调整自己canvas.pack()#初始化tk.update()

    创建Ball类

    创建Ball类,它有两个参数,一个是画布,另一个是球的颜色 

    把画布保存到一个对象变量中,因为我们会在它上面画球 
    在画布上画一个用颜色参数作为填充色的小球
    把tkinter画小球时所返回的ID保存起来,因为我们要用它移动屏幕上的小球

#创建Ballclass Ball:    def __init__(self, canvas,color):        self.canvas = canvas         self.id = canvas.create_oval(10,10,25,25,fill=color)        self.canvas.move(self.id,245,100)        #        starts = [-3,-2,-1,1,2,3]        random.shuffle(starts)        self.x = starts[0]        self.y = -3        #取得当前画布的大小        self.canvas_height = self.canvas.winfo_height()        self.canvas_width  = self.canvas.winfo_width()    def draw(self):      #添加移动:  move(id-物体,水平移动,垂直移动)        self.canvas.move(self.id,self.x,self.y)        pos = self.canvas.coords(self.id)        if pos[1] <= 0:            self.y = 3        if pos[3] >= self.canvas_height:            self.y = -3        if pos[0] <= 0:            self.x =3        if pos[2] >= self.canvas_width:            self.x = -3

主程序的代码分析:

while 1:    ball.draw() #引入移动操作    tk.update_idletasks() #和update 合作 让tkinter快点把物体画出来    tk.update()    time.sleep(0.05)本文转自孤舟夜航之家博客51CTO博客,原文链接http://blog.51cto.com/cysky/2049045如需转载请自行联系原作者cysky
你可能感兴趣的文章
shell判断文件是否存在
查看>>
EXCHANGE事务日志和邮箱数据库的存储位置
查看>>
oracle conn /as sysdba后显示 乱码”???“
查看>>
(三)把域服务升级和迁移到Windows Server 2012 R2上
查看>>
动态主机配置协议:DHCP简介
查看>>
跟我学Spring Cloud(Finchley版)-05-服务注册与服务发现-Eureka入门
查看>>
VisualStudio不让控制台程序一闪而过
查看>>
交换机配置
查看>>
python读取excel表格的数据
查看>>
折半查找
查看>>
写给创始人的期权问答及实操白皮书(连载一)
查看>>
jenkins集成sonarqube
查看>>
Sed、Awk和grep 学习笔记(一)
查看>>
row_number()over函数的使用
查看>>
viewPort(浏览器窗口的整个显示区域)
查看>>
公司Xen server虚拟化中虚拟机磁盘文件丢失的处理办法
查看>>
关于垂直对齐方式vertical-align
查看>>
特朗普:美国尚未与中国就中兴事宜达成任何协议
查看>>
Java并发编程之美
查看>>
idea快捷键使用
查看>>