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

如何让敌人在pygame上随机掉落?

如何解决如何让敌人在pygame上随机掉落?

我希望敌人在我的游戏中从天而降,但我不知道该怎么做。
我正在使用这个 YouTube 视频:Falling Objects in Pygame

import pygame,random

pygame.init()

screen_width = 800
screen_height = 600


window = pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption('Test')
time = pygame.time.Clock()
bg_color1 = (135,142,142)  # MAIN BG COLOR
bg_color2 = (255,0)  # red
bg_color3 = (255,255,0)  # yellow
UFO = pygame.image.load('ufo.png')
bg_pic = pygame.image.load('Letsgo.jpg')
clock = pygame.time.Clock()
playerImg = pygame.image.load('enemy.png')
playerX = random.randrange(0,screen_width)
playerY = -50
playerX_change = 0
player_speed = 5


def player(x,y):
    window.blit(playerImg,(playerX,playerY))


crashed = False

rect = UFO.get_rect()
obstacle = pygame.Rect(400,200,80,80)

menu = True
playerY = playerY + player_speed
if playerY > screen_height:
    playerX = random.randrange(0,screen_width)
    playerY = -10


def ufo(x,y):
    window.blit(UFO,(x,y))


while menu:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:
                menu = False
    window.fill((0,0))
    time.tick(30)
    window.blit(bg_pic,(0,0))
    pygame.display.update()
x = (screen_width * 0.45)
y = (screen_height * 0.8)
x_change = 0
car_speed = 0
y_change = 0

while not crashed:
    x += x_change
    if x < 0:
        x = 0
    elif x > screen_width - UFO.get_width():
        x = screen_width - UFO.get_width()

    y += y_change
    if y < 0:
        y = 0
    elif y > screen_height - UFO.get_height():
        y = screen_height - UFO.get_height()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = True

        ############SIDE TO SIDE################
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x_change = -5
            elif event.key == pygame.K_RIGHT:
                x_change = 5
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_change = 0
        ###########UP AND DOWN#################
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                y_change = -5
            elif event.key == pygame.K_DOWN:
                y_change = 5
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                y_change = 0
    ##
    x += x_change
    y += y_change
    ##
    window.fill(bg_color1)
    ufo(x,y)
    player(playerX,playerY)
    pygame.display.update()
    clock.tick(100)

pygame.quit()
quit()

所以应该使图像掉落的代码是这样的

if playerY > screen_height:
    playerX = random.randrange(0,screen_width)
    playerY = -10 

解决方法

移动以下代码:

if playerY > screen_height:
playerX = random.randrange(0,screen_width)
playerY = -10 

到这里以便它可以在游戏循环中:

 for event in pygame.event.get():
    if event.type == pygame.QUIT:
        crashed = True

    ############SIDE TO SIDE################
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            x_change = -5
        elif event.key == pygame.K_RIGHT:
            x_change = 5
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            x_change = 0
    ###########UP AND DOWN#################
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            y_change = -5
        elif event.key == pygame.K_DOWN:
            y_change = 5
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
            y_change = 0

  if playerY > screen_height:
    playerX = random.randrange(0,screen_width)
    playerY = -10 

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