python初学

作业6

创建函数在 Python 中,使用 def 关键字定义函数,调用函数,使用函数名称后跟括号。
`def my_function():
  print("Hello from a function")

my_function()    #调用函数
`
   Python 是一种面向对象的编程语言,Python 中的几乎所有东西都是对象,拥有属性和方法。类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。
  所有类都有一个名为 __init__() 的函数,它始终在启动类时执行。
  使用 __init__() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作。
  self 参数是对类的当前实例的引用,用于访问属于该类的变量。
  它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数。
class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("Bill", 63)
p1.myfunc()
字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。
thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
print(thisdict)

作业1

增加了
 `self.MP=self.MAX_MP - hit`

造成了多少魔法伤害,就扣多少魔法值。

作业2

在body中增加了DEF防御属性,物理防御和法术防御,物理防御在遭受普通攻击是可以抵挡一半伤害,法术防御在遭受魔法攻击时抵挡一半伤害。

作业3

在body中增加EXP经验值体系,以及等级体系,设定是完成一次战斗增加1经验,升级后普通攻击伤害+1,魔法伤害攻击+1。

作业4

还可以增加装备属性,提高攻击或者防御。然后火魔法对火怪伤害减半,冰魔法对冰怪伤害减半。

作业5


import time
import random
#与学姐的台词
SCRIPT_NPC_SCHOOL_SISTER=['你好!',
                    '你好!',
                    '你是新生吗?',
                    '是的',
                    '想要我教你魔法吗?',
                    '\n1、好的 \
                    \n2、不用了吧,我不和学姐学魔法!\n'
                    ]


#世界里的魔法清单 
MAGIC_BOOKS=[
        ['火魔法',1],
        ['水魔法',2],
        ['土魔法',0.5]
            ]
    

    
    
