Python 提高对象移动时的速度(Tkinter)

Python 提高对象移动时的速度(Tkinter),python,python-3.x,tkinter,tkinter-canvas,flappy-bird-clone,Python,Python 3.x,Tkinter,Tkinter Canvas,Flappy Bird Clone,我还在编写我的Flappy Bird游戏,现在开始“调试”部分 为此,我修复了一些问题,比如没有出现的分数文本,我甚至自定义了图标以及窗口的名称(很少注意细节)。 除了我必须纠正一个很不幸的细节外,这只鸟下落的速度太慢了。 因此,玩家不可能实现位移,尤其是当鸟从一对非常高的管道移动到一对非常低的管道时。 然而,鸟的跳跃是完美的,我当然不想改变它们 这是合乎逻辑的,我增加了下降的速度,因为它下降,但没有做什么,我用了各种方法来编程,这个增加的速度,但他们还没有完成。例如,我试着打破鸟的运动,但它没

我还在编写我的Flappy Bird游戏,现在开始“调试”部分 为此,我修复了一些问题,比如没有出现的分数文本,我甚至自定义了图标以及窗口的名称(很少注意细节)。 除了我必须纠正一个很不幸的细节外,这只鸟下落的速度太慢了。 因此,玩家不可能实现位移,尤其是当鸟从一对非常高的管道移动到一对非常低的管道时。 然而,鸟的跳跃是完美的,我当然不想改变它们

这是合乎逻辑的,我增加了下降的速度,因为它下降,但没有做什么,我用了各种方法来编程,这个增加的速度,但他们还没有完成。例如,我试着打破鸟的运动,但它没有改变任何东西。 我知道我没有什么经验,但我认为我能够,而且我在网上找不到类似的话题

为了让你帮助我,我已经将我的程序缩减到了严格的最低限度,并且只有游戏对象的移动,我知道我在这周向你请求了太多的帮助,我很抱歉,但我保证,在这次调整之后,你再也见不到我了

从tkinter导入*
随机输入
从随机导入randint
def sauter(事件):
canvas.move(图像_oiseau,0,-10*DY)
def deplacement():
全球运动
全局tuyx,tuyx2,h,h,oisx,oisy,solx,sol2x,分数,暂停
x0,y0,x1,y1=canvas.bbox(图像)
canvas.move(图像_oiseau,0,DY)
canvas.coords(image_sol,solx,512)
如果solx>=-144:
solx=solx-5
其他:
solx=144
canvas.coords(image_sol2,sol2x,512)
如果sol2x>=144:
sol2x=sol2x-5
其他:
sol2x=432
canvas.coords(图为tuyx tuyau haut,h)
画布。坐标(图伊克斯图尤巴斯图片,h-379.8)
如果tuyx>=-28:
tuyx=tuyx-5
其他:
tuyx=316
h=randint(272523)
canvas.coords(图2,图2,H)
canvas.coords(图_tuyau_bas2,tuyx2,H-379.8)
如果tuyx2>=-28:
tuyx2=tuyx2-5
其他:
tuyx2=316
H=randint(272523)
帆布。之后(40,移位)
拉格乌尔=286
傲慢=510
DY=5
tuyx=316
tuyx2=488
h=randint(272523)
H=randint(272523)
oisx=67
oisy=244
solx=144
sol2x=432
fenetre=Tk()
画布=画布(宽度=大,高度=傲慢)
fond=PhotoImage(file=“background day.png”)
fond2=PhotoImage(file=“background night.png”)
fond=[fond,fond2]
F=随机选择(fond)
canvas.create_image(144256,锚点=中心,image=F)
tuyau_haut=PhotoImage(file=“tuyau_vers_le_haut.png”)
image\u tuyau\u haut=canvas.create\u image(tuyx,h,anchor=CENTER,image=tuyau\u haut)
image\u tuyau\u haut2=画布。创建图像(tuyx2,H,锚点=中心,图像=tuyau\u haut)
tuyau_bas=PhotoImage(file=“tuyau_vers_le_bas.png”)
image\u tuyau\u bas=画布。创建图像(tuyx,h,anchor=CENTER,image=tuyau\u bas)
image\u tuyau\u bas2=画布。创建图像(tuyx2,H,anchor=CENTER,image=tuyau\u bas)
sol=PhotoImage(file=“sol day.png”)
image\u sol=canvas.create\u image(144512,anchor=S,image=sol)
image\u sol2=canvas.create\u image(432512,anchor=S,image=sol)
oiseau=PhotoImage(file=“yellowbird midflap.png”)
oiseau2=PhotoImage(file=“bluebird midflap.png”)
oiseau3=PhotoImage(file=“redbird midflap.png”)
oiseau=[oiseau,oiseau2,oiseau3]
O=随机选择(oiseau)
image\u oiseau=canvas.create\u image(oisx,oisy,anchor=W,image=O)
canvas.pack()
canvas.focus_set()
撤职
canvas.bind(“,sauter)
fenetre.mainloop()

