It is really time consuming reading your code. And thus its hard to spot the problem. For example there should be no self.x or self.y if you are using rects. Pygame rects contain that data. You should be using rects for positioning and collision. You should never have to have a list such as Pos.
I also have no idea what this is suppose to be.
As a side note:
also you do not need to load the same image more than once. Its a waste of resources and redundant coding. Check here for a title of rotation.
I also have no idea what this is suppose to be.
Quote:Any pygame image can return a rect of its size. You can do this with the charactes as well as the weapons.def getWeapRect(self): if self.weaponPos != None: if self.direct == 'Left': return self.weaponPos[0], self.weaponPos[1], self.weaponPos[0] + 50, self.weaponPos[1] + 20 if self.direct == 'Right': return self.weaponPos[0], self.weaponPos[1], self.weaponPos[0] + 50, self.weaponPos[1] + 20 if self.direct == 'Up': return self.weaponPos[0], self.weaponPos[1], self.weaponPos[0] + 20, self.weaponPos[1] + 50 if self.direct == 'Down': return self.weaponPos[0], self.weaponPos[1], self.weaponPos[0] + 20, self.weaponPos[1] + 50
image = pygame.image.load(IMAGE_NAME).convert() image_rect = image.get_rect()and can draw that too
screen.blit(image, image_rect)and of course collision:
if image_rect.colliderect(enemy.weapon.rect)Because you have assigned the rect yourself, I am assuming you messed the math up somewhere. That is why pygame has these methods. To simplify it. I would suggest you reread different pygame tutorials other than sentdex because his are pretty bad.
As a side note:
Quote:You can do this with the screen itself tooif self.x >= 0 and self.x + self.width <= width and self.y >= 0 and self.y + self.height <= height: if keyed[pygame.K_LEFT] or keyed[pygame.K_a]: self.x -= 1 self.direct = 'Left' if keyed[pygame.K_RIGHT] or keyed[pygame.K_d]: self.x += 1 self.direct = 'Right' if keyed[pygame.K_UP] or keyed[pygame.K_w]: self.y -= 1 self.direct = 'Up' if keyed[pygame.K_DOWN] or keyed[pygame.K_s]: self.y += 1 self.direct = 'Down'
screen = display.set_mode((800,600)) screen_rect = screen.get_rect()to check collision with the side of the screen and make adjustments.
also you do not need to load the same image more than once. Its a waste of resources and redundant coding. Check here for a title of rotation.
Recommended Tutorials: