微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有敌人显示

如何解决没有敌人显示

当我运行这段代码时,屏幕上没有敌人(僵尸)弹出,但忍者(玩家)会(移动也有效)并且屏幕颜色正确。我在终端中没有收到任何错误。我正在使用树莓派,如果有帮助的话。我已经查找了一些答案,但它们要么产生相同的结果,要么给我错误。你能帮我吗?

import pygame
import random
from random import randint
pygame.init()

screen = pygame.display.set_mode((600,600))
pygame.display.set_caption('Zombies')
# player
playerImg = pygame.image.load('ninja.png')
playerX = 260
playerY = 500
playerX_change = 0
playerY_change = 0
# enemy
enemyImg = []
enemyX = []
enemyY = []
enemyX_change = []
enemyY_change = []
num_of_enemies = 6

for i in range(num_of_enemies):
    enemyImg.append(pygame.image.load('zombie.png'))
    enemyX.append(random.randint(0,535))
    enemyY.append(random.randint(50,100))
    enemyX_change.append(4)
    enemyY_change.append(30)


# functions and classes
def player(x,y):
    screen.blit(playerImg,(x,y))


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

running = True
while running:
    screen.fill((0,154,23))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                playerX_change = -1
            if event.key == pygame.K_RIGHT:
                playerX_change = 1
            if event.key == pygame.K_UP:
                playerY_change = -1
            if event.key == pygame.K_DOWN:
                playerY_change = 1
        if event.type == pygame.KEYUP:
            if event.type == pygame.K_LEFT or pygame.K_RIGHT:
                playerX_change = 0
            if event.type == pygame.K_UP or pygame.K_DOWN:
                playerY_change = 0
    # Boundaries
    if playerX <= 0:
        playerX = 0
    elif playerX >= 536:
        playerX = 536
    if playerY <= 0:
        playerY = 0
    elif playerY >= 536:
        playerY = 536
    for i in range(num_of_enemies):
        enemyX[i] += enemyX_change[i]
        if enemyX[i] <= 0:
            enemyX_change[i] = 4
            enemyY[i] += enemyY_change[i]
        elif enemyX[i] >= 536:
            enemyX_change[i] = -4
            enemyY[i] += enemyY_change[i]

    playerX += playerX_change
    playerY += playerY_change
    player(playerX,playerY)
    pygame.display.update()

解决方法

你根本没有吸引敌人。你必须在一个循环中绘制敌人。遍历敌人并调用函数enemy(x,y,i)

while running:
    # [...]

    for i in range(num_of_enemies):
        enemy(enemyX[i],enemyY[i],i)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。