class Body:  #人物类

    NAME=''   #名字
    HP=0   #血量
    MAX_HP=0   #最大血量
    MP=0   #魔法值
    MAX_MP=0   #最大魔法值
    DEF=0      #防御值
    MAX_DEF=0      #最大防御值
    EXP=0      #经验值
    MAX_EXP=0
    ATTACK=1
    LEVEL=1
    MAGIC_ATTACK=1.3
    
    
    HAS_MAGIC=[]   #会的魔法
    
    
    
    POS_NAME='南昌理工学院南大门'   #地点  
    
    def __init__(self,NAME_='Ice NPC',HP_=3,MP_=3,MAX_HP_=3,MAX_MP_=3,DEF_=3,MAX_DEF_=3,EXP_=0,MAX_EXP_=3,ATTACK_=1,LEVEL_=1,MAGIC_ATTACK_=1.3,HAS_MAGIC_=[],POS_NAME_='南昌理工学院南大门'):
        #初始化 默认值
        
        self.NAME=NAME_
        self.HP=HP_
        self.MP=MP_
        self.DEF=DEF_
        self.EXP=EXP_
        self.MAX_EXP=MAX_EXP_
        self.MAX_HP=MAX_HP_
        self.MAX_MP=MAX_MP_
        self.MAX_DEF=MAX_DEF_
        self.ATTACK=ATTACK_
        self.LEVEL=LEVEL_
        self.MAGIC_ATTACK=MAGIC_ATTACK_
        self.POS_NAME=POS_NAME_
        self.HAS_MAGIC=HAS_MAGIC_
        
    def display_status(self):  #显示人物状态  
        print('\n\r','    状态:'+self.NAME,end = '')
        print('\n  等级:'+str(self.LEVEL),'\n血量:'+'❤'*int(self.HP),'\n  魔法值:'+'⚓'*int(self.MP),'\n  防御值:'+'⭐'*int(self.DEF),'\n  经验值:'+'♥'*int(self.EXP))
        print('地点:'+self.POS_NAME)
        
        if self.HAS_MAGIC == []:
            print('无魔法')
        else:
            self.display_magic()
        
    def display_status_fighting(self):
        
        
        print('\n\r','    状态:'+self.NAME,end = '')
        print('\n  等级:'+str(self.LEVEL),'\n血量:'+'❤'*int(self.HP),'\n  魔法值:'+'⚓'*int(self.MP),'\n  防御值:'+'⭐'*int(self.DEF),'\n  经验值:'+'♥'*int(self.EXP))

    def display_magic(self):  #显示魔法  
        print(self.NAME+'会如下几种魔法:')
        
        print('魔法名 ,消耗点数')
        
        i=0
        
        for iMagic in self.HAS_MAGIC:
        
            print('第',i,'个魔法:',MAGIC_BOOKS[iMagic])
            i=i+1
        
        
    def talk_to(self,NPC_,NPC_SCRIPT_,delay=0.3):
        #按剧本和NPC聊天
        print('在'+self.POS_NAME+'遇到 '+NPC_.NAME)
        
        for i in range(len(NPC_SCRIPT_)):
            if i%2==1:#判断当前说话的人
                TURN=self.NAME
            else:
                TURN=NPC_.NAME
            
            print(TURN+':'+NPC_SCRIPT_[i])
            time.sleep(delay)

    def learn_magic_from(self,NPC_):
        #向NPC学习魔法
        
        
        NPC_.display_magic()        
        CHOOSE=input('是否向'+NPC_.NAME+'学魔法?(输入:1/2/no)')

        if CHOOSE=='1':
            
            print('恭喜'+self.NAME+'学会'+MAGIC_BOOKS[NPC_.HAS_MAGIC[0]][0]+
                  ',每次使用消耗'+str(MAGIC_BOOKS[NPC_.HAS_MAGIC[0]][1])+'MP.')
            self.HAS_MAGIC=self.HAS_MAGIC+[NPC_.HAS_MAGIC[0]]
            self.display_magic()
        elif CHOOSE=='2':
            print('恭喜'+self.NAME+'学会'+MAGIC_BOOKS[NPC_.HAS_MAGIC[1]][0]+
                  ',每次使用消耗'+str(MAGIC_BOOKS[NPC_.HAS_MAGIC[1]][1])+'MP.')
            self.HAS_MAGIC=self.HAS_MAGIC+[NPC_.HAS_MAGIC[1]]
            self.display_magic()
        elif CHOOSE=='no':
            print('由于你的固执,没有学习新的魔法.')
        else:
            print('不明白你说什么.')
            
            
    def attack_one_time(self,NPC_,iChoose_magic_=-1):  #攻击一下NPC
        if iChoose_magic_==-2:
            self.display_status()
        elif iChoose_magic_==-1:
            NPC_.HP=NPC_.HP-self.ATTACK
            print('【',self.NAME+'击剑攻击'+NPC_.NAME,'造成了'+str(self.ATTACK),'点攻击】'+NPC_.NAME,'增加了1经验值')
            self.EXP=self.EXP + 1
        elif iChoose_magic_==0:          #print(iChoose_magic_)
            hit=self.MAGIC_ATTACK*MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]
            self.MP=self.MAX_MP - hit
            self.EXP=self.EXP + 1
            #print('hit:',hit,',',self.MAGIC_ATTACK,',',self.HAS_MAGIC[iChoose_magic_])
            NPC_.HP=NPC_.HP-hit   #魔法伤害=魔法消耗*魔法攻击力
            NPC_.MP=NPC_.MP-self.HAS_MAGIC[iChoose_magic_]
            print('【',self.NAME+'用魔法'+MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][0]+',攻击了'+NPC_.NAME+',',
                  '造成了'+str(hit)+'点攻击'+"消耗了"+str(hit)+'点魔法值!'+NPC_.NAME,'增加了1经验值''】')
        if NPC_.HP<=0:
            return 1
        else:
            return 0
            
    def fight_with(self,NPC_):
        #挑战NPC
        
        print('【',self.NAME+'开始和'+NPC_.NAME+'战斗! !','】')
        
        MAX_ROUND=100
        IS_DEAD=0

        for ROUND in range(MAX_ROUND):

            
            if(ROUND%2==0):
                self.display_status_fighting()
                self.display_magic()
                NPC_.display_status_fighting()
                
                
                choose_magic=int(input('-----使用魔法/普通攻击(-1普通攻击,0魔法攻击,查看状态-2):'))
                IS_DEAD=self.attack_one_time(NPC_,choose_magic)
                IS_DEAD=IS_DEAD*2   #用乘法,让我们不改变0,非0状态的情况下,标记是谁赢了
            else:
                choose_magic=random.choice(NPC_.HAS_MAGIC+[-1])

                IS_DEAD=NPC_.attack_one_time(self,choose_magic)
                IS_DEAD=IS_DEAD*4   #用乘法,让我们不改变0,非0状态的情况下,标记是谁赢了
                
            if IS_DEAD>=1:
                print('【战斗结束】')
                if IS_DEAD==2:
                    print('【',self.NAME+'战胜了'+NPC_.NAME,'】')
                elif IS_DEAD==4:
                    print('【',NPC_.NAME+'战胜了'+self.NAME,'】')
                return IS_DEAD
            
            else:
                if ROUND%2==1:
                    
                    print('【第'+str(1+int(ROUND/2))+'回合结束!】\n===================================')
        


