下面这个是我的部分代码,我创建的是一个1000*800的窗口,我的想法是:让四个矩形在这个窗口中碰撞,但是我的碰撞程序好像写挂了,请问能帮我调一下吗?谢谢!
## 其中`sfx[i]` , `sfy[i]`表示第i个矩形左上角的`x`和`y`坐标 ;`sfx[i]+len(name[i])*30`和`sfy[j]+40`表示的是第i个矩形右下角的`xy`坐标
## `ffx[i]`和`ffy[i]`表示第`i`个矩形的偏移值,相当于每次`sfx[i]+=ffx[i];sfy[i]+=ffy[i];`
## sc是窗口名字,tupdate()是用来更新四个矩形的位置和屏幕的。
while 1:
sc.fill((212,212,212))
tupdate()
for i in range(len(name)):
for j in range(i+1,len(name)):
if(i==j):
continue
if(sfx[i]-1<=sfx[j] and sfx[i]+1>=sfx[j]):
if(sfy[i]<=sfy[j]<=sfy[i]+40 or sfy[i]<=sfy[j]+40<=sfy[i]+40):
ffy[i]=-ffy[i]
ffy[j]=-ffy[j]
if(sfy[i]-1<=sfy[j] and sfy[i]+1>=sfy[j]):
if(sfx[i]<=sfx[j]<= sfx[i]+len(name[i])*30 or sfx[i]<=sfx[j]+len(name[j])*30<=sfx[i]+len(name[i])*30):
ffx[i]=-ffx[i]
ffx[j]=-ffx[j]
if(sfx[i]+len(name[i])*30-1<=sfx[j]+len(name[j])*30 and sfx[i]+len(name[i])*30+1>=sfx[j]+len(name[j])*30):
if(sfy[i]<=sfy[j]<=sfy[i]+40 or sfy[i]<=sfy[j]+40<=sfy[i]+40):
ffy[i]=-ffy[i]
ffy[j]=-ffy[j]
if(sfy[i]+40-1<=sfy[j]+40 and sfy[i]+40+1>=sfy[j]+40):
if(sfx[i]<=sfx[j]<= sfx[i]+len(name[i])*30 or sfx[i]<=sfx[j]+len(name[j])*30<=sfx[i]+len(name[i])*30):
ffx[i]=-ffx[i]
ffx[j]=-ffx[j]
if(sfx[i]<=0 or sfx[i]+len(name[i])*30>1000):
ffx[i]=-ffx[i]
if(sfy[i]<=0 or sfy[i]+40>800):
ffy[i]=-ffy[i]
请问这份代码要怎么改?