Python 使用Arcade模块创建雪花效果
我们都想为我们的演示或视频添加额外的效果。这些效果帮助我们更好地展示我们的产品或提高用户体验。在本教程中,您将学习如何使用Arcade模块实现雪花效果。
您可以在游戏中使用它来创建雪花或雨滴效果。您甚至可以将其设置为屏幕超时效果。
话虽如此,让我们开始吧!
入门
在整个教程中,我们将使用Arcade模块来帮助用户轻松创建与游戏相关的功能。
这个模块没有预装在Python中。这意味着我们将使用pip软件包管理器来安装它。
要做到这一点,请使用以下命令。
pip3 install arcade
一旦你安装了arcade模块,就可以将其各种方法导入到我们的脚本中。
为了做到这一点,我们使用Python中的 import 关键字,后面跟着模块名。
import arcade
这就是操作完成了!现在,你已经准备好开始处理手头的任务了。
使用Arcade模块创建雪效果
我们需要导入random和math模块以及arcade模块。很快你就会明白为什么。
import random
import math
import arcade
现在,首先我们要定义每个雪花。在这个脚本中,每个雪花都是屏幕上的一个点。因此,我们将考虑其在输出屏幕上的位置的x和y变量。
我们还定义了一个重置位置的函数reset_pos,它将用于定义雪花在达到窗口结束时的位置。
class Snow:
def __init__(self, height, width):
self.x = 0
self.y = 0
def reset_pos(self, height, width):
self.y = random.randrange(height, height + 100)
self.x = random.randrange(width)
就是这样。我们现在有了一个定义的雪花教程。现在,我们需要开始设计输出窗口,以及雪花教程下落的模式。
首先,我们使用arcade模块定义绘制输出屏幕所需的基本函数。
class MyGame(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height)
self.stream = None
现在,我们定义一个启动函数,在运行脚本时运行。
该函数将负责描述每个ptutorials的运动方式。它们下落的角度,下落的速度,ptutorials的大小以及它们相对于输出窗口的位置。
这就是随机导入的作用所在。我们使用random模块来调节这些ptutorials的随机生成。
def start(self, height, width):
self.stream = []
for i in range(100): # Increase to increase number of snow ptutorials.
snow = Snow(800, 600)
snow.x = random.randrange(width)
snow.y = random.randrange(height + 200)
snow.size = random.randrange(2)
snow.speed = random.randrange(20, 100)
snow.angle = random.uniform(math.pi, math.pi * 2)
self.stream.append(snow)
# define bg colour
arcade.set_background_color(arcade.color.BLACK)
现在,我们需要使用默认的on_draw函数,在输出窗口上生成教程。
def on_draw(self): # This is a default function.
arcade.start_render()
for snow in self.stream:
arcade.draw_circle_filled(snow.x, snow.y, snow.size, arcade.color.WHITE)
我们还需要定义on_update函数,一旦ptutorial越过输出窗口边界的y方向限制,将定义它的位置。
def on_update(self, delta_time): # This is a default function.
for snow in self.stream:
snow.y = snow.y - snow.speed * delta_time
if snow.y < 0:
snow.reset_pos(800, 600)
snow.x = snow.x + snow.speed * math.cos(snow.angle) * delta_time
snow.angle = snow.angle + delta_time
还有就这些!现在你已经准备好了完整的脚本!让我们使用主要函数来定义窗口的边框并运行arcade函数。
if __name__ == "__main__":
window = MyGame(800, 600)
window.start(800, 600)
arcade.run()
以下是它将产生的 输出 –
完整脚本
以下是完整代码-
import random
import math
import arcade
class Snow:
def __init__(self, height, width):
self.x = 0
self.y = 0
def reset_pos(self, height, width):
self.y = random.randrange(height, height + 100)
self.x = random.randrange(width)
class MyGame(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height)
self.stream = None
def start(self, height, width):
self.stream = []
for i in range(100):
snow = Snow(800, 600)
snow.x = random.randrange(width)
snow.y = random.randrange(height + 200)
snow.size = random.randrange(2)
snow.speed = random.randrange(20, 100)
snow.angle = random.uniform(math.pi, math.pi * 2)
self.stream.append(snow)
arcade.set_background_color(arcade.color.BLACK)
def on_draw(self): # This is a default function.
arcade.start_render()
for snow in self.stream:
arcade.draw_circle_filled(snow.x, snow.y, snow.size, arcade.color.WHITE)
def on_update(self, delta_time): # This is a default function.
for snow in self.stream:
snow.y = snow.y - snow.speed * delta_time
if snow.y < 0:
snow.reset_pos(800, 600)
snow.x = snow.x + snow.speed * math.cos(snow.angle) * delta_time
snow.angle = snow.angle + delta_time
if __name__ == "__main__":
window = MyGame(800, 600)
window.start(800, 600)
arcade.run()
结论
现在你知道如何使用Python中的Arcade模块在GUI输出屏幕上创建雪花教程效果。你可以通过改变一些值来进行实验。