首页 > 解决方案 > 我试图在我的 pygame 中添加一个敌人,但一切都是错误的

问题描述

如前所述,我试图在我的 pygame 中添加一个敌人,但一切都死了。我真的不知道发生了什么,我认为“玩家”的东西与“敌人”混淆了,有点粘在一起了。

这是一个学校项目,我基本上是想在预算内制作一个“街头霸王”,用最少的动画和东西:)

(我对编程很陌生,我有点烂)

import pygame

# Intialize the pygame
pygame.init()

# screen and size
screen = pygame.display.set_mode((800, 600))

# title and logo
pygame.display.set_caption("Båtisens Herre")
icon = pygame.image.load('img.png')
pygame.display.set_icon(icon)

# background
background = pygame.image.load("bakgrunn.png")

# player
playerImg = pygame.image.load('King Arthur2.png')
playerX = 100
playerY = 200


def player(x, y):
    screen.blit(playerImg, (x, y))

def enemy(x, y):
    screen.blit(playerImg, x, y))

# enemy
enemyImg = pygame.image.load('Black knight1.png')
enemyX = 370
enemyY = 480
enemyX_change = 0


    # game loop

    clock = pygame.time.Clock()
    running = True


while running:
    clock.tick(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_a]:
        playerX -= 4
    if keys[pygame.K_d]:
        playerX += 4

    screen.blit(background, (0, 0,))
    player(playerX, playerY)
    pygame.display.update()

    # RGB (red, green blue)
    screen.fill((248, 58, 226))
    playerY -= 0
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # background(2)
    screen.blit(background, (0, 0,))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False


    player(playerX, playerY)
    enemy(enemyX, enemyY)
    pygame.display.update()

标签: pythonpygame

解决方案


enemy函数中(缺少:

screen.blit(playerImg, x, y))

screen.blit(enemyImg, (x, y))

从您的代码中删除多个事件循环。

pygame.event.get()获取所有消息并将它们从队列中删除。请参阅文档:。请参阅文档:

这将获取所有消息并将它们从队列中删除。[...]

如果pygame.event.get()在多个事件循环中调用,则只有一个循环接收事件,但绝不会所有循环都接收所有事件。结果,似乎错过了一些事件。


完整代码

import pygame

# Intialize the pygame
pygame.init()

# screen and size
screen = pygame.display.set_mode((800, 600))

# title and logo
pygame.display.set_caption("Båtisens Herre")
icon = pygame.image.load('img.png')
pygame.display.set_icon(icon)

# background
background = pygame.image.load("bakgrunn.png")

# player
playerImg = pygame.image.load('King Arthur2.png')
playerX = 100
playerY = 200


def player(x, y):
    screen.blit(playerImg, (x, y))

def enemy(x, y):
    screen.blit(enemyImg, (x, y))

# enemy
enemyImg = pygame.image.load('Black knight1.png')
enemyX = 370
enemyY = 480
enemyX_change = 0

# game loop

clock = pygame.time.Clock()
running = True
while running:
    clock.tick(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    keys = pygame.key.get_pressed()
    if keys[pygame.K_a]:
        playerX -= 4
    if keys[pygame.K_d]:
        playerX += 4
    
    screen.blit(background, (0, 0))
    player(playerX, playerY)
    enemy(enemyX, enemyY)
    pygame.display.update()

推荐阅读