若要增加向下速度,必须增加
DY
,它当前固定在
5
;但是,您也在sauter方法中使用了
DY
,希望保持其完整性

我建议添加一个变量
DY_fall
,并将其设置为比当前
DY
更大的值;这样,您就不需要修改
sauter

您需要:

使用所需的值初始化
DY_fall

在移动中更改鸟的移动,以使用
DY_fall

canvas.move(image\u oiseau,0,DY\u fall)

[编辑]:

我添加了一个变量
GRAVITY
,它可以增加向下下落的速度,而不会干扰
sauter
功能

这需要添加另一个变量,
dy_fall
,该变量随着重力加速度的增加而增加,只要鸟落下。每次鸟“跳跃”时,该值将重置为默认值

你需要调整数值以获得一个流畅的游戏,但我认为它应该按照你的意愿运行

from tkinter import *
import random
from random import randint


def sauter(event):
    global dy_fall
    dy_fall = DY_fall
    canvas.move(image_oiseau, 0, -10*DY)

def deplacement():
    global mouvement, dy_fall
    global tuyx,tuyx2,h,H,oisx,oisy,solx,sol2x,score,pause

    x0, y0, x1, y1 = canvas.bbox(image_oiseau)

    canvas.move(image_oiseau, 0, dy_fall)
    dy_fall *= GRAVITY

    canvas.coords(image_sol,solx,512)
    if solx >= -144:
        solx=solx-5
    else:
        solx=144

    canvas.coords(image_sol2,sol2x,512)
    if sol2x >= 144:
        sol2x=sol2x-5
    else:
        sol2x=432

    canvas.coords(image_tuyau_haut,tuyx,h)
    canvas.coords(image_tuyau_bas,tuyx,h-379.8)
    if tuyx>=-28:
        tuyx=tuyx-5
    else:
        tuyx=316
        h=randint(272,523)

    canvas.coords(image_tuyau_haut2,tuyx2,H)
    canvas.coords(image_tuyau_bas2,tuyx2,H-379.8)
    if tuyx2>=-28:
        tuyx2=tuyx2-5
    else:
        tuyx2=316
        H=randint(272,523)
    canvas.after(100, deplacement)

LARGEUR = 286
HAUTEUR = 510
DY = 5
dy_fall = DY_fall = 5
GRAVITY = 1.5
tuyx=316
tuyx2=488
h=randint(272,523)
H=randint(272,523)
oisx=67
oisy=244
solx=144
sol2x=432



fenetre = Tk()

canvas = Canvas(fenetre, width=LARGEUR, height=HAUTEUR)

fond = PhotoImage(file="background-day.png")
fond2 = PhotoImage(file="background-night.png")
fond=[fond,fond2]
F= random.choice(fond)
canvas.create_image(144,256, anchor=CENTER,image=F)

tuyau_haut = PhotoImage(file="tuyau_vers_le_haut.png")
image_tuyau_haut = canvas.create_image(tuyx,h,anchor=CENTER,image=tuyau_haut)
image_tuyau_haut2 = canvas.create_image(tuyx2,H,anchor=CENTER,image=tuyau_haut)

tuyau_bas = PhotoImage(file="tuyau_vers_le_bas.png")
image_tuyau_bas = canvas.create_image(tuyx,h,anchor=CENTER,image=tuyau_bas)
image_tuyau_bas2 = canvas.create_image(tuyx2,H,anchor=CENTER,image=tuyau_bas)

sol = PhotoImage(file="sol-day.png")
image_sol = canvas.create_image(144,512, anchor=S,image=sol)
image_sol2 = canvas.create_image(432,512, anchor=S,image=sol)

oiseau = PhotoImage(file="yellowbird-midflap.png")
oiseau2 = PhotoImage(file="bluebird-midflap.png")
oiseau3 = PhotoImage(file="redbird-midflap.png")
oiseau=[oiseau,oiseau2,oiseau3]
O=random.choice(oiseau)
image_oiseau=canvas.create_image(oisx,oisy, anchor=W,image=O)

canvas.pack()
canvas.focus_set()

deplacement()
canvas.bind("<space>",sauter)

fenetre.mainloop()
从tkinter导入*
随机输入
从随机导入randint
def sauter(事件):
全球迪尤瀑布
迪尤法尔=迪尤法尔
canvas.move(图像_oiseau,0,-10*DY)
def deplacement():
全球运动,迪尤瀑布
全局tuyx,tuyx2,h,h,oisx,oisy,solx,sol2x,分数,暂停
x0,y0,x1,y1=canvas.bbox(图像)
画布。移动(图像_oiseau,0,dy_fall)
落差*=重力
canvas.coords(image_sol,solx,512)
如果solx>=-144:
solx=solx-5
其他:
solx=144
canvas.coords(image_sol2,sol2x,512)
如果sol2x>=144:
sol2x=sol2x-5
其他:
sol2x=432
canvas.coords(图为tuyx tuyau haut,h)
画布。坐标(图伊克斯图尤巴斯图片,h-379.8)
如果tuyx>=-28:
tuyx=tuyx-5
其他:
tuyx=316
h=randint(272523)
canvas.coords(图2,图2,H)
canvas.coords(图_tuyau_bas2,tuyx2,H-379.8)
如果tuyx2>=-28:
tuyx2=tuyx2-5
其他:
tuyx2=316
H=randint(272523)
帆布。之后(100,移位)
拉格乌尔=286
傲慢=510
DY=5
迪尤法尔=迪尤法尔=5
重力=1.5
tuyx=316
tuyx2=488
h=randint(272523)
H=randint(272523)
oisx=67
oisy=244
solx=144
sol2x=432
fenetre=Tk()
画布=画布(宽度=大,高
from tkinter import *
import random
from random import randint


def sauter(event):
    global dy_fall
    dy_fall = DY_fall
    canvas.move(image_oiseau, 0, -10*DY)

def deplacement():
    global mouvement, dy_fall
    global tuyx,tuyx2,h,H,oisx,oisy,solx,sol2x,score,pause

    x0, y0, x1, y1 = canvas.bbox(image_oiseau)

    canvas.move(image_oiseau, 0, dy_fall)
    dy_fall *= GRAVITY

    canvas.coords(image_sol,solx,512)
    if solx >= -144:
        solx=solx-5
    else:
        solx=144

    canvas.coords(image_sol2,sol2x,512)
    if sol2x >= 144:
        sol2x=sol2x-5
    else:
        sol2x=432

    canvas.coords(image_tuyau_haut,tuyx,h)
    canvas.coords(image_tuyau_bas,tuyx,h-379.8)
    if tuyx>=-28:
        tuyx=tuyx-5
    else:
        tuyx=316
        h=randint(272,523)

    canvas.coords(image_tuyau_haut2,tuyx2,H)
    canvas.coords(image_tuyau_bas2,tuyx2,H-379.8)
    if tuyx2>=-28:
        tuyx2=tuyx2-5
    else:
        tuyx2=316
        H=randint(272,523)
    canvas.after(100, deplacement)

LARGEUR = 286
HAUTEUR = 510
DY = 5
dy_fall = DY_fall = 5
GRAVITY = 1.5
tuyx=316
tuyx2=488
h=randint(272,523)
H=randint(272,523)
oisx=67
oisy=244
solx=144
sol2x=432



fenetre = Tk()

canvas = Canvas(fenetre, width=LARGEUR, height=HAUTEUR)

fond = PhotoImage(file="background-day.png")
fond2 = PhotoImage(file="background-night.png")
fond=[fond,fond2]
F= random.choice(fond)
canvas.create_image(144,256, anchor=CENTER,image=F)

tuyau_haut = PhotoImage(file="tuyau_vers_le_haut.png")
image_tuyau_haut = canvas.create_image(tuyx,h,anchor=CENTER,image=tuyau_haut)
image_tuyau_haut2 = canvas.create_image(tuyx2,H,anchor=CENTER,image=tuyau_haut)

tuyau_bas = PhotoImage(file="tuyau_vers_le_bas.png")
image_tuyau_bas = canvas.create_image(tuyx,h,anchor=CENTER,image=tuyau_bas)
image_tuyau_bas2 = canvas.create_image(tuyx2,H,anchor=CENTER,image=tuyau_bas)

sol = PhotoImage(file="sol-day.png")
image_sol = canvas.create_image(144,512, anchor=S,image=sol)
image_sol2 = canvas.create_image(432,512, anchor=S,image=sol)

oiseau = PhotoImage(file="yellowbird-midflap.png")
oiseau2 = PhotoImage(file="bluebird-midflap.png")
oiseau3 = PhotoImage(file="redbird-midflap.png")
oiseau=[oiseau,oiseau2,oiseau3]
O=random.choice(oiseau)
image_oiseau=canvas.create_image(oisx,oisy, anchor=W,image=O)

canvas.pack()
canvas.focus_set()

deplacement()
canvas.bind("<space>",sauter)

fenetre.mainloop()