首页 > 解决方案 > 如何在pygame中让图像留在屏幕上?

问题描述

我是初学者

import pygame as py
from math import sqrt, pow

nuclear = py.transform.scale(py.image.load('nuclear.png'),(300, 300))
def collosion(enemyX,enemyY,fireX,fireY):
    distance = sqrt(pow(enemyX - fireX, 2) + pow(fireY - enemyY, 2))
    if distance <= 100:
        return True
    else:
        return False

collosion1 = collosion(enemy1_x,enemy2_y,shoot1X + 50, shoot1Y + 60)
    if collosion1:
        window.blit(nuclear,(enemy1_x,enemy2_y))
        enemy1_x = 1400
        enemy2_y = 530
        shoot1X = tankX
        shoot1Y = tankY
        shoot_now = 'not fired'
        shoot1 = py.transform.scale(py.image.load('shoot1.png'), (70, 30))

我如何让“核”图像停留一段时间(至少 2 秒)。


谢谢你的帮助

标签: pythonpygame

解决方案


Pygame 需要循环运行。并且您需要在此循环的每次迭代中对该图像进行 blit。在那里,您还可以处理击键和其他事件。在循环的每次迭代中,您还需要更新显示。所以本质上这个循环代表你的帧率。

import pygame
import sys

pygame.init()
screen = pygame.display.set_mode((100, 100))

nuclear = pygame.transform.scale(pygame.image.load('nuclear.png'),(300, 300))

while True:
    for event in pygame.event.get(): # iterate through all events
        if event.type == pygame.QUIT: sys.exit()

        elif event.type == pygame.KEYDOWN: # example event KEYDOWN
            if event.key == pygame.K_a: # if key A was pressed
                print("Key 'A' was pressed")

    screen.blit(nuclear,(1,1)) # Your image needs to be blitet every frame
    pygame.display.flip() # then the screen needs to be updated

如果你想摆脱图像,那么你可以停止对图像进行 bliting。您可以查看文档以获取更多详细信息和教程。 https://www.pygame.org/docs/tut/MakeGames.html


推荐阅读