关于pygame的问题
  • 板块灌水区
  • 楼主lovely_ctj
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/7/17 20:46
  • 上次更新2023/11/3 09:15:20
查看原帖
关于pygame的问题
686399
lovely_ctj楼主2023/7/17 20:46

下面这个是我的部分代码,我创建的是一个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]
   
2023/7/17 20:46
加载中...