Python程序开发之简单小程序实例(11)小游戏-跳动的小球

Python程序开发之简单小程序实例(11)小游戏-跳动的小球,第1张

Python程序开发之简单小程序实例

(11)小 游戏 -跳动的小球

一、项目功能

用户控制挡板来阻挡跳动的小球

二、项目分析

根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。

三、程序源代码

源码部分截图:

源码:

#!/usr/bin/python3.6

# -*- coding: GBK -*-

#导入相应模块

from tkinter import *

import random

import time

#自定义小球的类 Ball

class Ball:

# 初始化

def __init__(self,canvas,paddle,color):

#传递画布值

self.canvas=canvas

#传递挡板值

self.paddle=paddle

#画圆并且保存其ID

self.id=canvas.create_oval(10,10,25,25,fill=color)

self.canvas.move(self.id,245,100)

#小球的水平位置起始列表

start=[-3,-2,-1,1,2,3]

#随机化位置列表

random.shuffle(start)

self.x=start[0]

self.y=-2

self.canvas_heigh=self.canvas.winfo_height()#获取窗口高度并保存

self.canvas_width=self.canvas.winfo_width()

#根据参数值绘制小球

def draw(self):

self.canvas.move(self.id,self.x,self.y)

pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)

#使得小球不会超出窗口

pad=self.canvas.coords(self.paddle.id)#获取小球挡板的坐标

if pos[1]=self.canvas_heigh or(pos[3]>=pad[1] and pos[2]>=pad[0] and pos[2]

这个两个功能和学习成本差别不是特别大。功能,wxPython要稍微丰富一些,自然要稍微复杂一点。

不过Tkinter是python 原生的库,麻雀虽小五脏俱全,做一些小工具,或者比较小型的程序,还是比较方便。

wxPython则比较鸡肋,用起来没有Tkinter方便,功能又没有QT之类的强大。

建议小程序用tkinter,大型一些的就用QT

依赖库为python自带的tkinter

话说我在用tkinter的时候注意到了这么一个方法

root.attributes("-topmost", 1)

该方法可以让窗口保持置顶状态,于是我就联想到其他功能,制作一个白屏小程序

from tkinter import Tk

# 按ALT+F4的时候会回调此函数

def on_closing():

pass

root = Tk()

# 隐藏外部窗口

root.overrideredirect(True)

# 设置透明度为(0,1),0为全透明(不过无效,建议0.01)

# root.attributes("-alpha", 0.5)

# 设置为全屏

root.state('zoomed')

# 置顶

root.attributes("-topmost", 1)

# 设置窗口出现'WM_DELETE_WINDOW'命令时,回调on_closing函数

# 该方法会使关闭失效

root.protocol('WM_DELETE_WINDOW', on_closing)

# 设置窗口出现30秒后关闭,测试的时候加上

root.after(30000, root.quit)

root.mainloop()

这里带注释的部分都可以删掉,此外root.after()功能是实现定时关闭,以防写代码的时候运行没法关掉,如果要整蛊别人的话可以删掉这行或设置为999000,即等待999秒

原理很简单,就是设置一个窗口,分别加上如下属性

# 外部窗口及窗口工具隐藏(最大化、关闭)

# 窗口全屏

# 窗口置顶

# 窗口关闭功能失效

运行完后屏幕直接白屏(图片就不放了),常规方法例如关闭、ALT+F4、任务管理器都是没办法关掉的。想要解决可以直接重启或者采取一些特殊方法

完成之后,在终端(或cmd)里运行:pyinstaller -F -w 带路径的py文件名.py


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7873214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存