0
import pygame, sys
start = True
class Player(pygame.sprite.Sprite):
    def __init__(self, pos_x, pos_y):
        super().__init__()
        self.attack_animation = False
        self.sprites_1 = []
        self.sprites_1.append(pygame.image.load('crossHair.png'))
        self.sprites_1.append(pygame.image.load('crossHair_2.png'))
        self.sprites_1.append(pygame.image.load('crossHair_3.png'))
        self.sprites_1.append(pygame.image.load('crossHair_4.png'))
        self.sprites_1.append(pygame.image.load('crossHair_5.png'))
        self.sprites_1.append(pygame.image.load('FIRE.png'))
        self.current_sprite = 0
        self.image = self.sprites_1[self.current_sprite]
        self.image.set_colorkey('white')
        for items in self.sprites_1:
            items.set_colorkey('white')
        self.rect = self.image.get_rect()
        self.rect.topleft = [pos_x,pos_y]
# enimy starts here 
        self.enimy = []
        self.enimy.append(self.sprites_1.append(pygame.image.load('FIRE.png')))
        self.image_enimy = self.enimy[0]
        self.rect = self.image.get_rect()
        self.rect.topleft = [pos_x,pos_y]
# enimy ends here 
        

    def attack(self):
        self.attack_animation = True
        self.image.set_colorkey('white')

        def set_pos(self,pos_x, pos_y):
            self.rect.topleft = (pos_x, pos_y)

    def update(self,speed):
        self.image.set_colorkey('white')
        if self.attack_animation == True:
            self.current_sprite += speed
            if int(self.current_sprite) >= len(self.sprites_1):
                self.current_sprite = 0
                self.attack_animation = False
            self.image = self.sprites_1[int(self.current_sprite)]
            # self.image = self.sprites_1[int(self.current_sprite)]
        mouse = pygame.mouse.get_pos()
        self.rect = mouse

# General setup
pygame.init()
pygame.mouse.set_visible(0)
clock = pygame.time.Clock()
# Game Screen
screen_width = 400
screen_height = 400
mouse = pygame.mouse.get_pos()
screen = pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption("Sprite Animation")

# Creating the sprites and groups


moving_sprites = pygame.sprite.Group()
crosshair = Player(mouse[0],mouse[1])
enemy = Player(45,300)
moving_sprites.add(enemy)
while True:
    # Player.set_pos(*pygame.mouse.get_pos())
    globals()['mouse'] = pygame.mouse.get_pos()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            if pygame.mouse.get_pressed()[0]:
                crosshair.attack()
                enemy.attack()
    screen.fill((120,220,150))
    # Drawing
    screen.set_colorkey('white')
    moving_sprites.draw(screen)
    moving_sprites.update(0.08)
    pygame.display.flip()
    clock.tick(120)
    

now i want to add second sprite named enemy and it is not showing up instead it is showing crosshair sprite ... what to do now do i have to make a new class for that or something this seems easy but how to do that can any one tell how to do that ... i am also a beginner so try for simplest option i want to also randomize the locatoin of my enemy

thenoober
  • 77
  • 9
  • your `enemy` uses the same images as `crosshair` - because both use the same class `Player`. So code displays `enemy` but you see it as crosshair. So you may send different images to `Player` when you create `crosshair` or `enemy` - or create new `class Enemy` with images showing enemy. – furas Mar 01 '22 at 20:23
  • at start you can duplicate class Player, rename it to `Enemy`, make modification in class `Enemy`, and finally `enemy = Enemy()`. Later if you see the same code/functions in `Player` and `Enemy` then you can create `class Base(Sprite)` with code/functions common for both classes, and later create `class Player(Base)` and `class Enemy(Base)` – furas Mar 01 '22 at 20:30

0 Answers0