乒乓球游戏 tkinter 球与桨问题的碰撞

时间:2021-03-13 02:23:01

标签: python python-3.x tkinter pong

有谁知道如果球不碰到球拍,我怎样才能让球离开屏幕?

这是我遇到的问题:

(1126, 555)
[1126, 555]
False

    print(zip(indices[0], indices[1]))
IndexError: invalid index to scalar variable.

完整代码如下:

# intersection avec les raquettes
    elif newX<= hit1:
      newX=balle[0]
      balle[2]*=-1

1 个答案:

答案 0 :(得分:1)

删除这个 if 语句:

if newX<0 or newX>=myWidth:    
       newX=balle[0]
       balle[2]*=-1

这是不允许球出垂直墙的部分

并将您的 miseAJourBalle 函数替换为:

def miseAJourBalle():
    # calcul de la nouvelle position
    newX=balle[0]+balle[2]
    newY=balle[1]+balle[3]
    hit1=raquette1[0]+raquette1[4]
    hit2=raquette2[1]+raquette2[5]
    
    if newY<0 or newY>=myHeight:
        newY=balle[1]
        balle[3]*=-1

    # intersection avec les raquettes

    bbox1 = myCanvas.bbox(raquette1[6])
    bbox2 = myCanvas.bbox(raquette2[6])
        
    if newX <= bbox1[2] and (newY>bbox1[1] and newY<bbox1[3]):
        newX=balle[0]
        balle[2]*=-1  

    if newX >= bbox2[0] and (newY>bbox2[1] and newY<bbox2[3]):
        newX=balle[0]
        balle[2]*=-1  

    # mise a jour des coordonnees
    balle[0]=newX
    balle[1]=newY
    # mise a jour de l'element graphique
    myCanvas.coords(balle[5],\
                    balle[0]-balle[4],balle[1]-balle[4],\
                    balle[0]+balle[4],balle[1]+balle[4])

bbox 将返回一个描述矩形边界框的元组,用于检查球是否击中了矩形。

此外,下次您发布问题时,请考虑在函数名称旁边添加英文注释,以便我们可以轻松了解每个函数的作用。翻译应用程序并不总是提供正确的翻译

相关问题