我如何在不同的坐标下拼接多个相同的图像?

2024-10-02 10:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个游戏,其中多个相同的图像将沿我的窗口边界随机闪烁。但我不知道如何在边境地区多次实施闪电战。 以下是迄今为止的代码:

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()

Tags: importdefdisplayrandompygamebackgroundelonrandrange
1条回答
网友
1楼 · 发布于 2024-10-02 10:31:50

您需要生成一个坐标列表:

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应用程序循环必须:

  • 通过^{}^{}处理事件
  • 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
  • 清除整个显示或绘制背景
  • 绘制整个场景(blit所有对象)
  • 通过^{}^{}更新显示
  • 限制每秒帧数以限制CPU使用
# 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()

相关问题 更多 >

    热门问题