所以我试图用Python在画布上创建一个砖块破坏游戏,我做了一个矩形条,这样球就会碰撞它并反弹回来,问题很简单,我找不到任何 互联网上的解决方案是:我的矩形在按“a”或“d”键时会向左移动 分别是和右,但当它们到达边缘时,我编写了应该停止的代码 它可以进一步移动,但在按画布边缘的“a”或“d”时我的矩形仍然移动,所以请查看我的代码并帮助我,请给我一个方法 这将帮助我学习画布中的碰撞概念。
代码--
import tkinter as tk
from tkinter import *
import time
score = 0
def left(event):
if paddle_coordinates[0] <= 0 or paddle_coordinates[2] >= 750: # this is not working
canvas.move(paddle, 0,0)
else:
canvas.move(paddle, -10,0)
def right(event):
if paddle_coordinates[0] <= 0 or paddle_coordinates[2] >= 750: # and this one also
canvas.move(paddle, 0, 0)
else:
canvas.move(paddle, 10,0)
window = tk.Tk()
window.title('Game')
window.geometry('800x600+265+50')
score_label = Label(window, font = ('consolas',40), text = 'Score : {}'.format(score))
score_label.pack(side = 'top')
canvas = Canvas(window, width = 750, height = 550, bg = 'black')
canvas.pack(padx = 25, pady = 25)
paddle = canvas.create_rectangle(10,400,110,405, fill = 'white')
window.bind('<a>',left)
window.bind('<d>',right)
paddle_coordinates = canvas.coords(paddle)
window.mainloop()
您需要检查实时坐标,而不是启动时保存的副本:
def left(event):
if canvas.coords(paddle)[0] > 0:
canvas.move(paddle, -10,0)
def right(event):
if canvas.coords(paddle)[2] <= 750:
canvas.move(paddle, 10,0)