I want to blit the enemy to the screen but the .blit()
in enemy()
is not working. I tried printing the enemies
list and it is being appended but the it still isn't blit the enemy to the screen. also I am not getting any error
Heres my code
import pygame
import random
import os
import sys
from pygame import key
pygame.init()
width, height = 600, 500
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Hasan's Game")
player_image = pygame.image.load(os.path.join("Assets", "Player.png"))
player_transform = pygame.transform.rotate(pygame.transform.scale(player_image, (150, 150)), 0)
background = pygame.image.load(os.path.join("Assets", "Background.png"))
enemy_image = pygame.image.load(os.path.join("Assets", "Enemy.png"))
enemy_transform = pygame.transform.rotate(pygame.transform.scale(enemy_image, (100, 100)), 0)
player_vel = 5
enemy_vel = 10
def draw_window(player):
window.blit(background, (0, 0))
#window.blit(enemy_transform, (width//2, height//2))
window.blit(player_transform, player)
pygame.display.update()
def enemy(enemies):
enemy = pygame.Rect(width//2, height//2, 100, 100)
enemies.append(enemy)
for enemy in enemies:
window.blit(enemy_transform, enemy)
enemy.x -= enemy_vel
def player_movement(player, key_pressed):
if key_pressed[pygame.K_UP] and player.y - player_vel > -40:
player.y -= player_vel
if key_pressed[pygame.K_DOWN] and player.y - player_vel < height - 200:
player.y += player_vel
def main():
running = True
clock = pygame.time.Clock()
player = pygame.Rect(50, height//2 - 50, 150, 150)
enemies = []
while running:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit
sys.exit
keys_pressed = pygame.key.get_pressed()
player_movement(player, keys_pressed)
draw_window(player)
enemy(enemies)
if __name__ == "__main__":
main()
You have to draw the enemies in the application loop. Create the enemies before the application loop, move them in the application loop and draw them in draw_window
.
Make sure that functions and variables have different names. In your code, you use the name enemy
for a function and a variable. Use different names at this point. eg:
def draw_window(player, enemies):
window.blit(background, (0, 0))
for enemy in enemies:
window.blit(enemy_transform, enemy)
window.blit(player_transform, player)
pygame.display.update()
def move_enemies(enemies):
for enemy_rect in enemies:
enemy_rect.x -= enemy_vel
def main():
running = True
clock = pygame.time.Clock()
player = pygame.Rect(50, height//2 - 50, 150, 150)
enemies = []
enemy_rect = pygame.Rect(width//2, height//2, 100, 100)
enemies.append(enemy_rect)
while running:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys_pressed = pygame.key.get_pressed()
player_movement(player, keys_pressed)
move_enemies(enemies)
draw_window(player, enemies)
pygame.quit()
sys.exit()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.