使用 PyGame–Python 构建太空入侵者
原文:https://www . geesforgeks . org/building-space-intruss-using-pygame-python/
在本文中,我们将使用 Python 中的 PyGame 构建空间入侵者。
使用过的文件可以从这里下载。
进场:
- 导入所需的模块。
- 初始化 pygame。
- 创建三个函数:
- iscollection():哪个告诉我们碰撞发生了没有?
- game_over(): 返回 True 或 False,代码根据该值决定游戏是否结束。
- show_score(x,y): 在屏幕上显示分数
- 创建一个无限循环来连续执行代码。
isCollision():
其实很简单。在解释这一点之前,我们希望您先看看下面游戏循环中代码的冲突部分:
Python 3
# Collision
collision = isCollision(bullet_X, invader_X[i], bullet_Y, invader_Y[i])
if collision:
score_val += 1
bullet_Y = 600
bullet_state = "rest"
invader_X[i] = random.randint(64, 736)
invader_Y[i] = random.randint(30, 200)
invader_Xchange[i] *= -1
“isCollision()”函数返回的值存储在“碰撞”变量中。根据函数内部为冲突设置的标准,函数返回的值为真或假。我们来看看 isCollision()函数里面是什么:
python 3
def isCollision(x1, x2, y1, y2):
distance = math.sqrt((math.pow(x1 - x2, 2)) + (math.pow(y1 - y2, 2)))
if distance <= 50:
return True
else:
return False
函数内部设置的碰撞标准最简单的就是子弹和入侵者(我们的敌人)之间的距离。如你所见,计算距离的公式是每个学生在高中数学课上学习的东西。它是坐标为(x1,y1)和(x2,y2)的两个点之间的距离公式,这两个点是作为 isCollision()函数的参数传递的。
在这里,我们设置了标准,如果距离值小于或等于 50,则表示发生了碰撞。该值是根据子弹和入侵者使用的 png 图像的高度和宽度选择的。该值可以根据您自己的要求使用试错法进行调整。
因此,每当子弹和入侵者的位置发生变化时,isCollision()函数就会检查是否发生了碰撞。这就是为什么它在游戏循环中被调用的原因。
game_over():
返回“真”或“假”,在此基础上代码决定游戏是否结束。为了理解 game_over()函数,让我们来看看下面出现在游戏循环中的代码片段:
python 3
# movement of the invader
for i in range(no_of_invaders):
if invader_Y[i] >= 450:
if abs(player_X-invader_X[i]) < 80:
for j in range(no_of_invaders):
invader_Y[j] = 2000
explosion_sound = mixer.Sound('data/explosion.wav')
explosion_sound.play()
game_over()
break
版权属于:月萌API www.moonapi.com,转载请注明出处