Python Turtle Pong游戏球和桨碰撞

问题描述

  smtp_obj.sendmail(user_name,receiver.split(","),m.as_string())
  File "/usr/lib/python3.6/smtplib.py",line 888,in sendmail
    raise SMTPDataError(code,resp)
smtplib.SMTPDataError: (432,b'4.2.0 STOREDRV.Submission.Exception:MailBoxCrossSiteFailoverException.MapiExceptionMdbOffline; Failed to process message due to a transient exception with message Cannot submit message. 0.35250:0A007581,1.36674:01000000,1.61250:00000000,1.45378:02000000,1.44866:00000000,1.36674:7A000000,1.45378:05000000,1.44866:00140000,1.36674:0A000000,1.45378:16000000,1.44866:30330000,1.36674:0E000000,1.45378:49330000,1.44866:0E0C0000,1.45378:5A3F0000,1.44866:02160000,16.55847:941E0000,17.43559:0000000036020000000000000100000000000000,20.52176:140FFE8C11000000472C0000,20.50032:140FFE8C811770200201E265,0.35180:4C2C0000,255.23226:35000000,255.27962:7A000000,255.27962:0A000000,255.27962:0E000000,255.31418:AE2C0000,0.35250:53000000,1.44866:4E000000,1.36674:32000000,1.45378:53000000,1.44866:01000000,16.55847:BA000000,17.43559:7604000032030000000000000500000000000000,4.32881:76040000,0.50035:F32C0000,4.64625:76040000,20.52176:140FFE8C11000000242D0000,20.50032:140FFE8C811770200A004066,0.50128:552D0000,255.1494:82000000,0.38698:05000780,0.37692:01000000,0.37948:32433644,5.33852:00000000534D545000000100,0.62316:02FEFFFF,7.36354:010000000000010905000780,7.40748:010000000000010B02000000,7.57132:000000000000000007000000,4.62354:02FEFFFF,1.47326:E0B70000,0.47072:00000000,2.63456:9ADA0000,1.38714:03000000,8.41344:C822AB9BF431AD4BACA7226BAE2DC0C300000000,1.35200:A8590200,4.64456:76040000,0.50784:00000000,0.61042:05000780,1.55954:0A000000,0.49266:02000000,1.33010:0A000000,2.54258:00000000,0.40002:7A000000,1.56562:00000000,1.64146:32000000,255.1750:B9000000,0.50288:0A005636,4.23354:76040000,0.35180:BE000000,0.25913:0A006136,255.21817:76040000,0.64418:C3000000,4.39842:76040000,0.41586:842F0000,4.60547:76040000,0.21966:03000336,4.30158:76040000 [Hostname=##########.########.####.outlook.com]')

有人可以向我解释这段代码的第一行吗?为什么使用-40和+40

解决方法

有人可以向我解释一下此代码的第一行吗?为什么-40和 +40已使用

ball.ycor()paddle_b.ycor()都是点。但是,桨板本身是某种80像素高的矩形实体。因此,我们需要确定作为球垂直中心的点是否位于桨的任何部分上:

and (ball.ycor() < paddle_b.ycor() + 40 and ball.ycor() > paddle_b.ycor() -40)

一种更惯用的写法可能是:

and paddle_b.ycor() -40 < ball.ycor() < paddle_b.ycor() + 40

enter image description here

类似地,球的水平位置:

(ball.xcor() > 340 and ball.xcor() < 350)

或:

340 < ball.xcor() < 350

我们不需要考虑桨的当前水平位置,因为它不会水平移动-相对于X轴处于固定位置。