Advertisement
boris-vlasenko

Проверка попадания блока в блок 3

Feb 15th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1.     def hittest(self,objects):
  2.         for item in objects:
  3.             nx1 = item.x1+item.vx
  4.             nx2 = item.x2+item.vx
  5.             ny1 = item.y1+item.vy
  6.             ny2 = item.y2+item.vy
  7.  
  8.             nxx1 = self.x1+self.vx
  9.             nxx2 = self.x2+self.vx
  10.             nyy1 = self.y1+self.vy
  11.             nyy2 = self.y2+self.vy
  12.  
  13.             if rectInRect(nx1,ny1,nx2,ny2,nxx1,nyy1,nxx2,nyy2):
  14.                 item.r = (item.centery-padding)//m
  15.                 item.c = (item.centerx-padding)//m
  16.                 self.r = (self.centery-padding)//m
  17.                 self.c = (self.centerx-padding)//m
  18.                 dr = item.r - self.r
  19.                 dc = item.c - self.c
  20.                 if dr == 0:
  21.                     if dc > 0:
  22.                         return 'right'
  23.                     elif dc < 0:
  24.                         return 'left'
  25.                     else:
  26.                         if item.centery > self.centery:
  27.                             return 'down'
  28.                         else:
  29.                             return 'up'
  30.                 elif dr < 0:
  31.                     if dc == 0:
  32.                         return 'up'
  33.                     elif dc < 0:
  34.                         return 'up' # угол
  35.                     elif dc > 0:
  36.                         return 'up'
  37.                 elif dr > 0:
  38.                     if dc == 0:
  39.                         return 'down'
  40.                     elif dc < 0:
  41.                         return 'down' # угол
  42.                     elif dc > 0:
  43.                         return 'down'
  44.  
  45.         return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement