我们继续来总结下边地森林章节的第6节到第十节代码学习到的内容。
文章目录
一.python注释深入讲解
在关卡里,我们简单的讲解了注释的内容,这里我们在加深下讲解注释内容。
注释是程序文档的一部分,为了描述以下内容:
为什么写这个程序(它的用途) ˆ ˆ
这个程序是谁写的 ˆ ˆ
这个程序面向什么人(它的用户) ˆ ˆ
如何组织 ˆ ˆ
更明确清晰
1.1单行注释
在编写的内容前面加上#即可标注为注释
例如:
#print("Hello Skyfans!!")
1.2行末尾注释
可以在一行代码的最后加注释,像下面这样:
skyfans = sky + fans #瞎写的等式肯定不会成立
1.3多行注释
有时你可能想使用多行注释。可以使用多行,每行前面都有一个 # 字符,像这样:
#呦呦呦
#切克闹
#煎饼果子
#来一套!~~
二.函数
之前的关卡练习中,我们相当于一直在不断的罗列代码,也就是把我们想表达的内容一直编写出来,当下次在需要使用相关代码时,我们还需要在罗列相应的代码。这时,函数就可以解决不断重复重复再重复的罗列代码的问题。
最简单地讲,函数就是可以完成某个工作的代码块。函数能提高应用的模块性,和代码的重复利用率。
从边地森林(第二章)代码6,开始,我们开始熟悉使用函数。
在python中,函数分为内置函数和自定义函数
2.1 内置函数
python内置了一系列的常用函数,以便于我们使用,什么是内置函数,就是在安装好python环境的同时,这些函数就已经由开发者定义好了,我们直接拿过来就可以使用的函数。
举例:我们在使用moveLeft()函数时,游戏的本身相当于开发者给我们内置好了moveLeft()函数,我们直接调用即可,在后面的练习关卡中,我们会学习到moveLeft()这个函数是如何在定义出来的。
那python内置的函数有哪些,这里就不详细介绍了,网上一找一大堆。
2.2 自定义函数
我们在关卡练习中,定义过攻击敌人的函数
def findAndAttackEnemy():
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
当函数定义之后,我们在后面要使用英雄去攻击敌人的时候,只需要调用这个函数即可。
2.2.1 自定义函数的五大要点
在Python中,函数有五大要点,分别是def、函数名、函数体、参数、返回值,以及两个英文版符号,分别是括号(括号内为参数)和冒号(:)。
def:函数的关键字,没它可不行。
函数名:函数的名称,根据函数名调用函数。
函数体:函数中进行一系列的具体操作。
参数:为函数体提供数据。
返回值:当函数执行完毕后,可以给调用者返回数据。
上述函数的要点中,最重要的是参数和返回值。
定义的例子见上面的定义的攻击敌人的内容。
2.2.2 带参数的函数和不带参数的函数
同是定义攻击敌人的函数:
# 这个函数有一个参数。
# 参数是一种给函数传递信息的方式。
def checkAndAttack(target):
# target参数只是一个变量!
# 它包含了函数调用时的参数。
if target:
hero.attack(target)
hero.moveXY(43, 34)
#这是一个无参数的函数
def findAndAttackEnemy():
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
第一个函数的定义,我们给予了一个参数,那么在返回调用函数时,我们必须要把这个参数添加上,否则函数会报错。在定义无参数函数时,我们调用时既无需添加参数。
当然,定义的函数不仅仅只可以定义1个参数,可以定义多个。比如边地伏击关卡中:我们定义了x,y两个参数。
def checkAndAttack(x, y):
# First move to the coordinates provided by the parameters.
hero.moveXY(x, y)
# Then check for an enemy.
enemy = hero.findNearestEnemy()
# If there is one, attack it!
if enemy:
hero.attack(enemy)
2.2.3 函数调用
在上面,我们定义了2个参数的attack函数,在调用时,我们的代码如下:
checkAndAttack(24, 42)
checkAndAttack(27, 60)
也就是说函数调用的格式为:函数名(参数),注意定义函数时是否定义了参数值
2.2.4 关卡里的特殊的运行函数
例子如下:
# 你现在拥有一个宠物!
def speak(event):
# 你的宠物需要用pet.say()进行回应
pet.say("Hello World")
pass
# 这将告诉你的宠物,在听到声音时运行speak()函数
pet.on("hear", speak)
大家注意仔细看pet.on()函数定义的内容。
三.宠物操作关卡
宠物操作关卡和你的英雄其实没有什么区别,都是调用了对应的函数而已,但是如果你不会使用,请相信查看装备上的函数描述及使用方法。
四.python的四则运算
在代码10中的关卡,很多都是在练习四则运算的内容。
注意:
(1)括号在运算中的作用
(2)没有括号时,算数的优先级问题
五.唱歌类关卡
旨在锻炼字符串的使用方法
注意:这里可能会有一个误区,就是我们在唱歌类关卡中,我们使用say方法是如下的方式:
hero.say(potionsOnTheWall + " potions of health on the wall!")
变量 + 字符串拼接的形式,一定要注意的是,我们在使用python的内置函数时,比如print(),一定不可以这样使用。
六.物品的位置
关卡中,我们一般使用
(item.pos.x,item.pos.y)
来获取物品的位置,那有的童鞋可能会有疑惑,为什么要这样用,这个和我们之前使用的moveLeft()函数是一样的,后面的关卡在练习中,我们会遇到给你详细定义位置的内容的代码行。