python练习之双人对战

1 目的

    为了巩固自己近期学习的python知识,所以写了一个demo加深我对python的理解

2 demo需求

    模拟两个人互相对战的过程,其中两个人初始血量为100,都可以可以回血,通过各种攻击手段击杀对方。

3 项目实现

    先定义一个Role类,去模拟人这个对象,在这个类中,暂时只设置的姓名和血量两个类属性。然后将攻击手段和回血手段抽象为类方法,让Role对象去调用,就相当于双方的对战。

类属性的初始化和状态的打印

image

攻击方法

image

回血方法

image

主要代码

    先初始化两个Role对象
image
然后通过双方的当前血量去控制循环的结束与否
image
其中,我是通过random.randint这个函数去实现随机一个人去进行攻击或者回血的状态

choose方法

为了避免代码的冗余,我将部分重复的代码抽出,写成了一个方法,方便之后的调用:
image

最后附上代码

点击查看代码
import random


class Role:
    def __init__(self, name, hp):
        self.name = name
        self.hp = hp
        pass

    def __str__(self):
        return '{}还剩下{}滴血'.format(self.name, self.hp)
        pass

    def tong(self, enemy):
        enemy.hp -= 10
        print('{}捅了{}一刀'.format(self.name, enemy.name))
        pass

    def kanren(self, enemy):
        enemy.hp -= 15
        print('{}砍了{}一刀'.format(self.name, enemy.name))
        pass

    def chiyao(self):
        self.hp += 10
        print('{}吃药加了10滴血'.format(self.name))
        pass

def choose(role, enemy, m):
    if m == 1:
        role.tong(enemy)
    elif m == 2:
        role.kanren(enemy)
    else:
        role.chiyao()
    print(role)
    print(enemy)

x = Role('张三', 100)
y = Role('李四', 100)
while x.hp > 0 and y.hp > 0:
    n = random.randint(1, 2)
    if n == 1:
        m = random.randint(1, 3)
        choose(x, y, m)
        print()
    else:
        m = random.randint(1, 3)
        choose(y, x, m)
        print()




posted @   charIotte  阅读(292)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示