zoukankan      html  css  js  c++  java
  • Python新手练习项目:老王开枪

      最近在看传智播客的Python基础教程,这章确实有点难,难点在于,多个对象,多个类,老王开枪应用当中,老王和敌人属于人这一类,还有枪,枪里有弹夹,弹夹里有子弹,子弹打出去掉多少滴血,层层计算,对于我这样的新手来说算是比较难的了。记录一下:

      此外,说一下,我遇到的2个Python错误:

      第一个:

    object() takes no parameters
    

      出现这个错误是因为,init方法的正确写法是__init__,两边双下划线,如果不写全,就会报错。

      第二个:

    TypeError: 'int' object is not callable
    

      出现这个错误是因为,变量和方法重复使用,简单点说就是重名了,得仔细检查下代码。

     1 #coding=utf-8
     2 class People:
     3     def __init__(self,name):
     4         self.name = name
     5         self.hp = 100
     6         self.gun = None
     7     def __str__(self):
     8         return self.name + "剩余血量为:" + str(self.hp)
     9     def upperBullet(self,clip,bullet):
    10         clip.upper(bullet)
    11     def upperClip(self,gun,clip):
    12         gun.withClip(clip)
    13     def getgun(self,gun):
    14         self.gun = gun
    15     def shot(self,enemy):
    16         self.gun.shooting(enemy)
    17     def lossedhp(self,lethality):
    18         self.hp -= lethality
    19 class Gun:
    20     def __init__(self):
    21         self.clip = None
    22     def __str__(self):
    23         if self.clip:
    24             return "当前没弹夹"
    25         else:
    26             return "当前有弹夹"
    27     def withClip(self,clip):
    28         if not self.clip:
    29             self.clip = clip
    30     def shooting(self,enemy):
    31         bullet = self.clip.lossbullet()
    32         if bullet:
    33             bullet.lossHp(enemy)
    34         else:
    35             ("没子弹了")
    36 class Clip:
    37     def __init__(self,amount):
    38         self.amount = amount
    39         self.clipList = []
    40     def __str__(self):
    41         return "弹夹当前的子弹数量为:" + str(len(self.clipList)) + "/" + str(self.amount)
    42     def upper(self,bullet):
    43         if len(self.clipList) < self.amount:
    44             self.clipList.append(bullet)
    45     def lossbullet(self):
    46         if len(self.clipList) > 0:
    47             bullet = self.clipList[-1]
    48             self.clipList.pop()
    49             return bullet
    50         else:
    51             return None
    52 class Bullet:
    53     def __init__(self,lethality):
    54         self.lethality = lethality
    55     def lossHp(self,enemy):
    56         enemy.lossedhp(self.lethality)
    57 laowang = People("老王")
    58 print(laowang)
    59 clip = Clip(20)
    60 i = 0
    61 while i < 10:
    62     bullet = Bullet(5)
    63     laowang.upperBullet(clip,bullet)
    64     i+=1
    65 print(clip)
    66 gun = Gun()
    67 laowang.upperClip(gun,clip)
    68 print(gun)
    69 enemy = People("敌人")
    70 laowang.getgun(gun)
    71 laowang.shot(enemy)
    72 print(enemy)
    73 laowang.shot(enemy)
    74 print(enemy)
    75 laowang.shot(enemy)
    76 print(enemy)
    77 laowang.shot(enemy)
    78 print(enemy)
    79 laowang.shot(enemy)
    80 print(enemy)
    81 laowang.shot(enemy)
    82 print(enemy)
    83 laowang.shot(enemy)
    84 print(enemy)
    85 laowang.shot(enemy)
    86 print(enemy)
    87 laowang.shot(enemy)
    88 print(enemy)

      

    www.wzxdm.com
  • 相关阅读:
    浅析数据库安全技术
    本站快捷付款方式
    VMware Workstation 官方正式版及激活密钥
    Win10真正好用之处
    我眼中的CentOS 下 安全策略
    美团
    Tomcat connector元素常用配置(最大连接数等)
    9.22面经:
    9.7
    合并两个有序数组为一个新的有序数组
  • 原文地址:https://www.cnblogs.com/huxiaoyi/p/8969649.html
Copyright © 2011-2022 走看看