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

如何在不同的坐标处对多个相同的图像进行 blit?

如何解决如何在不同的坐标处对多个相同的图像进行 blit?

我正在尝试创建一个游戏,其中多个相同的图像将沿着我的窗口边界随机闪烁。但我不知道如何多次以及沿边界对它进行 blit。 这是到目前为止的代码

import pygame,sys

from pygame.locals import *
import random

pygame.init()
displayWidth = 700
displayHeight = 400
display = pygame.display.set_mode((displayWidth,displayHeight))
Death = False
  
  
def PlaceElon():
  ElonX = random.randrange(0,700,700)
  ElonY = random.randrange(0,400)
  x = []
  y = []
  Elonlist = [x,y]
  elon = pygame.image.load('elon.png')
  elonbig = pygame.transform.smoothscale(elon,(50,54))
  for x in Elonlist:
    x.append(ElonX)
  for y in Elonlist:
    y.append(ElonY)
  display.blit(elonbig,(Elonlist))
  pygame.display.update()
  
  
def RunGame():
  while not Death:
    background = pygame.image.load('background.png')
    BigBackground = pygame.transform.smoothscale(background,(displayWidth,displayHeight))
    display.blit(BigBackground,(0,0))
    PlaceElon()
    
RunGame()

解决方法

您需要生成坐标列表:

Elonlist = []
noOfElons = 10
for _ in range(noOfElons)
    x = random.randrange(0,700 - elon.get_width())
    y = random.randrange(0,400 - elon.get_height())
    Elonlist.appned((x,y))

循环绘制图像:

for ElonPos in Elonlist:
    Display.blit(elon,ElonPos)

但是,您的应用程序中还有一些问题。

在应用程序循环之前生成位置并加载图像:

background = pygame.image.load('background.png')
BigBackground = pygame.transform.smoothscale(background,(DisplayWidth,DisplayHeight))
elon = pygame.image.load('elon.png')

典型的 PyGame 应用程序循环必须:

# main application loop
run = True
while run:

    # limit frames per second
    clock.tick(60)

    # event loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # draw background
    Display.blit(BigBackground,(0,0))

    # draw the scene   
    for elonPos in Elonlist:
        Display.blit(elon,elonPos)

    # update the display
    pygame.display.flip()

pygame.quit()
exit()

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