使用面向对象思想,实现(人狗大战)小游戏

 学习面向对象之后,练习使用面向对象思想,实现代码

⼈狗⼤站, 2 个⻆⾊,⼈和狗,游戏开始后,⽣成 2 个⼈, 3 条狗,互相混战,⼈被狗咬了会掉⾎,狗被⼈打了也掉⾎,狗和⼈的攻击⼒,具备的 功能都不⼀样。
类:⼈
属性:⼈:攻击⼒(打)、⽣命值(⾎)
⽅法:打
类:狗;
属性:攻击⼒(咬)、⽣命值(⾎)
⽅法:咬

 

# -*- coding: utf-8 -*- 
# @File : 面向对象小游戏.py 
# 描述 : 人狗大战
# @Time : 2020/6/3 16:27 
# @Author : 崔
# @versions : 1.0
from random import randint


class Person:
    def __init__(self, name, aggressivity, hp):   # 姓名 攻击力 生命值
        self.name = name
        self.aggressivity = aggressivity
        self.hp = hp

    def attack(self, dog):
        atk = randint(0, self.aggressivity)
        if dog.hp > atk:
            dog.hp -= atk
            print(f"{self.name}打了{dog.name}一下")
        else:
            dog.hp -= atk
            print(f"{dog.name}死翘翘了")


class Dog:
    def __init__(self, name, aggressivity, hp):
        self.name = name
        self.aggressivity = aggressivity
        self.hp = hp

    def attack(self, person):
        atk = randint(0, self.aggressivity)  # 随机的攻击力
        if person.hp > atk:
            person.hp -= atk
            print(f"{self.name}咬了{person.name}一下")
        else:
            person.hp -= atk
            print(f"{person.name}被咬死了")


person = [Person("张三", 9, 100), Person("李四", 9, 100), Person("王二", 9, 100)]
dogs = [Dog("豆豆", 20, 60), Dog("贝贝", 20, 90)]

while len(person) > 0 and len(dogs) > 0:
    person[randint(0, len(person) - 1)].attack(dogs[randint(0, len(dogs) - 1)])
    for i in range(len(dogs) - 1, -1, -1):
        if dogs[i].hp <= 0:
            dogs.pop(i)  # 将已死的狗从列表中删除
    if len(dogs) <= 0:
        break
    dogs[randint(0, len(dogs) - 1)].attack(person[randint(0, len(person) - 1)])
    for i in range(len(person) - 1, -1, -1):
        if person[i].hp <= 0:
            person.pop(i)   # 将已死的人从列表中删除

if len(person) > 0:
    print("人获得了胜利")
else:
    print("狗获得了胜利")

使用了随机攻击的方式,因此运行结果不一定相同

 

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dmy20210205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值