繁体   English   中英

为什么 Pygame.blit() function 不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM