python tkinter下一百层 小游戏

import tkinter as tk
from random import randint
from tkinter import messagebox
import sys

W=800
H=700
win=tk.Tk()
win.title("下一百层")
win.geometry(f'{W}x{H}')

cvs=tk.Canvas(win,width=W,height=H,background='#000000')
cvs.place(x=0,y=0)




bw=70
bh=10

x0=200
y0=100
mr=20

ks={}

bs=[None]*32

def move_me():
    global x0,y0
    if ks.get('a') and x0>0:
        x0-=10
    elif ks.get('d') and x0<W:
        x0+=10
    win.after(20,move_me)

def keyPress(e):
    c=e.char
    ks[c]=True
    print(ks)

def keyUp(e):
    c=e.char
    ks[c]=False
    print(ks)

def pt_ban(x,y):
    cvs.create_rectangle(x-bw,y-bh,x+bw,y+bh,fill='#00ffff')

def pt_bs():
    for i in bs:
        if i:
            x,y=i
            pt_ban(x,y)

def patin_cri():
    cvs.create_oval(x0-mr,y0-mr,x0+mr,y0+mr,fill='#ff0000')

def patin():
    cvs.delete('all')
    pt_bs()
    patin_cri()
    win.after(100,patin)


def create_ban():
    x=randint(bw,W-bw)
    y=H
    for i in range(len(bs)):
        if not bs[i]:
            bs[i]=[x,y]
            break
    win.after(2000,create_ban)

def move_ban():
    global x0,y0
    for i in range(len(bs)):
        e=bs[i]
        if e:
            x,y=e
            y-=5
            if y<0:
                bs[i]=None
            else:
                bs[i]=[x,y]

    t=False
    for e in bs:
        if e:
            x,y=e
            if x-bw<x0<x+bw and y-bh-1.5*mr<y0<y+bh+1.5*mr:
                y0=y-bh-mr
                t=True
                break
    if not t:
        y0+=10
                
    if y0<0 or y0>H:
        messagebox.showinfo('Game Over','游戏结束')
        x0=200
        y0=100
        for i in range(len(bs)):
            bs[i]=None
        
    win.after(50,move_ban)

win.bind('<KeyPress>',keyPress)
win.bind('<KeyRelease>',keyUp)

patin()
create_ban()
move_ban()
move_me()

win.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值