Python游戏开发,pgzrun模块,Python实现阿肯⾊克隆⼈游
戏
前⾔
利⽤Python实现Python和PyGameZero编写阿卡尼类(Outout)的克隆,废话不多说。
让我们愉快地开始吧~
开发⼯具
**Python版本:**3.6.4
相关模块:
pgzrun模块;
以及⼀些Python⾃带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
游戏实现
安装游戏零:
pip install pgzero
复制代码
我们要做的第⼀件事是打开⼀个空窗⼝:
import pgzrun
TITLE = "Arkanoid clone"
WIDTH = 800
HEIGHT = 500
<()
复制代码
我们进⼝游戏零。标题显⽰在窗⼝上的标题,其他两个变量定义宽度和⾼度。
Go()运⾏程序。
您将看到⼀个空⽩窗⼝
接下来,让我们展⽰⼀些街区。
在⾼度和宽度下⾯添加以下代码:
paddle = Actor("paddleblue.png")
paddle.x = 120
paddle.y = 420
ball = Actor("ballblue.png")
ball.x = 30
ball.y = 300
复制代码
演员是PyGames 0显⽰图像的⽅式。图像总是存储在影象⽂件夹位于与游戏脚本相同的位置。
➜ tree
.
├── game.py
└── images
├── ballblue.png
└── paddleblue.png
1 directory, 3 files
复制代码
我们还设置了正在加载的图像的起始x和y位置:
paddle.x = 120
paddle.y = 420
复制代码
这些值可以是任意的,我通过反复试验得到了上⾯的结果。
因此,我们将图像加载到内存中,但我们还没有显⽰它们。我们现在就解决这个问题。PgZero有⼀个内置的抽签() 函数,该函数在启动游戏时⾃动调⽤。还有⼀个更新函数,每秒调⽤60次,并在移动时更新屏幕。
更新VS绘图功能
更新和绘制函数是相似的--除⾮更新每秒调⽤60次,⽽只有在某些事情发⽣变化时才调⽤绘图。
没有硬和快速的规则,但我会使⽤更新的东西,很多变化,如键盘运动,球运动等,⽽背景图像可以
在绘制。
画桨和球
现在,我们将只在屏幕上绘图,并将UPDATE保留为空
ball.draw()
def update():
pass
复制代码
更换背景
让我们更新绘图功能:
def draw():
screen.blit("background.png", (0,0))
paddle.draw()
ball.draw()
复制代码
背景是⼀个⽂件Background.png在……⾥⾯影象。这个布利特() 函数将我们的图像绘制到屏幕上。(0,0)表⽰从x=0y=0开始。我们将在下⾯讨论更多关于PyameZero坐标系的内容。
布置栏杆
接下来,我们要列出我们的球将击中的所有顶部的栏杆。
在我们的⽬录中有⼀些条形图,我们将使⽤它们。⾸先,布局1栏:
bar = Actor("element_blue_rectangle_glossy.png")
bar.x=120
bar.y=100
def draw():
bar.draw()
复制代码
很明显,⼀次只放⼀个酒吧是很痛苦的。让我们使⽤⼀个for循环来放置多个。
def draw():
bar_x = 120
bar_y = 100
for i in range(8):
bar = Actor("element_blue_rectangle_glossy.png")
bar.x = bar_x
bar.y = bar_y
bar.draw()
bar_x += 70
复制代码
random在python中的意思我们创建了开始的x和y变量-棒x初始化为120和棒Y初始化为100
我们绕8圈。为什么是8?因为这就是我们能舒服地坐在屏幕上的酒吧。
对于每个循环,我们创建⼀个Actor并初始化它的x和y,并将其绘制到屏幕上。然后我们会:
bar_x += 70
复制代码
使下⼀个条形图向左移动70个像素。再⼀次,我通过反复试验到了70个。尝试更改值,然后看到条形图重叠或相距太远。运⾏代码
好的。现在我们也要把其他的酒吧都布置好。我计划有三排不同颜⾊的。
我要做的第⼀件事是将上⾯的代码解压缩到⼀个函数中:
def draw():
screen.blit("background.png", (0,0))
paddle.draw()
ball.draw()
place_blue_bars()
def place_blue_bars():
bar_x = 120
bar_y = 100
for i in range(8):
bar = Actor("element_blue_rectangle_glossy.png")
bar.x = bar_x
bar.y = bar_y
bar.draw()
bar_x += 70
复制代码
我所做的就是将代码解压缩成⼀个函数放置蓝条()
现在,我可以创建更多的函数Create_red_bar() 等 , 但我相信我们可以做得更聪明。所以我将有⼀个⼀般的函数Place_bar():
def place_bars(x,y,image):
复制代码
我们还将创建另⼀个全局变量。条形表=[] 在顶部,我们将⽤这个来检查要显⽰的条⼦,以及球击中后要移除的条⼦。
我们将传递第⼀个条形的起始x和y,加上我们想要使⽤的图像。最后的职能是:
def place_bars(x,y,image):
bar_x = x
bar_y = y
for i in range(8):
bar = Actor(image)
bar.x = bar_x
bar.y = bar_y
bar_x += 70
bars_list.append(bar)
复制代码
唯⼀的变化是我们初始化了x,y和输⼊的图像。
我们将在游戏主代码开始之前调⽤这个函数。Pgzero.run()
coloured_box_list = ["element_blue_rectangle_glossy.png", "element_green_rectangle_glossy.png","element_red_rectangle_glossy.png"] x = 120
y = 100
复制代码
我们有⼀个包含3幅图像的列表,我们初始化了x和y值。然后我们循环遍历我们的列表:
for coloured_box in coloured_box_list:
place_bars(x, y, coloured_box)
y += 50
复制代码
我们需要做⼀个Y+=50在每个循环中,否则,条⼦将放置在彼此的顶部。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论