#究竟yield是什么?看游戏高手如何利用它巧妙绕过障碍介绍
yield到底是什么?
yield是Python语言中的一个关键字,它可以在函数中暂停函数的执行,并返回一个值。当函数再一次被调用时,它会从上一次暂停的位置继续执行。yield常用于生成器中,可以帮助我们节省内存。
yield在游戏中的运用
yield并不是只在编程中有用处。在游戏开发中,yield也可以被巧妙地使用。比如,我们想要制作一个过关条件为收集所有宝石的游戏。使用常规的循环嵌套很难实现,但是利用yield,我们可以写出更加优雅的代码。
具体例子
假设地图中的宝石是以元组的形式给出的,每个元组包括一个宝石的x坐标和y坐标。我们可以使用yield与元素迭代器来收集宝石,代码如下:
```
gems = [(1,1), (2,2), (3,3), (4,4)] #四个宝石的位置
def collect_gems():
for gem in gems:
print("宝石 ({}, {}) 已收集".format(gem[0], gem[1]))
yield gem
```
使用for循环调用函数后,我们可以一个一个地收集宝石,如下:
```
for gem in collect_gems():
print("收集到的宝石为 ({}, {})".format(gem[0], gem[1]))
```
输出结果为:
```
宝石 (1, 1) 已收集
收集到的宝石为 (1, 1)
宝石 (2, 2) 已收集
收集到的宝石为 (2, 2)
宝石 (3, 3) 已收集
收集到的宝石为 (3, 3)
宝石 (4, 4) 已收集
收集到的宝石为 (4, 4)
```
这个例子并不是太实用,但在复杂的游戏中,yield可以提供更强大的控制能力,让我们可以更好地掌控游戏进程。
小结
yield在Python中的用途十分广泛,它不仅可以用于生成器的编写,还可以用于建立游戏的进程控制系统。yield的使用可以让我们的代码更加简洁优美,同时也提升了我们对代码的控制能力。