python - 如何在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 秒)。
谢谢你的帮助
解决方案
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
推荐阅读
- xml - 使用 XSLT 将 XML 转换为 CSV
- c++ - C++ RVO 是否适用于 auto[x,y] = my_func()?
- python - 以秒 (?) 为单位的 datetime 列转换为 pandas 日期时间
- python - 使用边缘检测创建一个 numpy 掩码
- symfony - 子文件夹中的刺激控制器在 Symfony 中不起作用
- firebase - FirebaseError:权限缺失或不足。只读
- android - 无法在 Android 设备或模拟器上启动 React Native App。错误:spawnSync adb ENOENT
- asp.net - InvalidOperationException:无法解析类型“Microsoft.AspNetCore.Identity.UserManager`1[AspNetCoreTodo.Models.ApplicationUser]”的服务
- nlp - 在特定领域继续训练预训练的 BERT 模型的最简单方法是什么?
- r - "as.data.frame.default(x[[i]], optional = TRUE) 中的错误:使用 gamlss 函数(或 lme())时无法将类“函数”强制转换为 data.frame”