CodeCombat代码全记录(Python学习利器)--边地森林(第二章)代码6-10--总结

我们继续来总结下边地森林章节的第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()函数是一样的,后面的关卡在练习中,我们会遇到给你详细定义位置的内容的代码行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值