class World: #世界类
    
    
    #剧本:遇到学姐

    
    #玩家初始化
    PLAYER=Body()
    
    #NPC初始化(先创造三个NPC,学姐,冰怪,火怪
    NPCs={
        'school elder sister':Body(NAME_='school elder sister',HAS_MAGIC_=[0,1]),
          'ice monster':Body(NAME_='ice monster',HAS_MAGIC_=[2]),
          'fire monster':Body(NAME_='fire monster',HAS_MAGIC_=[0])
          }


    #显示一句话:两种方式,直接显示0,以及逐步显示1
    def display_a_line(way,script='hello'):


        for i in range(len(script)):
            time.sleep(0.3)
            print('\r',script[0:i],end = '')
                
                
                
    #初始化世界:            
    def init(self):
        player_name=input('请输入玩家名:')

        self.PLAYER.NAME=player_name
        
        

        print('....南理文字RPG0.2的世界开始了.....')
        
        welcome_script='Hi,'+self.PLAYER.NAME+',欢迎加入南理文字RPG0.2 '
        #self.display_a_line(script=welcome_script)
        print(welcome_script)
        
        self.PLAYER.display_status()
        
        self.PLAYER.talk_to(self.NPCs['school elder sister'],SCRIPT_NPC_SCHOOL_SISTER)   #通过NPCs集合,调取'school elder sister'NPC
        
        self.PLAYER.learn_magic_from(self.NPCs['school elder sister'])
        
        

    def run(self):
        
        self.PLAYER.fight_with(self.NPCs['fire monster'])
        

    
magic_world=World()

magic_world.init()
    
magic_world.run()


请输入玩家名:55
…南理文字RPG0.2的世界开始了…
Hi,55,欢迎加入南理文字RPG0.2

 状态:55

等级:1
血量:❤❤❤
魔法值:⚓⚓⚓
防御值:⭐⭐⭐
经验值:
地点:南昌理工学院南大门
无魔法
在南昌理工学院南大门遇到 school elder sister
school elder sister:你好!
55:你好!
school elder sister:你是新生吗?
55:是的
school elder sister:想要我教你魔法吗?
55:
1、好的
2、不用了吧,我不和学姐学魔法!

school elder sister会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: [‘火魔法’, 1]
第 1 个魔法: [‘水魔法’, 2]
是否向school elder sister学魔法?(输入:1/2/no)2
恭喜55学会水魔法,每次使用消耗2MP.
55会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: [‘水魔法’, 2]
【 55开始和fire monster战斗! ! 】

 状态:55

等级:1
血量:❤❤❤
魔法值:⚓⚓⚓
防御值:⭐⭐⭐
经验值:
55会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: [‘水魔法’, 2]

 状态:fire monster

等级:1
血量:❤❤❤
魔法值:⚓⚓⚓
防御值:⭐⭐⭐
经验值:
-----使用魔法/普通攻击(-1普通攻击,0魔法攻击,查看状态-2):-1
【 55击剑攻击fire monster 造成了1 点攻击】fire monster 增加了1经验值
【 fire monster用魔法火魔法,攻击了55, 造成了1.3点攻击消耗了1.3点魔法值!55 增加了1经验值】
【第1回合结束!】

 状态:55

等级:1
血量:❤
魔法值:⚓⚓⚓
防御值:⭐⭐⭐
经验值:♥
55会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: [‘水魔法’, 2]

 状态:fire monster

等级:1
血量:❤❤
魔法值:⚓
防御值:⭐⭐⭐
经验值:♥
-----使用魔法/普通攻击(-1普通攻击,0魔法攻击,查看状态-2):0
【 55用魔法水魔法,攻击了fire monster, 造成了2.6点攻击消耗了2.6点魔法值!fire monster 增加了1经验值】
【战斗结束】
【 55战胜了fire monster 】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值