惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
腾讯CDC
博客园 - 司徒正美
A
About on SuperTechFans
H
Help Net Security
J
Java Code Geeks
C
Check Point Blog
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
MyScale Blog
MyScale Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
博客园 - 【当耐特】
雷峰网
雷峰网

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
对象之间的交互组合实战-互联网IT百科
2020-05-14 · via 老董笔记

  面向对象开篇就说要用1个战斗来学习面向对象,但是这几节课一直都是在学习概念,最多也就定义了个人类,这战争怎么打?这节课就定义人类和变异的狼类开战。

  要实现较为复杂战斗就得学会1个概念:类的组合。

  1个类某个属性的值是另外1个类的对象,这种情况就是类的组合,有了这种组合关系,对象之间才能交互起来,保卫战才可以打响。

  不过战争刚开始比较简单,人类只能会自带技能踢,和狼展开较量。类和类的关系也比较简单,如下:

# -*- coding:utf-8 -*-
import random

#人类
class Person:

    def __init__(self,my_name,my_blood):
        self.name = my_name  # 实例变量
        self.blood = my_blood

    # 人的技能:踢,wolf是1个狼类对象
    def kick(self,wolf):
        wolf.blood -= 20 # 被踢后血值-10
        print(f'{self.name}踢了{wolf.name},{wolf.name}血值降为{wolf.blood}')
        if wolf.blood < 1:
            print(f'{wolf.name}被杀')

# 狼类
class Wolf:
    def __init__(self,name,blood):
        self.name = name
        self.blood = blood

    def bite(self,person):
        person.blood -= 30
        print(f'{self.name}咬了{person.name},{person.name}血值降为{person.blood}')
        if person.blood < 1:
            print(f'{person.name}牺牲')


if __name__ =="__main__":
    p1 = Person('laodong1',100)
    w1 = Wolf('lang1',100)
    while True:
        if p1.blood <0 or w1.blood < 0:
            print('game over')
            break
        num = random.randint(1,10)
        if num > 5:
            p1.kick(w1)
            continue
        w1.bite(p1)
laodong1踢了lang1,lang1血值降为80
laodong1踢了lang1,lang1血值降为60
lang1咬了laodong1,laodong1血值降为70
lang1咬了laodong1,laodong1血值降为40
laodong1踢了lang1,lang1血值降为40
lang1咬了laodong1,laodong1血值降为10
lang1咬了laodong1,laodong1血值降为-20
laodong1牺牲
game over

  在战争中学习战争,人类在斗争中学习了各种武学和兵器,如无影脚、六脉神剑、火焰刀、一阳指等,每个人在斗争中可能使用以上各种手段,这样应该如何设计游戏呢?我们需要1个武功类、1个人类、1个狼类。给人类1个技能属性,属性值是武功类的对象,这样类和类就之间交互组合了。

# -*- coding:utf-8 -*-
import random

# 武功类
class GongFu:
    def __init__(self):
        pass

    def say(self,wolf,skill):
        print(f'{wolf.name}被{skill}所伤,{wolf.name}血值降为{wolf.blood}')

    # 无影脚
    def wuying_jiao(self,wolf):
        wolf.blood -= 20
        self.say(wolf,'无影脚')

    # 火焰刀
    def huoyan_dao(self,wolf):
        wolf.blood -= 25
        self.say(wolf,'火焰刀')

#人类
class Person:

    def __init__(self,my_name):
        self.name = my_name  # 实例变量
        self.blood = 100 # 默认都是100
        self.skill = GongFu() # 武功类的对象


# 狼类
class Wolf:
    def __init__(self,name):
        self.name = name
        self.blood = 120

    def bite(self, person):
        person.blood -= 30
        print(f'{self.name}咬了{person.name},{person.name}血值降为{person.blood}')


if __name__ =="__main__":
    p1 = Person('laodong1')
    wof1 = Wolf('lang1')
    while True:
        if p1.blood <0 or wof1.blood < 0:
            print('game over....')
            break
        num = random.randint(1,10)
        if num > 7:
            p1.skill.huoyan_dao(wof1)
            continue
        elif num > 4:
            p1.skill.wuying_jiao(wof1)
            continue
        wof1.bite(p1)
lang1咬了laodong1,laodong1血值降为70
lang1咬了laodong1,laodong1血值降为40
lang1被无影脚所伤,lang1血值降为100
lang1被无影脚所伤,lang1血值降为80
lang1咬了laodong1,laodong1血值降为10
lang1咬了laodong1,laodong1血值降为-20
game over....

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会