python射击游戏

2021-06-21 14:22:24 浏览数 (1)

一.简介

通过函数进行操作,实际可以扩展为图形操作的

二.代码

  1. #!/usr/bin/python3
  2. #人类模板
  3. class People():
  4. def __init__(self, name, age, bullet):
  5. self.name = name
  6. self.age = age
  7. self.gnu = None #枪械为空
  8. self.bullet = bullet #发放多少子弹
  9. def display_info(self):
  10. print("动作--查看信息")
  11. print("姓名:" self.name)
  12. print("年龄:" str(self.age))
  13. if self.gnu: #判断一下是否持有枪械
  14. print("枪械:" self.gnu.name)
  15. else:
  16. print("枪械:无")
  17. print("剩余子弹:" str(self.bullet))
  18. print("")
  19. def take_gnu(self, gnu_name): #拿枪
  20. print("动作--拿枪")
  21. if self.gnu:
  22. print("手里已经有" self.gnu.name)
  23. else:
  24. self.gnu = Gnu(gnu_name) #这里没枪械,则将枪的对象,赋值给gnu这个变量
  25. print("获得一把" self.gnu.name)
  26. print("")
  27. def zhuang(self): #装弹
  28. print("动作--装弹")
  29. hao = self.gnu.inst_bullet(self.bullet) #把当前子弹数告诉他
  30. if hao == 3:
  31. print("子弹已经是满的,无需装载")
  32. elif hao == 9:
  33. print("剩余子弹数不够装满")
  34. else:
  35. self.bullet = self.bullet - hao #这里则返回消耗的子弹数,用于扣除当前子弹数
  36. print("已经装载子弹:" str(hao))
  37. print("")
  38. def fashe(self): #发射
  39. print("动作--发射子弹")
  40. self.gnu.emission_bullet()
  41. #装子弹,打枪
  42. class Gnu():
  43. def __init__(self, name):
  44. self.name = name
  45. self.bullet = 0
  46. def inst_bullet(self, last_bullet): #装弹
  47. if self.bullet == 20: #如果满弹夹,则无法装弹,返回3,在人的类那里判断
  48. return 3
  49. else:
  50. linshi_bullet = 20 - self.bullet
  51. if last_bullet > linshi_bullet: #剩余子弹是否小于该补充的子弹
  52. self.bullet = 20
  53. return linshi_bullet
  54. else:
  55. return 9
  56. def emission_bullet(self): #发射
  57. if self.bullet > 0:
  58. self.bullet = self.bullet - 1
  59. print("发射了一颗子弹")
  60. else:
  61. print("没有子弹了")
  62. print("")
  63. #初始化和查看信息
  64. ren = People("张三", 15, 200)
  65. ren.display_info()
  66. #拿枪
  67. ren.take_gnu("ak47")
  68. #发射子弹和装弹,主要是测试没有子弹是否可以发射
  69. ren.fashe()
  70. ren.zhuang()
  71. #发射2发
  72. ren.fashe()
  73. ren.fashe()
  74. #装弹2次,测试是否可以重复装弹
  75. ren.zhuang()
  76. ren.zhuang()
  77. #显示信息
  78. ren.display_info()

0 人点赞