首页 > 编程语言 >python练习之双人对战

python练习之双人对战

时间:2022-10-16 20:23:52浏览次数:60  
标签:enemy name python self 对战 Role print 双人 hp

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()




标签:enemy,name,python,self,对战,Role,print,双人,hp
From: https://www.cnblogs.com/ouyan-/p/16796976.html

相关文章

  • python自学之路
    我为什么会选择学习这门语言,因为刚开始接触这门语言的时候看这门语言比较接地气,而且那段时间也比较火,这些都是次要的,因为自己对python的好奇起源于他的爬虫技术,就好奇就开......
  • 【python】Ubuntu中多条命令的运行
    在模型训练时,往往需要消融实验,通常都是在一个程序运行结束后才再次手动运行下一个,不及时在电脑前可能无端浪费时间,因此需要让程序自动一个接一个去执行。受此启发,特了解了U......
  • [Python学习笔记]使用Python编写自动化程序处理锂电池保护板数据 - Python基础知识
    1.1数据以及数据类型python中有以下几种数据类型:整数类型,浮点类型,字符串,清单类型,字典类型,元组类型,真/假类型(布尔类型) 1.1.1整数整数类型就表示数学......
  • Python基础:逻辑运算
    1、逻辑运行(优先级顺序:括号>not>and>or)print(8or3>1)/**or前是数字(大于零时,直接返回数字),直接返回数字,不在看Or后的内容**/8print(0or5>3)/**or前是零时,检......
  • Python第六章实验报告
    一.实验内容:《零基础学Python》第六章实例和实战,以及一道作业题二.实验环境:IDLEShell3.9.7三.实验目的和要求:掌握定义和调用函数、变量的作用域、匿名函数、参数传递、......
  • pip 命令批量安装python包
    1.PyPI:PythonPackageIndex,thedefaultrepository(仓库)ofPythonpackagesforPythoncommunitythatincludesframeworks,toolsand,libraries.    ......
  • python函数应用
    一、函数的作用封装代码,代码重用二、定义函数def函数名(参数):  代码1   代码2调用函数函数名()......
  • Python面试-数据类型面试题
    1.元祖类面试题tup1=(10)tup2=(10,)tup3=()print(type(tup1),type(tup2),type(tup3))"""输出结果:<class'int'><class'tuple'><class'tuple'>""" ......
  • Python MySQL_基础01
    01.示例:使用Python创建MySQL数据库#1.首先创建一个cursor(),然后将SQL命令作为字符串传递给execute()方法importmysql.connectordataBase=mysql.connector.......
  • python基础-字符串常用方法
    1.字符串capitalize函数  (capitalizevt.资本化,用大写字母书写(或印刷);把…首字母大写;)  将字符串的首字母大写,其它字母小写;  用法:newstr=string.capitalize......