Лучше использовать <=
и >=
вместо ==
.
Если он имеет (случайно) позицию 19
и затем переместится на 9
, то 9 == 10
не остановит его, но 9 <= 10
остановит.
Вы даже можете переместить его обратно в положение 10
, когда оно имеет положение 9
if keystate[pygame.K_LEFT]:
self.speedx = - 10
if self.rect.left <= 10: # <= instead of ==
self.rect.left = 10: # move it back
self.speedx = 0
if keystate[pygame.K_RIGHT]:
self.speedx = 10
if self.rect.right >= WIDTH - 10: # >= instead of ==
self.rect.right = WIDTH - 10: # move it back
self.speedx = 0
if keystate[pygame.K_UP]:
self.speedy = - 10
if self.rect.top <= 10: # <= instead of ==
self.rect.top = 10: # move it back
self.speedy = 0
if keystate[pygame.K_DOWN]:
self.speedy = 10
if self.rect.bottom >= HEIGTH - 50: # >= instead of ==
self.rect.bottom = HEIGTH - 50: # move it back
self.speedy = 0