Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中阻止正方形移动,使其可以反向移动? 从tkinter导入* 从随机导入* 不定期进口* tk=tk() 宽度=1350 高度=700 画布=画布(tk,宽度=宽度,高度=高度) canvas.pack() color=“蓝色” 触地=假_Python_Tkinter - Fatal编程技术网

如何在python中阻止正方形移动,使其可以反向移动? 从tkinter导入* 从随机导入* 不定期进口* tk=tk() 宽度=1350 高度=700 画布=画布(tk,宽度=宽度,高度=高度) canvas.pack() color=“蓝色” 触地=假

如何在python中阻止正方形移动,使其可以反向移动? 从tkinter导入* 从随机导入* 不定期进口* tk=tk() 宽度=1350 高度=700 画布=画布(tk,宽度=宽度,高度=高度) canvas.pack() color=“蓝色” 触地=假,python,tkinter,Python,Tkinter,如何在python中阻止正方形移动,使其可以反向移动? 从tkinter导入* 从随机导入* 不定期进口* tk=tk() 宽度=1350 高度=700 画布=画布(tk,宽度=宽度,高度=高度) canvas.pack() color=“蓝色” 触地=假 xspeed=0 Y速度=0 def jump(): 全球触地,yspeed,xspeed 如果接触地面==真: Y速度=-1.2 bind(“,lambda x:jump()) def goright(): 全球触地,yspeed,xspe

如何在python中阻止正方形移动,使其可以反向移动?
从tkinter导入*
从随机导入*
不定期进口*
tk=tk()
宽度=1350
高度=700
画布=画布(tk,宽度=宽度,高度=高度)
canvas.pack()
color=“蓝色”
触地=假
xspeed=0
Y速度=0
def jump():
全球触地,yspeed,xspeed
如果接触地面==真:
Y速度=-1.2
bind(“,lambda x:jump())
def goright():
全球触地,yspeed,xspeed
如果xspeed=-7:
xspeed=xspeed-1
bind(“,lambda x:goright())
bind(“,lambda x:goleft())
player=canvas.create_矩形(200,0210,10,fill=“red”)
xspeed=0
Y速度=0
thebox1=canvas.create_矩形(200650520700,fill=“black”)
尽管如此:
canvas.move(player、xspeed、yspeed)
tk.update()
睡眠(0.01)
pos=canvas.coords(播放器)
如果xspeed>0:
xspeed=round(xspeed-0.2)
elif xspeed=高度:
触地=真
画布移动(玩家,0,-0.1)
Y速度=0
其他:
触地=假
yspeed=yspeed+0.01
如果位置[0]>=1350:
画布移动(玩家,-1350,0)

如果位置[2],当它接触地面时,您已经有代码来执行某些操作。为什么不使用相同的方法来检测它何时接触画布任意边缘的“不可见”对象?或者只是检查对象X位置是否大于宽度或小于0?顺便说一句,使用while循环不是一个好主意。考虑使用<代码>周期性地调用<代码>更新>代码>函数。< <代码>方法>代码>tk.after(100,更新)
。更新函数将是while循环的内容减去
sleep
Update
函数调用。
from tkinter import *
from random import *
from time import *
tk=Tk()
WIDTH=1350
HEIGHT=700
canvas=Canvas(tk,width=WIDTH,height=HEIGHT)
canvas.pack()
color="blue"
touchingground=False
xspeed=0
yspeed=0
def jump():
    global touchingground,yspeed,xspeed
    if touchingground==True:
        yspeed=-1.2
tk.bind("<w>",lambda x: jump())
def goright():
    global touchingground,yspeed,xspeed
    if xspeed<=7:
        xspeed=xspeed+1
def goleft():
    global touchingground,yspeed,xspeed
    if xspeed>=-7:
        xspeed=xspeed-1
tk.bind("<d>",lambda x: goright())
tk.bind("<a>",lambda x: goleft())
player=canvas.create_rectangle(200,0,210,10,fill="red")
xspeed=0
yspeed=0
thebox1=canvas.create_rectangle(200,650,520,700,fill="black")
while True:
    canvas.move(player,xspeed,yspeed)
    tk.update()
    sleep(0.01)
    pos=canvas.coords(player)
    if xspeed>0:
        xspeed=round(xspeed-0.2)
    elif xspeed<0:
        xspeed=round(xspeed+0.2)
    if pos[3]>=HEIGHT:
        touchingground=True
        canvas.move(player,0,-0.1)
        yspeed=0
    else:
        touchingground=False
        yspeed=yspeed+0.01
    if pos[0]>=1350:
        canvas.move(player,-1350,0)
    if pos[2]<=0:
        canvas.move(player,1350,0)
    if canvas.find_overlapping(200,639,520,700)==(1,2):
        xspeed=-xspeed
    if canvas.find_overlapping(200,649,520,700)==(1,2):
        touchingground=True
        canvas.move(player,0,-0.1)
        yspeed=0
tk.mainloop()