在Pygame中创建一个滚动的背景

在Pygame中创建一个滚动的背景

在这篇文章中,我们将了解如何在Pygame中创建一个滚动的背景。

Pygame为开发许多游戏的基本基础设施提供了许多优势。其中之一就是滚动的背景。许多流行的游戏都需要这种无尽滚动的功能。这种滚动背景有助于以较少的精力使背景更具创造性。

在滚动的背景中,一张图片被认为是一个背景,它将一次又一次地重复。从而形成一个滚动的无尽的图像循环。假设在Pygame shell中,我们将一张图片从一个坐标移动到另一个坐标,从而将一张图片的像素移到另一张。现在,这些空白的像素可以由另一幅图像来填补。

必要的图书馆。

在命令提示符下运行以下命令来安装Pygame库。

pip install pygame

在Pygame中创建一个滚动的背景

我们想在Pygame中为我们的游戏创建一个滚动窗口,即卡通诗句中的一匹奔马。所以我们创建了一个图像作为背景。我们希望在马匹奔跑时,图像图1.1能出现在我们的画面中。简而言之,我们要为我们的游戏提供一个滚动的背景。

在Pygame中创建一个滚动的背景

图1.1

滚动窗口

在Pygame中创建一个滚动的背景

图. 1.2

Step Implementation:

第1步。导入所需的库和模块,并初始化声明的模块。

import pygame as py
import math

第二步。声明用于管理滚动速度的时钟。在Pygame中用于滚动背景图像的FrameHeight、FrameWidth和Frame window。

clock = py.time.Clock()

FrameHeight = 600
FrameWidth = 1200

# PYGAME FRAME WINDOW
py.display.set_caption("Endless Scrolling in pygame")
screen = py.display.set_mode((FrameWidth, FrameHeight))

第三步。上传用于滚动的背景图片,并将滚动变量设置为0。 并计算一个上传的图片在一个pygame框架中所需要的瓷砖或区域框的数量。

bg = py.image.load("sea7.png").convert()

# DEFINING MAIN VARIABLES IN SCROLLING
scroll = 0
# HERE 1 IS THE CONSTATNT FOR REMOVING BUFFERING
tiles = math.ceil(FrameWidth  /bg.get_width()) + 1   

第四步。调用pygame的时钟函数来管理窗口屏幕的帧数。使用blit函数(block transfer)这个函数帮助我们将图像从一个位置复制到另一个位置。这有助于我们将图像追加到图像的后面。

在一个条件中,如果滚动器的移动超过了框架宽度,那么就把滚动器的值修改为0。因此,它将帮助我们反复移动同一个框架,并创建一个无尽的滚动视图。

为了关闭pygame窗口,我们必须声明事件控制器,以获得用户的退出请求来结束pygame窗口。

while 1:
  clock.tick(50)

  # APPENDING THE IMAGE TO THE BACK OF THE SAME IMAGE
  i=0
  while(i<tiles):
    screen.blit(bg, (bg.get_width()*i + scroll, 0))
    i+=1
  # FRAME FOR SCROLLING
  scroll -= 6

  # RESET THE SCROLL FRAME
  if abs(scroll) > bg.get_width():
    scroll = 0
  # CLOSING THE FRAME OF SCROLLING
  for event in py.event.get():
    if event.type == py.QUIT:
        quit()

  py.display.update()

py.quit()

代码实现:

import math
import pygame as py
  
py.init()
  
clock = py.time.Clock()
  
FrameHeight = 600
FrameWidth = 1200
  
# PYGAME FRAME WINDOW
py.display.set_caption("Endless Scrolling in pygame")
screen = py.display.set_mode((FrameWidth,
                              FrameHeight))
  
# IMAGE
bg = py.image.load("sea6.png").convert()
  
# DEFINING MAIN VARIABLES IN SCROLLING
scroll = 0
  
# CHANGE THE BELOW 1 TO UPPER NUMBER IF
# YOU GET BUFFERING OF THE IMAGE
# HERE 1 IS THE CONSTATNT FOR REMOVING BUFFERING
tiles = math.ceil(FrameWidth / bg.get_width()) + 1
  
# MAIN LOOP
while 1:
    # THIS WILL MANAGE THE SPEED OF
    # THE SCROLLING IN PYGAME
    clock.tick(33)
  
    # APPENDING THE IMAGE TO THE BACK
    # OF THE SAME IMAGE
    i = 0
    while(i < tiles):
        screen.blit(bg, (bg.get_width()*i
                         + scroll, 0))
        i += 1
    # FRAME FOR SCROLLING
    scroll -= 6
  
    # RESET THE SCROLL FRAME
    if abs(scroll) > bg.get_width():
        scroll = 0
    # CLOSINF THE FRAME OF SCROLLING
    for event in py.event.get():
        if event.type == py.QUIT:
            quit()
  
    py.display.update()
  
py.quit()

输出:

在Pygame中创建一个滚动的背景

图1.3 最终输出

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程