classPlayer(pygame.sprite.Sprite):""" This class represents the character you play as """def__init__(self,x,y):""" Constructor function """# Call the parent's constructorsuper().__init__()self.change_x=0self.change_y=0self.walking_frames_l=[]self.walking_frames_r=[]self.walking_frames_u=[]self.walking_frames_d=[]self.direction="R"sprite_sheet=SpriteSheet("character.png")image=sprite_sheet.get_image(1,6,15,22)self.walking_frames_d.append(image)image=sprite_sheet.get_image(17,6,15,22)self.walking_frames_d.append(image)image=sprite_sheet.get_image(33,6,15,22)self.walking_frames_d.append(image)image=sprite_sheet.get_image(49,6,15,22)self.walking_frames_d.append(image)image=sprite_sheet.get_image(0,69,15,23)self.walking_frames_u.append(image)image=sprite_sheet.get_image(16,69,15,23)self.walking_frames_u.append(image)image=sprite_sheet.get_image(32,69,15,23)self.walking_frames_u.append(image)image=sprite_sheet.get_image(48,69,15,23)self.walking_frames_u.append(image)image=sprite_sheet.get_image(2,38,13,22)self.walking_frames_r.append(image)image=sprite_sheet.get_image(18,38,13,22)self.walking_frames_r.append(image)image=sprite_sheet.get_image(34,38,13,22)self.walking_frames_r.append(image)image=sprite_sheet.get_image(50,38,13,22)self.walking_frames_r.append(image)image=sprite_sheet.get_image(1,102,13,22)self.walking_frames_l.append(image)image=sprite_sheet.get_image(17,102,13,22)self.walking_frames_l.append(image)image=sprite_sheet.get_image(33,102,13,22)self.walking_frames_l.append(image)image=sprite_sheet.get_image(49,102,13,22)self.walking_frames_l.append(image)self.image=self.walking_frames_r[0]self.rect=self.image.get_rect()self.rect.y=y
self.rect.x=xdefmove(self,walls):""" Moves player """# Move left/rightself.change_x=0pos=self.rect.x
keystate=pygame.key.get_pressed()ifkeystate[pygame.K_a]:self.change_x=-8self.direction="L"ifkeystate[pygame.K_d]:self.change_x=8self.direction="R"self.rect.x+=self.change_xifself.direction=="R":frame=(pos//30)%len(self.walking_frames_r)self.image=self.walking_frames_r[frame]else:frame=(pos//30)%len(self.walking_frames_l)self.image=self.walking_frames_l[frame]# Did this update cause us to hit a wall?block_hit_list=pygame.sprite.spritecollide(self,walls,False)forblockinblock_hit_list:# If we are moving right, set our right side to the left side of# the item we hitifself.change_x>0:self.rect.right=block.rect.leftelse:# Otherwise if we are moving left, do the opposite.self.rect.left=block.rect.right# Move up/downself.change_y=0pos=self.rect.y
keystate=pygame.key.get_pressed()ifkeystate[pygame.K_w]:self.change_y=-8self.direction="U"ifkeystate[pygame.K_s]:self.change_y=8self.direction="D"self.rect.y+=self.change_yifself.direction=="D":frame=(pos//30)%len(self.walking_frames_d)self.image=self.walking_frames_d[frame]else:frame=(pos//30)%len(self.walking_frames_u)self.image=self.walking_frames_u[frame]# Check and see if we hit anythingblock_hit_list=pygame.sprite.spritecollide(self,walls,False)forblockinblock_hit_list:# Reset our position based on the top/bottom of the object.ifself.change_y>0:self.rect.bottom=block.rect.topelse:self.rect.top=block.rect.bottom