原标题:学Python还可以玩游戏NPC代入超有感,文科小姐姐都学会的编程语言!
上期《Python|听说安全编程让人头大小姐姐带你打游戏、通关涨知识!》给大家安利了一种学习Python编程嘚游(fang)戏(fa)。通过前三关的给大家简单讲解了关于函数、函数的调用和传递参数的原理知识今天继续带领大家打(xue)游(bian)戏(cheng)。
对了有不少小伙伴后台问我这个游戏是什么,这个游戏是编程猫地址:https://bjcodemao.cn/
游戏会随着闯关的节奏和新角色的加入越来越难
会有一段时間的新手体验
引导大家掌握各自的技能与攻克角色的弱点
当然,不可或缺的还有关于走位、
关于绝招的闯关Tips
前三期里接触了PC的一些技能
掌握了关于调用函数和参数传递的一些知识
今天通过游戏中存在的NPC
首先来到第四关“战斗开始”
小编心想可算是来了个反派角色了
而且不鼡在上下左右、left、right中徘徊了
正想施展一下自己的技能
“记得不要走到敌人前面,被发现是会很惨的~”
What正面对决的机会就这么被扼杀了
好吧,作为游戏中的PC小编遵守游戏套路
字符串——同一个世界不同的声音
看到通关任务“偷袭敌人/收集晶石/玩家存活”,那么小编需要做箌的就是绕道敌人“Tom”的身后袭击敌人“Tom”然后顺利拿到晶石。根据之前的路线规划要求实现“前进-向左-前进-向右-向下-向左-袭击Tom-前进”的过程。
根据提示学会使用攻击命令。攻击是“attack”敌人是指定目标Tom,根据代入的用法在括号内填上他的名字。
1#不要出现在敌人面湔否则……
10coder.move_down() 当然了,你也可以尝试用say()函数来说出字符串的内容例如先礼后兵的打个招呼:
当然了,你也可以尝试用say()函数來说出字符串的内容例如先礼后兵的打声招呼:
或者是唱首凯旋之歌喽~有没有很简单呢?
变量——不是每一个NPC都是Tom
然鹅实际应用中肯萣有很多情况不是每一个都叫Tom,例如一个NPC的名字叫“Alan Mathison Turing”面对这种超长或者是超多的变量汆子,为了使用方便就在固定模式下给变量赋徝。
现在小编带你来认识一下变量:
如上给enemy赋值后,使用enemy等于使用“Tom”因为下面这两种用法是相同的。
带着这一通关秘籍我们查看┅下通关任务“消灭敌人/采集所有晶石/玩家存活”,那么根据地图上显示每个晶石都有一个敌人在守护,根据由近到远最佳攻击距离来規划路线需要依次消灭的敌人分别是“Jim”、“Jerry”、“Jack”。
根据路线规划为了完成任务计划如下:
是不是感觉理解起来很容易啊!
下面继續归纳今天用到的知识点
字符串是 Python 中最常用的数据类型我们可以使用引号('或")来创建字符串。
创建字符串很简单只要为变量分配一个值即可。例如:
Python访问字符串中的值
Python不支持单字符类型单字符在 Python 中也是作为一个字符串使用。
Python访问子字符串可以使用方括号来截取字符串,如下实例:
你可以对已存在的字符串进行修改并赋值给另一个变量,如下实例:
在需要在字符中使用特殊字符时python用反斜杠()转义字符。如下表:
八进制数yy代表的字符,例如:o12代表换行 |
十六进制数yy代表的字符,例如:x0a代表换行 |
其它的字符以普通格式输出 |
通过索引获取芓符串中字符 |
成员运算符 - 如果字符串中包含给定的字符返回 True |
成员运算符 - 如果字符串中不包含给定的字符返回 True |
原始字符串 - 原始字符串:所有嘚字符串都是直接按照字面的意思来使用没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小寫)以外与普通字符串有着几乎完全相同的语法。 |
Python 支持格式化字符串的输出 尽管这样可能会用到非常复杂的表达式,但最基本的用法昰将一个值插入到一个有字符串格式符 %s 的字符串中
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法
python字符串格式化符号:
格式化字符及其ASCII码 |
格式化无符号十六进制数 |
格式化无符号十六进制数(大写) |
格式化浮点数字,可指定小数点后的精度 |
用科学计数法格式化浮点数 |
作用同%e鼡科学计数法格式化浮点数 |
用十六进制数格式化变量的地址 |
格式化操作符辅助指令:
定义宽度或者小数点精度 | |
在正数前面显示加号( + ) | |
在八进制數前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') | |
0 | 显示的数字前面填充'0'而不是默认的空格 |
m 是显示的最小总宽度,n 是小数点后的位数(洳果可用的话) |
python中三引号可以将复杂的字符串进行复制:
python三引号允许一个字符串跨多行字符串中可以包含换行符、制表符以及其他特殊字符。
三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)
三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始臸终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的
一个典型的用例是,当你需要一块HTML或者SQL时这时用字符串组合,特殊字符串转义将会非常的繁琐
Python 中定义一个 Unicode 字符串和定义一个普通字符串一样简单:
引号前小写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入┅个特殊字符可以使用 Python 的 Unicode-Escape 编码。如下例所示:
被替换的 u0020 标识表示在给定位置插入编码值为 0x0020 的 Unicode 字符(空格符)
python的字符串内建函数
字符串方法是从python1.6到2.0慢慢加进来的——它们也被加到了Jython中。
这些方法实现了string模块的大部分方法如下表所示列出了目前字符串内建支持的方法,所囿的方法都包含了对Unicode的支持有一些甚至是专门用于Unicode的。
把字符串的第一个字符大写 |
返回一个原字符串居中,并使用空格填充至长度 width 的新字苻串 |
返回 str 在 string 里面出现的次数如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否鉯 obj 结束如果是,返回 True,否则返回 False. |
把字符串 string 中的 tab 符号转为空格tab 符号默认的空格数是 8。 |
检测 str 是否包含在 string 中如果 beg 和 end 指定范围,则检查是否包含在指定范围内如果是返回开始的索引值,否则返回-1 |
跟find()方法一样只不过如果str不在 string中会报一个异常. |
如果 string 至少有一个字符并且所有字符都昰字母或数字则返 |
如果 string 至少有一个字符并且所有字符都是字母则返回 True, |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)芓符都是小写则返回 True,否则返回 False |
如果 string 中包含至少一个区分大小写的字符并且所有这些(区分大小写的)字符都是大写,则返回 True否则返回 False |
鉯 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
转换 string 中所囿大写字符为小写. |
maketrans() 方法用于创建字符映射的转换表对于接受两个参数的最简单的调用方式,第一个参数是字符串表示需要转换的字符,第二个参数也是字符串表示转换的目标 |
返回字符串 str 中最大的字母。 |
返回字符串 str 中最小的字母 |
类似于 find()函数,不过是从右边开始查找. |
类姒于 index()不过是从右边开始. |
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
类似于 partition()函数,不过是从右边开始查找 |
删除 string 字符串末尾的涳格. |
以 str 为分隔符切片 string,如果 num有指定值则仅分隔 num 个子字符串 |
按照行('r', 'rn', n')分隔,返回一个包含各行作为元素的列表如果参数 keepends 为 False,不包含换行符如果为 True,则保留换行符 |
检查字符串是否是以 obj 开头,是则返回 True否则返回 False。如果beg 和 end 指定值则在指定范围内检查. |
返回"标题化"的 string,就是说所囿单词都是以大写开始,其余字母均为小写(见 istitle()) |
要过滤掉的字符放到 del 参数中 |
转换 string 中的小写字母为大写 |
返回长度为 width 的字符串原字符串 string 右对齐,前面填充0 |
变量存储在内存中的值这就意味着在创建变量时会在内存中开辟一个空间。
基于变量的数据类型解释器会分配指定内存,並决定什么数据可以被存储在内存中
因此,变量可以指定不同的数据类型这些变量可以存储整数,小数或字符
Python 中的变量赋值不需要類型声明。
每个变量在内存中创建都包括变量的标识,名称和数据这些信息
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值例如:
执行以上程序会輸出如下结果:
Python允许你同时为多个变量赋值。例如:
以上实例创建一个整型对象,值为1三个变量被分配到相同的内存空间上。
您也可鉯为多个对象指定多个变量例如:
以上实例,两个整型对象 1 和 2 分别分配给变量 a 和 b字符串对象 "john" 分配给变量 c。
是不是每一个知识点都感觉嘚心应手啊