[英]Why is the Pygame .blit() function not working?
我想将敌人blit 到屏幕上,但enemy()
() 中的.blit()
不起作用。 我尝试打印enemies
列表并且它被附加但它仍然没有将敌人blit到屏幕上。 我也没有收到任何错误
这是我的代码
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()
您必须在应用程序循环中绘制敌人。 在应用程序循环之前创建敌人,在应用程序循环中移动它们并在draw_window
中绘制它们。
确保函数和变量具有不同的名称。 在您的代码中,您将名称enemy
用于 function 和一个变量。 此时使用不同的名称。 例如:
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.